diff mbox series

[OpenWrt-Devel,RFC] ramips: remove patches for USB-dwc2

Message ID 20200410223709.1974-1-dobrovolskiy.alexey@gmail.com
State Accepted
Delegated to: Petr Štetiar
Headers show
Series [OpenWrt-Devel,RFC] ramips: remove patches for USB-dwc2 | expand

Commit Message

Alexey Dobrovolsky April 10, 2020, 10:37 p.m. UTC
In FS#2738 we can see that patch first introduced in
e8ebcff ("ramips: add a explicit reset to dwc2")
breaks USB functionality since 18.06. Thus, this patch should be removed.

Removed:
- 0032-USB-dwc2-add-device_reset.patch

Fixes: FS#2738
Fixes: FS#2964

Signed-off-by: Alexey Dobrovolsky <dobrovolskiy.alexey@gmail.com>
---

Notes:
    I can’t assess whether the root cause of the e8ebcff patch has been fixed
    in upstream or the patch needs to be rewritten. From the description
    of the bugs, it is only clear that in the latest OpenWrt versions this
    patch does not work correctly.
    
    I built 18.06.2 and master at 91c61aae200ecf98e332482d395beda819d6a4fa
    for ZyXEL Keenetic with 0032-USB-dwc2-add-device_reset.patch removed
    as described in FS#2738 and USB works with a USB flash drive (FS#2964).

 .../0032-USB-dwc2-add-device_reset.patch      | 29 -------------------
 .../0032-USB-dwc2-add-device_reset.patch      | 29 -------------------
 2 files changed, 58 deletions(-)
 delete mode 100644 target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch
 delete mode 100644 target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch

Comments

Alexey Dobrovolsky April 21, 2020, 11:20 p.m. UTC | #1
Hi,
USB does not work in master at 35f208da3c built with testing kernel
5.4 with or without 0032-USB-dwc2-add-device_reset.patch.
(ramips, ZyXEL Keenetic)
In boot log:
[    6.888293] usbcore: registered new interface driver usbfs
[    6.899641] usbcore: registered new interface driver hub
[    6.910630] usbcore: registered new device driver usb
[    6.930904] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    6.955086] SCSI subsystem initialized
[    6.970394] ehci-fsl: Freescale EHCI Host controller driver
[    6.985235] ehci-platform: EHCI generic platform driver
[    7.006666] dwc2 101c0000.otg: Configuration mismatch. dr_mode forced to host
[    7.033189] dwc2 101c0000.otg: dwc2_core_reset: HANG! AHB Idle
timeout GRSTCTL GRSTCTL_AHBIDLE
[    7.050637] dwc2: probe of 101c0000.otg failed with error -16
[    7.074662] usbcore: registered new interface driver usb-storage

Full log attached to FS#2964

Best regards,
Alexey

