mvebu: armada-37xx: add patch to forbid cpufreq for 1.2 GHz
This patch is backported from linux-arm-kernel [1] to improve situation, when
it was reported that 1.2 GHz variant is unstable with DFS.
It waits to be accepted upstream, however, it waits for Marvell people to respond.
[1] https://patchwork.kernel.org/project/linux-arm-kernel/patch/20210630225601.6372-1-kabel@kernel.org/
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
(cherry picked from commit d379476817)
			
			
This commit is contained in:
		 Josef Schlehofer
					Josef Schlehofer
				
			
				
					committed by
					
						 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
			
				
	
			
			
			 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
						parent
						
							b254bd697d
						
					
				
				
					commit
					f407b2f43c
				
			| @@ -0,0 +1,39 @@ | |||||||
|  | From: =?utf-8?q?Marek_Beh=C3=BAn?= <kabel@kernel.org> | ||||||
|  | Subject: [PATCH v2] cpufreq: armada-37xx: forbid cpufreq for 1.2 GHz variant | ||||||
|  | Date: Thu,  1 Jul 2021 00:56:01 +0200 | ||||||
|  |  | ||||||
|  | The 1.2 GHz variant of the Armada 3720 SOC is unstable with DVFS: when | ||||||
|  | the SOC boots, the WTMI firmware sets clocks and AVS values that work | ||||||
|  | correctly with 1.2 GHz CPU frequency, but random crashes occur once | ||||||
|  | cpufreq driver starts scaling. | ||||||
|  |  | ||||||
|  | We do not know currently what is the reason: | ||||||
|  | - it may be that the voltage value for L0 for 1.2 GHz variant provided | ||||||
|  |   by the vendor in the OTP is simply incorrect when scaling is used, | ||||||
|  | - it may be that some delay is needed somewhere, | ||||||
|  | - it may be something else. | ||||||
|  |  | ||||||
|  | The most sane solution now seems to be to simply forbid the cpufreq | ||||||
|  | driver on 1.2 GHz variant. | ||||||
|  |  | ||||||
|  | Signed-off-by: Marek Behún <kabel@kernel.org> | ||||||
|  | Fixes: 92ce45fb875d ("cpufreq: Add DVFS support for Armada 37xx") | ||||||
|  | --- | ||||||
|  |  drivers/cpufreq/armada-37xx-cpufreq.c | 6 +++++- | ||||||
|  |  1 file changed, 5 insertions(+), 1 deletion(-) | ||||||
|  |  | ||||||
|  | --- a/drivers/cpufreq/armada-37xx-cpufreq.c | ||||||
|  | +++ b/drivers/cpufreq/armada-37xx-cpufreq.c | ||||||
|  | @@ -102,7 +102,11 @@ struct armada_37xx_dvfs { | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  |  static struct armada_37xx_dvfs armada_37xx_dvfs[] = { | ||||||
|  | -	{.cpu_freq_max = 1200*1000*1000, .divider = {1, 2, 4, 6} }, | ||||||
|  | +	/* | ||||||
|  | +	 * The cpufreq scaling for 1.2 GHz variant of the SOC is currently | ||||||
|  | +	 * unstable because we do not know how to configure it properly. | ||||||
|  | +	 */ | ||||||
|  | +	/* {.cpu_freq_max = 1200*1000*1000, .divider = {1, 2, 4, 6} }, */ | ||||||
|  |  	{.cpu_freq_max = 1000*1000*1000, .divider = {1, 2, 4, 5} }, | ||||||
|  |  	{.cpu_freq_max = 800*1000*1000,  .divider = {1, 2, 3, 4} }, | ||||||
|  |  	{.cpu_freq_max = 600*1000*1000,  .divider = {2, 4, 5, 6} }, | ||||||
		Reference in New Issue
	
	Block a user