Re: [PATCH] usb: musb: Check devctl status again for a spurious session request
From: Andreas Kemnade <andreas@kemnade.info>
Date: 2021-06-04 14:45:13
Also in:
linux-omap
From: Andreas Kemnade <andreas@kemnade.info>
Date: 2021-06-04 14:45:13
Also in:
linux-omap
Hi Tony, On Fri, 4 Jun 2021 12:39:54 +0300 Tony Lindgren [off-list ref] wrote: [...]
Does the following patch fix things for you or does something else break again? :)
It fixes things mostly. If I quickly enter suspend after usb disconnect, current is still high in suspend (limit approx 2-3 seconds). But I think this is the right track and these two patches are clearly an improvement if applied together. Regards, Andreas
Regards, Tony 8< --------------diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c --- a/drivers/usb/musb/omap2430.c +++ b/drivers/usb/musb/omap2430.c@@ -332,6 +332,7 @@ static int omap2430_probe(struct platform_device *pdev) glue->musb = musb; glue->status = MUSB_UNKNOWN; glue->control_otghs = ERR_PTR(-ENODEV); + glue->is_runtime_suspended = 1; pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); if (!pdata)@@ -453,6 +454,9 @@ static int omap2430_runtime_suspend(struct device *dev) if (!musb) return 0; + if (glue->is_runtime_suspended) + return 0; + musb->context.otg_interfsel = musb_readl(musb->mregs, OTG_INTERFSEL);@@ -474,6 +478,9 @@ static int omap2430_runtime_resume(struct device *dev) if (!musb) return 0; + if (!glue->is_runtime_suspended) + return 0; + phy_init(musb->phy); phy_power_on(musb->phy);