On Wed, Feb 16, 2022 at 04:49:32PM +0800, Jun Li wrote: > Pavan Kondeti <quic_pkondeti@xxxxxxxxxxx> 于2022年2月16日周三 16:00写道: > > > > On Wed, Feb 16, 2022 at 03:16:40PM +0800, Jun Li wrote: > > > Sandeep Maheswaram <quic_c_sanm@xxxxxxxxxxx> 于2022年2月16日周三 14:58写道: > > > > > > > > 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 <quic_c_sanm@xxxxxxxxxxx> > > > > --- > > > > drivers/usb/dwc3/host.c | 15 +++++++++++++++ > > > > 1 file changed, 15 insertions(+) > > > > > > > > diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c > > > > index eda8719..4a035a8 100644 > > > > --- a/drivers/usb/dwc3/host.c > > > > +++ b/drivers/usb/dwc3/host.c > > > > @@ -13,6 +13,14 @@ > > > > #include <linux/platform_device.h> > > > > > > > > #include "core.h" > > > > +#include <linux/usb/hcd.h> > > > > +#include <linux/usb/xhci-plat.h> > > > > +#include <linux/usb/xhci-quirks.h> > > > > + > > > > + > > > > +static const struct xhci_plat_priv xhci_plat_dwc3_xhci = { > > > > + .quirks = XHCI_SKIP_PHY_INIT, > > > > +}; > > > > > > It's better to create this xhci_plat_priv by each dwc3 glue layer, > > > with that, we can use this priv to pass other flags and possibly > > > override APIs by each glue driver which may not apply to all dwc3 > > > platforms. > > > > > > > Do you see a need for any glue driver to know about this xHC platform data? > > Yes. I have some xhci quirks which are specifix to NXP iMX platforms. > > > AFAICT, glue driver has no direction connection with the dwc3 core. All > > the required data is coming from dT on ARM based boards. Adding a private > > interface between dwc3 core and glue for passing xhci platform data seems > > to be overkill. If there is a pressing need, why not? > > And looking at xhci_plat_priv members > > -struct xhci_plat_priv { > - const char *firmware_name; > - unsigned long long quirks; > - int (*plat_setup)(struct usb_hcd *); > - void (*plat_start)(struct usb_hcd *); > - int (*init_quirk)(struct usb_hcd *); > - int (*suspend_quirk)(struct usb_hcd *); > - int (*resume_quirk)(struct usb_hcd *); > -}; > > Are we going to share the same all those quirks and APIs > implementation across all dwc3 platforms? > Currently Yes. Thats why I am asking if there is a pressing need to make this more complex than it needs to be.. Thanks, Pavan