aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/apm821xx/dts/wd-mybooklive.dts4
-rw-r--r--target/linux/apm821xx/patches-5.10/100-dwc2-disable-powerdown.patch29
2 files changed, 32 insertions, 1 deletions
diff --git a/target/linux/apm821xx/dts/wd-mybooklive.dts b/target/linux/apm821xx/dts/wd-mybooklive.dts
index c96e7f75e9..2cc4dd8b79 100644
--- a/target/linux/apm821xx/dts/wd-mybooklive.dts
+++ b/target/linux/apm821xx/dts/wd-mybooklive.dts
@@ -123,9 +123,11 @@
usbpwr: usb-regulator {
compatible = "regulator-fixed";
regulator-name = "Power USB Core";
- gpios = <&GPIO1 2 GPIO_ACTIVE_LOW>;
+ gpios = <&GPIO1 2 GPIO_ACTIVE_HIGH>;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
+ regulator-boot-on; /* uboot sets this */
+ enable-active-high;
};
sata1pwr: sata1-regulator {
diff --git a/target/linux/apm821xx/patches-5.10/100-dwc2-disable-powerdown.patch b/target/linux/apm821xx/patches-5.10/100-dwc2-disable-powerdown.patch
new file mode 100644
index 0000000000..ede7d732ff
--- /dev/null
+++ b/target/linux/apm821xx/patches-5.10/100-dwc2-disable-powerdown.patch
@@ -0,0 +1,29 @@
+From 88ca61467a0897c79b1fbf8f5c30691b43b52613 Mon Sep 17 00:00:00 2001
+From: Christian Lamparter <chunkeey@gmail.com>
+Date: Sun, 26 Dec 2021 22:36:29 +0200
+Subject: [PATCH] dwc2: temporary force to be powered up all times
+
+the APM821xx's onchip dwc2 misbehaves with 5.4 and 5.10
+when a USB device gets connected. Instead of announcing
+and setting up the USB devices it crashes and burns with:
+
+[ 22.023476] dwc2 4bff80000.usbotg: dwc2_restore_global_registers: no global registers to restore
+[ 22.032245] dwc2 4bff80000.usbotg: dwc2_exit_partial_power_down: failed to restore registers
+[ 22.040647] dwc2 4bff80000.usbotg: exit partial_power_down failed
+[ 22.058765] dwc2 4bff80000.usbotg: HC died; cleaning up
+
+This is all seemingly fixed with dwc2 from a 5.16-rc6.
+
+Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
+---
+
+--- a/drivers/usb/dwc2/params.c
++++ b/drivers/usb/dwc2/params.c
+@@ -137,6 +137,7 @@ static void dwc2_set_amcc_params(struct
+ struct dwc2_core_params *p = &hsotg->params;
+
+ p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 << GAHBCFG_HBSTLEN_SHIFT;
++ p->power_down = DWC2_POWER_DOWN_PARAM_NONE;
+ }
+
+ static void dwc2_set_stm32f4x9_fsotg_params(struct dwc2_hsotg *hsotg)