Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: imx: add cpuidle support for i.mx6sx

Add cpuidle support for i.MX6SX, derive from i.MX6Q's
cpuidle, two levels supported:

1. WFI;
2. WAIT mode.

Signed-off-by: Anson Huang <b20788@freescale.com>
Signed-off-by: Shawn Guo <shawn.guo@freescale.com>

authored by

Anson Huang and committed by
Shawn Guo
a25d67a4 ff843d62

+10 -1
+3 -1
arch/arm/mach-imx/cpuidle-imx6q.c
··· 13 13 14 14 #include "common.h" 15 15 #include "cpuidle.h" 16 + #include "hardware.h" 16 17 17 18 static atomic_t master = ATOMIC_INIT(0); 18 19 static DEFINE_SPINLOCK(master_lock); ··· 67 66 int __init imx6q_cpuidle_init(void) 68 67 { 69 68 /* Need to enable SCU standby for entering WAIT modes */ 70 - imx_scu_standby_enable(); 69 + if (!cpu_is_imx6sx()) 70 + imx_scu_standby_enable(); 71 71 72 72 /* Set INT_MEM_CLK_LPM bit to get a reliable WAIT mode support */ 73 73 imx6q_set_int_mem_clk_lpm();
+7
arch/arm/mach-imx/mach-imx6sx.c
··· 12 12 #include <asm/mach/map.h> 13 13 14 14 #include "common.h" 15 + #include "cpuidle.h" 15 16 16 17 static void __init imx6sx_init_machine(void) 17 18 { ··· 39 38 irqchip_init(); 40 39 } 41 40 41 + static void __init imx6sx_init_late(void) 42 + { 43 + imx6q_cpuidle_init(); 44 + } 45 + 42 46 static const char *imx6sx_dt_compat[] __initconst = { 43 47 "fsl,imx6sx", 44 48 NULL, ··· 54 48 .init_irq = imx6sx_init_irq, 55 49 .init_machine = imx6sx_init_machine, 56 50 .dt_compat = imx6sx_dt_compat, 51 + .init_late = imx6sx_init_late, 57 52 .restart = mxc_restart, 58 53 MACHINE_END