Set XHCI_SKIP_PHY_INIT quirk to avoid phy initialization twice.
Runtime suspend of phy drivers was failing from DWC3 driver as runtime
usage value is 2 because the phy is initialized from DWC3 and HCD core.
DWC3 manages phy in their core drivers. Set this quirk to avoid phy
initialization in HCD core.
Signed-off-by: Sandeep Maheswaram <[email protected]>
---
v4:
Changed pdev->dev.parent->of_node to sysdev->of_node
drivers/usb/host/xhci-plat.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index c1edcc9..1a57573 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -327,6 +327,9 @@ static int xhci_plat_probe(struct platform_device *pdev)
&xhci->imod_interval);
}
+ if (of_device_is_compatible(sysdev->of_node, "snps,dwc3"))
+ xhci->quirks |= XHCI_SKIP_PHY_INIT;
+
hcd->usb_phy = devm_usb_get_phy_by_phandle(sysdev, "usb-phy", 0);
if (IS_ERR(hcd->usb_phy)) {
ret = PTR_ERR(hcd->usb_phy);
--
2.7.4
On Fri, Dec 17, 2021 at 12:39:57PM +0530, Sandeep Maheswaram wrote:
> Set XHCI_SKIP_PHY_INIT quirk to avoid phy initialization twice.
> Runtime suspend of phy drivers was failing from DWC3 driver as runtime
> usage value is 2 because the phy is initialized from DWC3 and HCD core.
> DWC3 manages phy in their core drivers. Set this quirk to avoid phy
> initialization in HCD core.
>
> Signed-off-by: Sandeep Maheswaram <[email protected]>
> ---
> v4:
> Changed pdev->dev.parent->of_node to sysdev->of_node
>
> drivers/usb/host/xhci-plat.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
> index c1edcc9..1a57573 100644
> --- a/drivers/usb/host/xhci-plat.c
> +++ b/drivers/usb/host/xhci-plat.c
> @@ -327,6 +327,9 @@ static int xhci_plat_probe(struct platform_device *pdev)
> &xhci->imod_interval);
> }
>
> + if (of_device_is_compatible(sysdev->of_node, "snps,dwc3"))
> + xhci->quirks |= XHCI_SKIP_PHY_INIT;
Please put a big comment in here as to why this is being set, that
contains some of the same information you put in your changelog.
Otherwise just reading this code, it is not obvious why this quirk is
being set at all.
thanks,
greg k-h