ARM: imx: add cpuidle support for i.mx6sx
Subsystems (3)
PATCH 1/1 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.
--- arch/arm/mach-imx/cpuidle-imx6q.c | 4 +++- arch/arm/mach-imx/mach-imx6sx.c | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-)
arch/arm/mach-imx/cpuidle-imx6q.c +3 -1
@@ -13,6 +13,7 @@#include "common.h" #include "cpuidle.h" +#include "hardware.h" static atomic_t master =ATOMIC_INIT (0 );static DEFINE_SPINLOCK (master_lock);
@@ -66,7 +67,8 @@ static struct cpuidle_driver imx6q_cpuidle_driver = {int __init imx6q_cpuidle_init (void ) {/* Need to enable SCU standby for entering WAIT modes */ -imx_scu_standby_enable (); +if (!cpu_is_imx6sx ()) +imx_scu_standby_enable ();/* Set INT_MEM_CLK_LPM bit to get a reliable WAIT mode support */ imx6q_set_int_mem_clk_lpm ();
arch/arm/mach-imx/mach-imx6sx.c +7 -0
@@ -12,6 +12,7 @@#include <asm/mach/map.h> #include "common.h" +#include "cpuidle.h" static void __init imx6sx_init_machine (void ) {
@@ -38,6 +39,11 @@ static void __init imx6sx_init_irq(void)irqchip_init (); } +static void __init imx6sx_init_late (void ) +{ +imx6q_cpuidle_init (); +} +static const char *imx6sx_dt_compat[]__initconst = {"fsl,imx6sx" ,NULL ,
@@ -48,5 +54,6 @@ DT_MACHINE_START(IMX6SX, "Freescale i.MX6 SoloX (Device Tree)") .init_irq = imx6sx_init_irq, .init_machine = imx6sx_init_machine, .dt_compat = imx6sx_dt_compat, + .init_late = imx6sx_init_late, .restart = mxc_restart,MACHINE_END
Signature · 1 line
1.7.9.5
PATCH 1/1 ARM: imx: add cpuidle support for i.mx6sx
Quoted 25 lines · Anson Huang
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 <[email protected]>--- arch/arm/mach-imx/cpuidle-imx6q.c | 4 +++- arch/arm/mach-imx/mach-imx6sx.c | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-)arch/arm/mach-imx/cpuidle-imx6q.c +1
-0@@ -13,6 +13,7 @@#include "common.h" #include "cpuidle.h" +#include "hardware.h" static atomic_t master =ATOMIC_INIT (0 );static DEFINE_SPINLOCK (master_lock);
arch/arm/mach-imx/cpuidle-imx6q.c static struct cpuidle_driver imx6q_cpuidle_driver = { · line 71
Quoted 6 lines
arch/arm/mach-imx/cpuidle-imx6q.c +2
-1@@ -66,7 +67,8 @@ static struct cpuidle_driver imx6q_cpuidle_driver = {int __init imx6q_cpuidle_init (void ) {/* Need to enable SCU standby for entering WAIT modes */ -imx_scu_standby_enable (); +if (!cpu_is_imx6sx ()) +imx_scu_standby_enable ();
Hmm, why is SoloX special in this regarding? Does SoloLite work well without this change?
Shawn
Quoted 37 lines
arch/arm/mach-imx/cpuidle-imx6q.c +0
-0/* Set INT_MEM_CLK_LPM bit to get a reliable WAIT mode support */ imx6q_set_int_mem_clk_lpm ();arch/arm/mach-imx/mach-imx6sx.c +7
-0@@ -12,6 +12,7 @@#include <asm/mach/map.h> #include "common.h" +#include "cpuidle.h" static void __init imx6sx_init_machine (void ) {@@ -38,6 +39,11 @@ static void __init imx6sx_init_irq(void)irqchip_init (); } +static void __init imx6sx_init_late (void ) +{ +imx6q_cpuidle_init (); +} +static const char *imx6sx_dt_compat[]__initconst = {"fsl,imx6sx" ,NULL ,@@ -48,5 +54,6 @@ DT_MACHINE_START(IMX6SX, "Freescale i.MX6 SoloX (Device Tree)") .init_irq = imx6sx_init_irq, .init_machine = imx6sx_init_machine, .dt_compat = imx6sx_dt_compat, + .init_late = imx6sx_init_late, .restart = mxc_restart,MACHINE_END Signature · 1 line
1.7.9.5
PATCH 1/1 ARM: imx: add cpuidle support for i.mx6sx
Quoted 10 lines · Shawn Guo
arch/arm/mach-imx/cpuidle-imx6q.c static struct cpuidle_driver imx6q_cpuidle_driver = { · line 71
Quoted 7 lines
arch/arm/mach-imx/cpuidle-imx6q.c +2
-1@@ -66,7 +67,8 @@ static struct cpuidle_driver imx6q_cpuidle_driver = {int __init imx6q_cpuidle_init (void ) {/* Need to enable SCU standby for entering WAIT modes */ -imx_scu_standby_enable (); +if (!cpu_is_imx6sx ()) +imx_scu_standby_enable ();Hmm, why is SoloX special in this regarding? Does SoloLite work well without this change?
Sorry. I missed that SoloLite is handled by imx6sl_cpuidle_init() separately.
Patch applied, thanks.
Shawn