Re: [PATCH v3] usb: host: xhci-plat: Set XHCI_SKIP_PHY_INIT quirk for DWC3 controller

From: Sandeep Maheswaram
Date: Mon Dec 13 2021 - 23:48:00 EST



On 12/2/2021 8:47 AM, Stephen Boyd wrote:
Quoting Sandeep Maheswaram (2021-11-30 22:15:38)
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 core and HCD core.
DWC3 manages phy in their core drivers.
This looks wrapped weirdly.

Set this quirk to avoid phy initialization in HCD core.

Signed-off-by: Sandeep Maheswaram <quic_c_sanm@xxxxxxxxxxx>
Any Fixes tag?
Not sure about the commit id to be used here.

---
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..9bbd939 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(pdev->dev.parent->of_node, "snps,dwc3"))
Are we sure that pdev->dev.parent isn't NULL here?

+    if (of_device_is_compatible(to_of_node(sysdev->fwnode), "snps,dwc3"))

Will this be ok ?


+ 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)) {