Hi Roger, On 11/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://lore.kernel.org/all/ZyVfcUuPq56R2m1Y@xxxxxxxxxx > Fixes: 705e3ce37bcc ("usb: dwc3: core: Fix system suspend on TI AM62 platforms") > Signed-off-by: Roger Quadros <rogerq@xxxxxxxxxx> I verified the patch works on my Pixel 6 device with runtime PM enabled. Thanks for the fix! Feel free to add Tested-by: Will McVicker <willmcvicker@xxxxxxxxxx> Thanks, Will > --- > 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> >