сб, 11 апр. 2020 г. в 01:37, Alexey Dobrovolsky <dobrovolskiy.alexey@gmail.com>:
>
> In FS#2738 we can see that patch first introduced in
> e8ebcff ("ramips: add a explicit reset to dwc2")
> breaks USB functionality since 18.06. Thus, this patch should be removed.
>
> Removed:
> - 0032-USB-dwc2-add-device_reset.patch
>
> Fixes: FS#2738
> Fixes: FS#2964
>
> Signed-off-by: Alexey Dobrovolsky <dobrovolskiy.alexey@gmail.com>
> ---
>
> Notes:
>     I can’t assess whether the root cause of the e8ebcff patch has been fixed
>     in upstream or the patch needs to be rewritten. From the description
>     of the bugs, it is only clear that in the latest OpenWrt versions this
>     patch does not work correctly.
>
>     I built 18.06.2 and master at 91c61aae200ecf98e332482d395beda819d6a4fa
>     for ZyXEL Keenetic with 0032-USB-dwc2-add-device_reset.patch removed
>     as described in FS#2738 and USB works with a USB flash drive (FS#2964).
>
>  .../0032-USB-dwc2-add-device_reset.patch      | 29 -------------------
>  .../0032-USB-dwc2-add-device_reset.patch      | 29 -------------------
>  2 files changed, 58 deletions(-)
>  delete mode 100644 target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch
>  delete mode 100644 target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch
>
> diff --git a/target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch b/target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch
> deleted file mode 100644
> index c04e2db661..0000000000
> --- a/target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -From a758e0870c6d1e4b0272f6e7f9efa9face5534bb Mon Sep 17 00:00:00 2001
> -From: John Crispin <blogic@openwrt.org>
> -Date: Sun, 27 Jul 2014 09:49:07 +0100
> -Subject: [PATCH 32/53] USB: dwc2: add device_reset()
> -
> -Signed-off-by: John Crispin <blogic@openwrt.org>
> ----
> - drivers/usb/dwc2/hcd.c |    3 +++
> - 1 file changed, 3 insertions(+)
> -
> ---- a/drivers/usb/dwc2/hcd.c
> -+++ b/drivers/usb/dwc2/hcd.c
> -@@ -48,6 +48,7 @@
> - #include <linux/io.h>
> - #include <linux/slab.h>
> - #include <linux/usb.h>
> -+#include <linux/reset.h>
> -
> - #include <linux/usb/hcd.h>
> - #include <linux/usb/ch11.h>
> -@@ -5215,6 +5216,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
> -
> -       retval = -ENOMEM;
> -
> -+      device_reset(hsotg->dev);
> -+
> -       hcfg = dwc2_readl(hsotg->regs + HCFG);
> -       dev_dbg(hsotg->dev, "hcfg=%08x\n", hcfg);
> -
> diff --git a/target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch b/target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch
> deleted file mode 100644
> index ec837cda93..0000000000
> --- a/target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -From a758e0870c6d1e4b0272f6e7f9efa9face5534bb Mon Sep 17 00:00:00 2001
> -From: John Crispin <blogic@openwrt.org>
> -Date: Sun, 27 Jul 2014 09:49:07 +0100
> -Subject: [PATCH 32/53] USB: dwc2: add device_reset()
> -
> -Signed-off-by: John Crispin <blogic@openwrt.org>
> ----
> - drivers/usb/dwc2/hcd.c |    3 +++
> - 1 file changed, 3 insertions(+)
> -
> ---- a/drivers/usb/dwc2/hcd.c
> -+++ b/drivers/usb/dwc2/hcd.c
> -@@ -49,6 +49,7 @@
> - #include <linux/io.h>
> - #include <linux/slab.h>
> - #include <linux/usb.h>
> -+#include <linux/reset.h>
> -
> - #include <linux/usb/hcd.h>
> - #include <linux/usb/ch11.h>
> -@@ -5023,6 +5024,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
> -
> -       retval = -ENOMEM;
> -
> -+      device_reset(hsotg->dev);
> -+
> -       hcfg = dwc2_readl(hsotg, HCFG);
> -       dev_dbg(hsotg->dev, "hcfg=%08x\n", hcfg);
> -
> --
> 2.17.1
>
Martin Blumenstingl April 22, 2020, 4:47 p.m. UTC | #2
The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
Hi,

On Wed, Apr 22, 2020 at 1:21 AM Alexey Dobrovolskiy
<dobrovolskiy.alexey@gmail.com> wrote:
>
> Hi,
> USB does not work in master at 35f208da3c built with testing kernel
> 5.4 with or without 0032-USB-dwc2-add-device_reset.patch.
> (ramips, ZyXEL Keenetic)
> In boot log:
> [    6.888293] usbcore: registered new interface driver usbfs
> [    6.899641] usbcore: registered new interface driver hub
> [    6.910630] usbcore: registered new device driver usb
> [    6.930904] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
> [    6.955086] SCSI subsystem initialized
> [    6.970394] ehci-fsl: Freescale EHCI Host controller driver
> [    6.985235] ehci-platform: EHCI generic platform driver
> [    7.006666] dwc2 101c0000.otg: Configuration mismatch. dr_mode forced to host
> [    7.033189] dwc2 101c0000.otg: dwc2_core_reset: HANG! AHB Idle
> timeout GRSTCTL GRSTCTL_AHBIDLE
> [    7.050637] dwc2: probe of 101c0000.otg failed with error -16
> [    7.074662] usbcore: registered new interface driver usb-storage
>
> Full log attached to FS#2964
We had a similar issue on the Lantiq SoCs a while ago.
Based on these issues we submitted the following patches upstream:
- [0] usb: dwc2: use a longer AHB idle timeout in dwc2_core_reset()
- [1] usb: dwc2: use a longer core rest timeout in dwc2_core_reset()

while looking at target/linux/ramips/dts/rt3050.dts I observed that it uses:
  reset-names = "otg";
while the dwc2 driver actually [2] expects:
  reset-names = "dwc2";

quick disclaimer: I don't own any ramips based hardware, so I don't
expect that I'll be able to look further into this issue.


Regards
Martin


[0] https://github.com/torvalds/linux/commit/dfc4fdebc5d62ac4e2fe5428e59b273675515fb2
[1] https://github.com/torvalds/linux/commit/6689f0f4bb14e50917ba42eb9b41c25e0184970c
[2] https://elixir.bootlin.com/linux/v5.4.34/source/drivers/usb/dwc2/platform.c#L215
Alexey Dobrovolsky May 6, 2020, 9:28 p.m. UTC | #3
Hi,
I was able to get USB to work with v5.4 kernel by applying additional
changes [0].
As far as I understand, reset has been added to the mainline linux
kernel with the commit 83f8da562f8b5275fa1095b45762996971f7c607
Any chance to accept my patch from this thread?

