Message ID | 20230809212911.18903-1-luke.lu@libre.computer (mailing list archive) |
---|---|
State | Accepted |
Commit | 1fa206bb764f37d2ab4bf671e483153ef0659b34 |
Headers | show |
Series | [v2] usb: dwc3: meson-g12a: do post init to fix broken usb after resumption | expand |
On 09/08/2023 23:29, Luke Lu wrote: > Device connected to usb otg port of GXL-based boards can not be > recognised after resumption, doesn't recover even if disconnect and > reconnect the device. dmesg shows it disconnects during resumption. > > [ 41.492911] usb 1-2: USB disconnect, device number 3 > [ 41.499346] usb 1-2: unregistering device > [ 41.511939] usb 1-2: unregistering interface 1-2:1.0 > > Calling usb_post_init() will fix this issue, and it's tested and > verified on libretech's aml-s905x-cc board. > > Cc: stable@vger.kernel.org # v5.8+ > Fixes: c99993376f72 ("usb: dwc3: Add Amlogic G12A DWC3 glue") > Signed-off-by: Luke Lu <luke.lu@libre.computer> > > --- > Note here, the commmit of Fixes tag is the first patch which bring > suspend/resume function, so let's use it as the fix tag. > > As commit 5b0ba0caaf3a: (usb: dwc3: meson-g12a: refactor usb init)" > introduced the use_post_init() function, and this patch will explicitly > depend on it, so let's set kernel version higher or equal to v5.8. > > Changes since v1: > - add Fixes tag and Cc stable tree > --- > drivers/usb/dwc3/dwc3-meson-g12a.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/usb/dwc3/dwc3-meson-g12a.c b/drivers/usb/dwc3/dwc3-meson-g12a.c > index e99c7489dba0..2c07c038b584 100644 > --- a/drivers/usb/dwc3/dwc3-meson-g12a.c > +++ b/drivers/usb/dwc3/dwc3-meson-g12a.c > @@ -926,6 +926,12 @@ static int __maybe_unused dwc3_meson_g12a_resume(struct device *dev) > return ret; > } > > + if (priv->drvdata->usb_post_init) { > + ret = priv->drvdata->usb_post_init(priv); > + if (ret) > + return ret; > + } > + > return 0; > } > Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
diff --git a/drivers/usb/dwc3/dwc3-meson-g12a.c b/drivers/usb/dwc3/dwc3-meson-g12a.c index e99c7489dba0..2c07c038b584 100644 --- a/drivers/usb/dwc3/dwc3-meson-g12a.c +++ b/drivers/usb/dwc3/dwc3-meson-g12a.c @@ -926,6 +926,12 @@ static int __maybe_unused dwc3_meson_g12a_resume(struct device *dev) return ret; } + if (priv->drvdata->usb_post_init) { + ret = priv->drvdata->usb_post_init(priv); + if (ret) + return ret; + } + return 0; }
Device connected to usb otg port of GXL-based boards can not be recognised after resumption, doesn't recover even if disconnect and reconnect the device. dmesg shows it disconnects during resumption. [ 41.492911] usb 1-2: USB disconnect, device number 3 [ 41.499346] usb 1-2: unregistering device [ 41.511939] usb 1-2: unregistering interface 1-2:1.0 Calling usb_post_init() will fix this issue, and it's tested and verified on libretech's aml-s905x-cc board. Cc: stable@vger.kernel.org # v5.8+ Fixes: c99993376f72 ("usb: dwc3: Add Amlogic G12A DWC3 glue") Signed-off-by: Luke Lu <luke.lu@libre.computer> --- Note here, the commmit of Fixes tag is the first patch which bring suspend/resume function, so let's use it as the fix tag. As commit 5b0ba0caaf3a: (usb: dwc3: meson-g12a: refactor usb init)" introduced the use_post_init() function, and this patch will explicitly depend on it, so let's set kernel version higher or equal to v5.8. Changes since v1: - add Fixes tag and Cc stable tree --- drivers/usb/dwc3/dwc3-meson-g12a.c | 6 ++++++ 1 file changed, 6 insertions(+)