mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	ARM: imx: add cpu idle support for i.MX6SLL
i.MX6SLL supports cpu idle with ARM power gated, it can reuse i.MX6SX's cpu idle driver to support below 3 states of cpu idle: state0: WFI; state1: WAIT mode with ARM power on; state2: WAIT mode with ARM power off. L2_PGE in GPC_CNTR needs to be cleared to support state2 cpu idle. Signed-off-by: Anson Huang <Anson.Huang@nxp.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
This commit is contained in:
		
							parent
							
								
									c791bbbf81
								
							
						
					
					
						commit
						e7fa1fb39b
					
				
					 3 changed files with 7 additions and 3 deletions
				
			
		| 
						 | 
					@ -25,8 +25,8 @@ obj-$(CONFIG_MXC_DEBUG_BOARD) += 3ds_debugboard.o
 | 
				
			||||||
ifeq ($(CONFIG_CPU_IDLE),y)
 | 
					ifeq ($(CONFIG_CPU_IDLE),y)
 | 
				
			||||||
obj-$(CONFIG_SOC_IMX5) += cpuidle-imx5.o
 | 
					obj-$(CONFIG_SOC_IMX5) += cpuidle-imx5.o
 | 
				
			||||||
obj-$(CONFIG_SOC_IMX6Q) += cpuidle-imx6q.o
 | 
					obj-$(CONFIG_SOC_IMX6Q) += cpuidle-imx6q.o
 | 
				
			||||||
obj-$(CONFIG_SOC_IMX6SL) += cpuidle-imx6sl.o
 | 
					obj-$(CONFIG_SOC_IMX6SL) += cpuidle-imx6sl.o cpuidle-imx6sx.o
 | 
				
			||||||
obj-$(CONFIG_SOC_IMX6SLL) += cpuidle-imx6sl.o
 | 
					obj-$(CONFIG_SOC_IMX6SLL) += cpuidle-imx6sl.o cpuidle-imx6sx.o
 | 
				
			||||||
obj-$(CONFIG_SOC_IMX6SX) += cpuidle-imx6sx.o
 | 
					obj-$(CONFIG_SOC_IMX6SX) += cpuidle-imx6sx.o
 | 
				
			||||||
obj-$(CONFIG_SOC_IMX6UL) += cpuidle-imx6sx.o
 | 
					obj-$(CONFIG_SOC_IMX6UL) += cpuidle-imx6sx.o
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -103,6 +103,7 @@ int __init imx6sx_cpuidle_init(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	imx6_set_int_mem_clk_lpm(true);
 | 
						imx6_set_int_mem_clk_lpm(true);
 | 
				
			||||||
	imx6_enable_rbc(false);
 | 
						imx6_enable_rbc(false);
 | 
				
			||||||
 | 
						imx_gpc_set_l2_mem_power_in_lpm(false);
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * set ARM power up/down timing to the fastest,
 | 
						 * set ARM power up/down timing to the fastest,
 | 
				
			||||||
	 * sw2iso and sw can be set to one 32K cycle = 31us
 | 
						 * sw2iso and sw can be set to one 32K cycle = 31us
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,10 @@ static void __init imx6sl_init_late(void)
 | 
				
			||||||
	if (IS_ENABLED(CONFIG_ARM_IMX6Q_CPUFREQ))
 | 
						if (IS_ENABLED(CONFIG_ARM_IMX6Q_CPUFREQ))
 | 
				
			||||||
		platform_device_register_simple("imx6q-cpufreq", -1, NULL, 0);
 | 
							platform_device_register_simple("imx6q-cpufreq", -1, NULL, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	imx6sl_cpuidle_init();
 | 
						if (cpu_is_imx6sl())
 | 
				
			||||||
 | 
							imx6sl_cpuidle_init();
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							imx6sx_cpuidle_init();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void __init imx6sl_init_machine(void)
 | 
					static void __init imx6sl_init_machine(void)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue