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 |
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 >
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
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 --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); -
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