On Thu, Feb 27, 2025 at 06:24:17AM +0200, Dmitry Baryshkov wrote: > On Wed, Feb 26, 2025 at 04:17:50PM -0800, Bjorn Andersson wrote: > > When the core is integrated with glue, it's reasonable to assume that > > the glue driver will have to touch the IP before/after the core takes > > the hardware out and into reset. As such the glue must own these > > resources and be allowed to turn them on/off outside the core's > > handling. > > > > Allow the platform or glue layer to indicate if the core logic for > > clocks and resets should be skipped to deal with this. > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxxxxxxxx> > > --- > > drivers/usb/dwc3/core.c | 19 +++++++++++-------- > > drivers/usb/dwc3/glue.h | 1 + > > 2 files changed, 12 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > > index d9f0a6782d36..aecdde8dc999 100644 > > --- a/drivers/usb/dwc3/core.c > > +++ b/drivers/usb/dwc3/core.c > > @@ -2328,6 +2330,7 @@ static int dwc3_probe(struct platform_device *pdev) > > > > probe_data.dwc = dwc; > > probe_data.res = res; > > + probe_data.ignore_clocks_and_resets = false; > > Isn't it a default value? > I like the false because it's explicit, but I have no strong attachment to it. That said, it's not the default value, because probe_data isn't zero-initialized. That would however make sense to do, in order to avoid surprises in the future when probe_data grows. Regards, Bjorn > > > > return dwc3_core_probe(&probe_data); > > } > > diff --git a/drivers/usb/dwc3/glue.h b/drivers/usb/dwc3/glue.h > > index e73cfc466012..1ddb451bdbd0 100644 > > --- a/drivers/usb/dwc3/glue.h > > +++ b/drivers/usb/dwc3/glue.h > > @@ -17,6 +17,7 @@ > > struct dwc3_probe_data { > > struct dwc3 *dwc; > > struct resource *res; > > + bool ignore_clocks_and_resets; > > }; > > > > int dwc3_core_probe(const struct dwc3_probe_data *data); > > > > -- > > 2.45.2 > > > > -- > With best wishes > Dmitry