diff mbox series

[v4] usb: host: xhci-plat: Set XHCI_SKIP_PHY_INIT quirk for DWC3 controller

Message ID 1639724997-21809-1-git-send-email-quic_c_sanm@quicinc.com
State New
Headers show
Series [v4] usb: host: xhci-plat: Set XHCI_SKIP_PHY_INIT quirk for DWC3 controller | expand

Commit Message

Sandeep Maheswaram Dec. 17, 2021, 7:09 a.m. UTC
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 <quic_c_sanm@quicinc.com>
---
v4:
Changed pdev->dev.parent->of_node to sysdev->of_node

 drivers/usb/host/xhci-plat.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

gregkh@linuxfoundation.org Dec. 17, 2021, 9:55 a.m. UTC | #1
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 <quic_c_sanm@quicinc.com>
> ---
> 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
diff mbox series

Patch

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);