Message ID | 1633946518-13906-1-git-send-email-sanm@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | usb: dwc: host: add xhci_plat_priv quirk XHCI_SKIP_PHY_INIT | expand |
On Mon, Oct 11, 2021 at 03:31:57PM +0530, Sandeep Maheswaram wrote: > dwc3 manages PHY by own DRD driver, so skip the management by > HCD core. > During runtime suspend phy was not getting suspend because > runtime_usage value is 2. > > Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org> > --- > drivers/usb/dwc3/host.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c > index f29a264..0921f05 100644 > --- a/drivers/usb/dwc3/host.c > +++ b/drivers/usb/dwc3/host.c > @@ -11,6 +11,11 @@ > #include <linux/platform_device.h> > > #include "core.h" > +#include "../host/xhci-plat.h" Why are you tying the dwc3 driver to the xhci driver? > + > +static const struct xhci_plat_priv xhci_plat_dwc3_xhci = { > + .quirks = XHCI_SKIP_PHY_INIT, If these quirks are now "global", they should go into a include/linux/usb/ .h file, right? thanks, greg k-h
Hi, On 10/12/2021 1:02 PM, Greg Kroah-Hartman wrote: > On Mon, Oct 11, 2021 at 03:31:57PM +0530, Sandeep Maheswaram wrote: >> dwc3 manages PHY by own DRD driver, so skip the management by >> HCD core. >> During runtime suspend phy was not getting suspend because >> runtime_usage value is 2. >> >> Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org> >> --- >> drivers/usb/dwc3/host.c | 12 ++++++++++++ >> 1 file changed, 12 insertions(+) >> >> diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c >> index f29a264..0921f05 100644 >> --- a/drivers/usb/dwc3/host.c >> +++ b/drivers/usb/dwc3/host.c >> @@ -11,6 +11,11 @@ >> #include <linux/platform_device.h> >> >> #include "core.h" >> +#include "../host/xhci-plat.h" > Why are you tying the dwc3 driver to the xhci driver? > Can we add a property usb-skip-phy-init in drivers/usb/dwc3/host.c props[prop_idx++] = PROPERTY_ENTRY_BOOL("usb-skip-phy-init"); and set the quirk like this in xhci-plat.c if (device_property_read_bool(tmpdev, "usb-skip-phy-init")) xhci->quirks |= XHCI_SKIP_PHY_INIT; as below if (device_property_read_bool(tmpdev, "usb2-lpm-disable")) xhci->quirks |= XHCI_HW_LPM_DISABLE; if (device_property_read_bool(tmpdev, "usb3-lpm-capable")) xhci->quirks |= XHCI_LPM_SUPPORT; >> + >> +static const struct xhci_plat_priv xhci_plat_dwc3_xhci = { >> + .quirks = XHCI_SKIP_PHY_INIT, > If these quirks are now "global", they should go into a > include/linux/usb/ .h file, right? > > thanks, > > greg k-h
diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c index f29a264..0921f05 100644 --- a/drivers/usb/dwc3/host.c +++ b/drivers/usb/dwc3/host.c @@ -11,6 +11,11 @@ #include <linux/platform_device.h> #include "core.h" +#include "../host/xhci-plat.h" + +static const struct xhci_plat_priv xhci_plat_dwc3_xhci = { + .quirks = XHCI_SKIP_PHY_INIT, +}; static int dwc3_host_get_irq(struct dwc3 *dwc) { @@ -115,6 +120,13 @@ int dwc3_host_init(struct dwc3 *dwc) } } + ret = platform_device_add_data(xhci, &xhci_plat_dwc3_xhci, + sizeof(struct xhci_plat_priv)); + if (ret) { + dev_err(dwc->dev, "failed to add data to xHCI\n"); + goto err; + } + ret = platform_device_add(xhci); if (ret) { dev_err(dwc->dev, "failed to register xHCI device\n");
dwc3 manages PHY by own DRD driver, so skip the management by HCD core. During runtime suspend phy was not getting suspend because runtime_usage value is 2. Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org> --- drivers/usb/dwc3/host.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)