mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-02-27 10:12:42 +00:00
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>
This commit is contained in:
parent
e938d68074
commit
26390b5361
@ -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";
|
||||
|
@ -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;
|
Loading…
Reference in New Issue
Block a user