Hi Roger, On Mon, Nov 04, 2024, Roger Quadros wrote: > If the device was already runtime suspended then during system suspend > we cannot access the device registers else it will crash. > > Also we cannot access any registers after dwc3_core_exit() on some > platforms so move the dwc3_enable_susphy() call to the top. > > Cc: stable@xxxxxxxxxxxxxxx # v5.15+ > Reported-by: William McVicker <willmcvicker@xxxxxxxxxx> > Closes: https://urldefense.com/v3/__https://lore.kernel.org/all/ZyVfcUuPq56R2m1Y@google.com__;!!A4F2R9G_pg!a2ySn942v8-FZqAgru6elfn0Auxnl1JyBveK9z2iAeLZpEpVajfl3pbfl5K2hVlGx5YqfRazbhqF8ZJ2t3f_$ > Fixes: 705e3ce37bcc ("usb: dwc3: core: Fix system suspend on TI AM62 platforms") > Signed-off-by: Roger Quadros <rogerq@xxxxxxxxxx> > --- > drivers/usb/dwc3/core.c | 25 ++++++++++++------------- > 1 file changed, 12 insertions(+), 13 deletions(-) > > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > index 427e5660f87c..98114c2827c0 100644 > --- a/drivers/usb/dwc3/core.c > +++ b/drivers/usb/dwc3/core.c > @@ -2342,10 +2342,18 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) > u32 reg; > int i; > > - dwc->susphy_state = (dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)) & > - DWC3_GUSB2PHYCFG_SUSPHY) || > - (dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(0)) & > - DWC3_GUSB3PIPECTL_SUSPHY); > + if (!pm_runtime_suspended(dwc->dev) && !PMSG_IS_AUTO(msg)) { > + dwc->susphy_state = (dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)) & > + DWC3_GUSB2PHYCFG_SUSPHY) || > + (dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(0)) & > + DWC3_GUSB3PIPECTL_SUSPHY); > + /* > + * TI AM62 platform requires SUSPHY to be > + * enabled for system suspend to work. > + */ > + if (!dwc->susphy_state) > + dwc3_enable_susphy(dwc, true); > + } > > switch (dwc->current_dr_role) { > case DWC3_GCTL_PRTCAP_DEVICE: > @@ -2398,15 +2406,6 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) > break; > } > > - if (!PMSG_IS_AUTO(msg)) { > - /* > - * TI AM62 platform requires SUSPHY to be > - * enabled for system suspend to work. > - */ > - if (!dwc->susphy_state) > - dwc3_enable_susphy(dwc, true); > - } > - > return 0; > } > > > --- > base-commit: 42f7652d3eb527d03665b09edac47f85fb600924 > change-id: 20241102-am62-lpm-usb-fix-347dd86135c1 > > Best regards, > -- > Roger Quadros <rogerq@xxxxxxxxxx> > Thanks for the catch and quick turnaround! Acked-by: Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx> Thanks, Thinh