[0] https://patchwork.ozlabs.org/project/openwrt/patch/20200506204815.1776-1-dobrovolskiy.alexey@gmail.com/

Best regards,
Alexey

ср, 22 апр. 2020 г. в 02:20, Alexey Dobrovolskiy
<dobrovolskiy.alexey@gmail.com>:
>
> Hi,
> USB does not work in master at 35f208da3c built with testing kernel
> 5.4 with or without 0032-USB-dwc2-add-device_reset.patch.
> (ramips, ZyXEL Keenetic)
> In boot log:
> [    6.888293] usbcore: registered new interface driver usbfs
> [    6.899641] usbcore: registered new interface driver hub
> [    6.910630] usbcore: registered new device driver usb
> [    6.930904] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
> [    6.955086] SCSI subsystem initialized
> [    6.970394] ehci-fsl: Freescale EHCI Host controller driver
> [    6.985235] ehci-platform: EHCI generic platform driver
> [    7.006666] dwc2 101c0000.otg: Configuration mismatch. dr_mode forced to host
> [    7.033189] dwc2 101c0000.otg: dwc2_core_reset: HANG! AHB Idle
> timeout GRSTCTL GRSTCTL_AHBIDLE
> [    7.050637] dwc2: probe of 101c0000.otg failed with error -16
> [    7.074662] usbcore: registered new interface driver usb-storage
>
> Full log attached to FS#2964
>
> Best regards,
> Alexey
>
> сб, 11 апр. 2020 г. в 01:37, Alexey Dobrovolsky <dobrovolskiy.alexey@gmail.com>:
> >
> > In FS#2738 we can see that patch first introduced in
> > e8ebcff ("ramips: add a explicit reset to dwc2")
> > breaks USB functionality since 18.06. Thus, this patch should be removed.
> >
> > Removed:
> > - 0032-USB-dwc2-add-device_reset.patch
> >
> > Fixes: FS#2738
> > Fixes: FS#2964
> >
> > Signed-off-by: Alexey Dobrovolsky <dobrovolskiy.alexey@gmail.com>
> > ---
> >
> > Notes:
> >     I can’t assess whether the root cause of the e8ebcff patch has been fixed
> >     in upstream or the patch needs to be rewritten. From the description
> >     of the bugs, it is only clear that in the latest OpenWrt versions this
> >     patch does not work correctly.
> >
> >     I built 18.06.2 and master at 91c61aae200ecf98e332482d395beda819d6a4fa
> >     for ZyXEL Keenetic with 0032-USB-dwc2-add-device_reset.patch removed
> >     as described in FS#2738 and USB works with a USB flash drive (FS#2964).
> >
> >  .../0032-USB-dwc2-add-device_reset.patch      | 29 -------------------
> >  .../0032-USB-dwc2-add-device_reset.patch      | 29 -------------------
> >  2 files changed, 58 deletions(-)
> >  delete mode 100644 target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch
> >  delete mode 100644 target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch
> >
> > diff --git a/target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch b/target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch
> > deleted file mode 100644
> > index c04e2db661..0000000000
> > --- a/target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch
> > +++ /dev/null
> > @@ -1,29 +0,0 @@
> > -From a758e0870c6d1e4b0272f6e7f9efa9face5534bb Mon Sep 17 00:00:00 2001
> > -From: John Crispin <blogic@openwrt.org>
> > -Date: Sun, 27 Jul 2014 09:49:07 +0100
> > -Subject: [PATCH 32/53] USB: dwc2: add device_reset()
> > -
> > -Signed-off-by: John Crispin <blogic@openwrt.org>
> > ----
> > - drivers/usb/dwc2/hcd.c |    3 +++
> > - 1 file changed, 3 insertions(+)
> > -
> > ---- a/drivers/usb/dwc2/hcd.c
> > -+++ b/drivers/usb/dwc2/hcd.c
> > -@@ -48,6 +48,7 @@
> > - #include <linux/io.h>
> > - #include <linux/slab.h>
> > - #include <linux/usb.h>
> > -+#include <linux/reset.h>
> > -
> > - #include <linux/usb/hcd.h>
> > - #include <linux/usb/ch11.h>
> > -@@ -5215,6 +5216,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
> > -
> > -       retval = -ENOMEM;
> > -
> > -+      device_reset(hsotg->dev);
> > -+
> > -       hcfg = dwc2_readl(hsotg->regs + HCFG);
> > -       dev_dbg(hsotg->dev, "hcfg=%08x\n", hcfg);
> > -
> > diff --git a/target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch b/target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch
> > deleted file mode 100644
> > index ec837cda93..0000000000
> > --- a/target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch
> > +++ /dev/null
> > @@ -1,29 +0,0 @@
> > -From a758e0870c6d1e4b0272f6e7f9efa9face5534bb Mon Sep 17 00:00:00 2001
> > -From: John Crispin <blogic@openwrt.org>
> > -Date: Sun, 27 Jul 2014 09:49:07 +0100
> > -Subject: [PATCH 32/53] USB: dwc2: add device_reset()
> > -
> > -Signed-off-by: John Crispin <blogic@openwrt.org>
> > ----
> > - drivers/usb/dwc2/hcd.c |    3 +++
> > - 1 file changed, 3 insertions(+)
> > -
> > ---- a/drivers/usb/dwc2/hcd.c
> > -+++ b/drivers/usb/dwc2/hcd.c
> > -@@ -49,6 +49,7 @@
> > - #include <linux/io.h>
> > - #include <linux/slab.h>
> > - #include <linux/usb.h>
> > -+#include <linux/reset.h>
> > -
> > - #include <linux/usb/hcd.h>
> > - #include <linux/usb/ch11.h>
> > -@@ -5023,6 +5024,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
> > -
> > -       retval = -ENOMEM;
> > -
> > -+      device_reset(hsotg->dev);
> > -+
> > -       hcfg = dwc2_readl(hsotg, HCFG);
> > -       dev_dbg(hsotg->dev, "hcfg=%08x\n", hcfg);
> > -
> > --
> > 2.17.1
> >
diff mbox series

