diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-23 20:43:53 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-23 20:43:53 -0400 |
commit | a5ebba6b54bc8038a38d3eacac3a79bbeaf3ee24 (patch) | |
tree | d36eb26a7efd4e00381bc9f6474ea3ec31340585 /arch/arm/mach-imx/mach-imx6q.c | |
parent | e81218f5f0fd219bd75768d845159ba4810bdd48 (diff) | |
parent | 6b21a9ce0402e0c5fd2adfa3d41328fdd8f55a9a (diff) |
Merge tag 'pm' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull arm-soc power management changes from Arnd Bergmann:
"These are various power management related changes, mainly concerning
cpuidle on i.MX and OMAP, as well as a the move of the omap
smartreflex driver to live in the power subsystem."
Fix up conflicts in arch/arm/mach-{imx/mach-imx6q.c,omap2/prm2xxx_3xxx.h}
* tag 'pm' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (37 commits)
ARM: OMAP2+: PM: fix IRQ_NOAUTOEN removal by mis-merge
ARM: OMAP2+: do not allow SmartReflex to be built as a module
ARM: OMAP2: Use hwmod to initialize mmc for 2420
ARM: OMAP3: PM: cpuidle: optimize the clkdm idle latency in C1 state
ARM: OMAP3: PM: cpuidle: optimize the PER latency in C1 state
ARM: OMAP3: PM: cpuidle: default to C1 in next_valid_state
ARM: OMAP3: PM: cleanup cam_pwrdm leftovers
ARM: OMAP3: PM: call pre/post transition per powerdomain
ARM: OMAP2+: powerdomain: allow pre/post transtion to be per pwrdm
ARM: OMAP3: PM: Remove IO Daisychain control from cpuidle
ARM: OMAP3PLUS: hwmod: reconfigure IO Daisychain during hwmod mux
ARM: OMAP3+: PRM: Enable IO wake up
ARM: OMAP4: PRM: Add IO Daisychain support
ARM: OMAP3: PM: Move IO Daisychain function to omap3 prm file
ARM: OMAP3: PM: correct enable/disable of daisy io chain
ARM: OMAP2+: PRM: fix compile for OMAP4-only build
W1: OMAP HDQ1W: use runtime PM
ARM: OMAP2+: HDQ1W: use omap_device
W1: OMAP HDQ1W: use 32-bit register accesses
W1: OMAP HDQ1W: allow driver to be built on all OMAP2+
...
Diffstat (limited to 'arch/arm/mach-imx/mach-imx6q.c')
-rw-r--r-- | arch/arm/mach-imx/mach-imx6q.c | 19 |
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 426d2087c460..5ec0608f2a76 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 | |||
36 | void imx6q_restart(char mode, const char *cmd) | 41 | void 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 | ||
177 | static 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 | |||
185 | static void __init imx6q_init_late(void) | ||
186 | { | ||
187 | imx_cpuidle_init(&imx6q_cpuidle_driver); | ||
188 | } | ||
189 | |||
172 | static void __init imx6q_map_io(void) | 190 | static 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, |
218 | MACHINE_END | 237 | MACHINE_END |