mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	Fix the issue of exclusive reset controller acquisition failure on kernel 6.6. Signed-off-by: Shiji Yang <yangshiji66@qq.com>
		
			
				
	
	
		
			38 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| 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;
 |