aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx/mach-imx6q.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-imx/mach-imx6q.c')
-rw-r--r--arch/arm/mach-imx/mach-imx6q.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
index 426d2087c46..5ec0608f2a7 100644
--- a/arch/arm/mach-imx/mach-imx6q.c
+++ b/arch/arm/mach-imx/mach-imx6q.c
@@ -12,7 +12,9 @@
12 12
13#include <linux/clk.h> 13#include <linux/clk.h>
14#include <linux/clkdev.h> 14#include <linux/clkdev.h>
15#include <linux/cpuidle.h>
15#include <linux/delay.h> 16#include <linux/delay.h>
17#include <linux/export.h>
16#include <linux/init.h> 18#include <linux/init.h>
17#include <linux/io.h> 19#include <linux/io.h>
18#include <linux/irq.h> 20#include <linux/irq.h>
@@ -24,6 +26,7 @@
24#include <linux/phy.h> 26#include <linux/phy.h>
25#include <linux/micrel_phy.h> 27#include <linux/micrel_phy.h>
26#include <linux/mfd/anatop.h> 28#include <linux/mfd/anatop.h>
29#include <asm/cpuidle.h>
27#include <asm/smp_twd.h> 30#include <asm/smp_twd.h>
28#include <asm/hardware/cache-l2x0.h> 31#include <asm/hardware/cache-l2x0.h>
29#include <asm/hardware/gic.h> 32#include <asm/hardware/gic.h>
@@ -31,8 +34,10 @@
31#include <asm/mach/time.h> 34#include <asm/mach/time.h>
32#include <asm/system_misc.h> 35#include <asm/system_misc.h>
33#include <mach/common.h> 36#include <mach/common.h>
37#include <mach/cpuidle.h>
34#include <mach/hardware.h> 38#include <mach/hardware.h>
35 39
40
36void imx6q_restart(char mode, const char *cmd) 41void imx6q_restart(char mode, const char *cmd)
37{ 42{
38 struct device_node *np; 43 struct device_node *np;
@@ -169,6 +174,19 @@ static void __init imx6q_init_machine(void)
169 imx6q_usb_init(); 174 imx6q_usb_init();
170} 175}
171 176
177static struct cpuidle_driver imx6q_cpuidle_driver = {
178 .name = "imx6q_cpuidle",
179 .owner = THIS_MODULE,
180 .en_core_tk_irqen = 1,
181 .states[0] = ARM_CPUIDLE_WFI_STATE,
182 .state_count = 1,
183};
184
185static void __init imx6q_init_late(void)
186{
187 imx_cpuidle_init(&imx6q_cpuidle_driver);
188}
189
172static void __init imx6q_map_io(void) 190static void __init imx6q_map_io(void)
173{ 191{
174 imx_lluart_map_io(); 192 imx_lluart_map_io();
@@ -213,6 +231,7 @@ DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad (Device Tree)")
213 .handle_irq = imx6q_handle_irq, 231 .handle_irq = imx6q_handle_irq,
214 .timer = &imx6q_timer, 232 .timer = &imx6q_timer,
215 .init_machine = imx6q_init_machine, 233 .init_machine = imx6q_init_machine,
234 .init_late = imx6q_init_late,
216 .dt_compat = imx6q_dt_compat, 235 .dt_compat = imx6q_dt_compat,
217 .restart = imx6q_restart, 236 .restart = imx6q_restart,
218MACHINE_END 237MACHINE_END