summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShiji Yang <yangshiji66@qq.com>2024-03-16 08:39:16 +0800
committerHauke Mehrtens <hauke@hauke-m.de>2024-05-09 23:53:02 +0200
commit26390b536165205d10d0583b8b52c33c225433c4 (patch)
tree9fd93b9faba11e9846bc2b7cca65f67e880c5f5c
parente938d68074272d9eb02aa1dfe057c9c0a8a8dd4c (diff)
downloadopenwrt-26390b536165205d10d0583b8b52c33c225433c4.tar.gz
openwrt-26390b536165205d10d0583b8b52c33c225433c4.tar.bz2
openwrt-26390b536165205d10d0583b8b52c33c225433c4.zip
ath79: skip reset control for syscon devices
Fix the issue of exclusive reset controller acquisition failure on kernel 6.6. Signed-off-by: Shiji Yang <yangshiji66@qq.com>
-rw-r--r--target/linux/ath79/dts/ath79.dtsi2
-rw-r--r--target/linux/ath79/patches-6.6/820-mfd-syscon-support-skip-reset-control-for-syscon-devices.patch37
2 files changed, 39 insertions, 0 deletions
diff --git a/target/linux/ath79/dts/ath79.dtsi b/target/linux/ath79/dts/ath79.dtsi
index 89d9058414..8849d729ac 100644
--- a/target/linux/ath79/dts/ath79.dtsi
+++ b/target/linux/ath79/dts/ath79.dtsi
@@ -52,6 +52,7 @@
interrupts = <4>;
phy-mode = "mii";
+ syscon-no-reset;
mdio0: mdio {
status = "disabled";
@@ -75,6 +76,7 @@
interrupts = <5>;
phy-mode = "mii";
+ syscon-no-reset;
mdio1: mdio {
status = "disabled";
diff --git a/target/linux/ath79/patches-6.6/820-mfd-syscon-support-skip-reset-control-for-syscon-devices.patch b/target/linux/ath79/patches-6.6/820-mfd-syscon-support-skip-reset-control-for-syscon-devices.patch
new file mode 100644
index 0000000000..c73c8443b9
--- /dev/null
+++ b/target/linux/ath79/patches-6.6/820-mfd-syscon-support-skip-reset-control-for-syscon-devices.patch
@@ -0,0 +1,37 @@
+From: Shiji Yang <yangshiji66@outlook.com>
+Date: Wed, 13 Mar 2024 22:36:31 +0800
+Subject: [PATCH] mfd: syscon: support skip reset control for syscon devices
+
+Some platform device drivers(e.g. ag71xx) expect exclusive reset
+control. Fetching reset controller for syscon[1] will break these
+drivers. This patch introduces a new property 'syscon-no-reset'
+to skip it.
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit?id=7d1e3bd94828ad9fc86f55253cd6fec8edd65394
+
+Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
+---
+ drivers/mfd/syscon.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/mfd/syscon.c
++++ b/drivers/mfd/syscon.c
+@@ -52,7 +52,7 @@ static struct syscon *of_syscon_register
+ int ret;
+ struct regmap_config syscon_config = syscon_regmap_config;
+ struct resource res;
+- struct reset_control *reset;
++ struct reset_control *reset = NULL;
+
+ syscon = kzalloc(sizeof(*syscon), GFP_KERNEL);
+ if (!syscon)
+@@ -134,7 +134,8 @@ static struct syscon *of_syscon_register
+ goto err_attach_clk;
+ }
+
+- reset = of_reset_control_get_optional_exclusive(np, NULL);
++ if (!of_property_read_bool(np, "syscon-no-reset"))
++ reset = of_reset_control_get_optional_exclusive(np, NULL);
+ if (IS_ERR(reset)) {
+ ret = PTR_ERR(reset);
+ goto err_attach_clk;