ARM: imx: add timer stop flag to ARM power off state
authorStefan Agner <stefan@agner.ch>
Wed, 10 Jan 2018 21:04:47 +0000 (22:04 +0100)
committerShawn Guo <shawnguo@kernel.org>
Mon, 12 Feb 2018 05:13:02 +0000 (13:13 +0800)
When the CPU is in ARM power off state the ARM architected
timers are stopped. The flag is already present in the higher
power WAIT mode.

This allows to use the ARM generic timer on i.MX 6UL/6ULL SoC.
Without the flag the kernel freezes when the timer enters the
first time ARM power off mode.

Note: The default timer on i.MX6SX is the i.MX GPT timer which is
not disabled during CPU idle. However, the timer is not affected
by the CPUIDLE_FLAG_TIMER_STOP flag. The flag only affects CPU
local timers.

Cc: Anson Huang <anson.huang@nxp.com>
Signed-off-by: Stefan Agner <stefan@agner.ch>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm/mach-imx/cpuidle-imx6sx.c

index c5a5c3a70ab15c77ca99c3dc7471e60d43534b2b..d0f14b761ff704b5800037cc4f19a585492bac83 100644 (file)
@@ -89,6 +89,7 @@ static struct cpuidle_driver imx6sx_cpuidle_driver = {
                         */
                        .exit_latency = 300,
                        .target_residency = 500,
+                       .flags = CPUIDLE_FLAG_TIMER_STOP,
                        .enter = imx6sx_enter_wait,
                        .name = "LOW-POWER-IDLE",
                        .desc = "ARM power off",