Patch

diff --git a/target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch b/target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch
deleted file mode 100644
index c04e2db661..0000000000
--- a/target/linux/ramips/patches-4.14/0032-USB-dwc2-add-device_reset.patch
+++ /dev/null
@@ -1,29 +0,0 @@ 
-From a758e0870c6d1e4b0272f6e7f9efa9face5534bb Mon Sep 17 00:00:00 2001
-From: John Crispin <blogic@openwrt.org>
-Date: Sun, 27 Jul 2014 09:49:07 +0100
-Subject: [PATCH 32/53] USB: dwc2: add device_reset()
-
-Signed-off-by: John Crispin <blogic@openwrt.org>
----
- drivers/usb/dwc2/hcd.c |    3 +++
- 1 file changed, 3 insertions(+)
-
---- a/drivers/usb/dwc2/hcd.c
-+++ b/drivers/usb/dwc2/hcd.c
-@@ -48,6 +48,7 @@
- #include <linux/io.h>
- #include <linux/slab.h>
- #include <linux/usb.h>
-+#include <linux/reset.h>
- 
- #include <linux/usb/hcd.h>
- #include <linux/usb/ch11.h>
-@@ -5215,6 +5216,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
- 
- 	retval = -ENOMEM;
- 
-+	device_reset(hsotg->dev);
-+
- 	hcfg = dwc2_readl(hsotg->regs + HCFG);
- 	dev_dbg(hsotg->dev, "hcfg=%08x\n", hcfg);
- 
diff --git a/target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch b/target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch
deleted file mode 100644
index ec837cda93..0000000000
--- a/target/linux/ramips/patches-5.4/0032-USB-dwc2-add-device_reset.patch
+++ /dev/null
@@ -1,29 +0,0 @@ 
-From a758e0870c6d1e4b0272f6e7f9efa9face5534bb Mon Sep 17 00:00:00 2001
-From: John Crispin <blogic@openwrt.org>
-Date: Sun, 27 Jul 2014 09:49:07 +0100
-Subject: [PATCH 32/53] USB: dwc2: add device_reset()
-
-Signed-off-by: John Crispin <blogic@openwrt.org>
----
- drivers/usb/dwc2/hcd.c |    3 +++
- 1 file changed, 3 insertions(+)
-
---- a/drivers/usb/dwc2/hcd.c
-+++ b/drivers/usb/dwc2/hcd.c
-@@ -49,6 +49,7 @@
- #include <linux/io.h>
- #include <linux/slab.h>
- #include <linux/usb.h>
-+#include <linux/reset.h>
- 
- #include <linux/usb/hcd.h>
- #include <linux/usb/ch11.h>
-@@ -5023,6 +5024,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
- 
- 	retval = -ENOMEM;
- 
-+	device_reset(hsotg->dev);
-+
- 	hcfg = dwc2_readl(hsotg, HCFG);
- 	dev_dbg(hsotg->dev, "hcfg=%08x\n", hcfg);
-