]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ARM: tegra: add low level code for Tegra114 cluster power down
authorJoseph Lo <josephl@nvidia.com>
Wed, 3 Jul 2013 09:50:40 +0000 (17:50 +0800)
committerStephen Warren <swarren@nvidia.com>
Fri, 19 Jul 2013 16:08:06 +0000 (10:08 -0600)
When the CPU cluster power down, the vGIC is powered down too. The
flow controller needs to monitor the legacy interrupt controller to
wake up CPU. So setting up the appropriate wake up event in flow
controller.

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
arch/arm/mach-tegra/flowctrl.h
arch/arm/mach-tegra/sleep-tegra30.S

index e56a950920f6a0295f196faff7fce308739726cf..de0acb9ee32319ee54383519ce93a8bae3ed07a4 100644 (file)
@@ -28,6 +28,8 @@
 #define FLOW_CTRL_SCLK_RESUME          (1 << 27)
 #define FLOW_CTRL_HALT_CPU_IRQ         (1 << 10)
 #define        FLOW_CTRL_HALT_CPU_FIQ          (1 << 8)
+#define FLOW_CTRL_HALT_LIC_IRQ         (1 << 11)
+#define FLOW_CTRL_HALT_LIC_FIQ         (1 << 10)
 #define FLOW_CTRL_HALT_GIC_IRQ         (1 << 9)
 #define FLOW_CTRL_HALT_GIC_FIQ         (1 << 8)
 #define FLOW_CTRL_CPU0_CSR             0x8
index 6744161475b2c54988da63e675cf91bd5897746b..ecad4eace9411fc16169cd25200abee287dfda49 100644 (file)
@@ -175,8 +175,12 @@ tegra30_enter_sleep:
        orr     r0, r0, #FLOW_CTRL_CSR_ENABLE
        str     r0, [r6, r2]
 
+       tegra_get_soc_id TEGRA_APB_MISC_BASE, r10
+       cmp     r10, #TEGRA30
        mov     r0, #FLOW_CTRL_WAIT_FOR_INTERRUPT
-       orr     r0, r0, #FLOW_CTRL_HALT_CPU_IRQ | FLOW_CTRL_HALT_CPU_FIQ
+       orreq   r0, r0, #FLOW_CTRL_HALT_CPU_IRQ | FLOW_CTRL_HALT_CPU_FIQ
+       orrne   r0, r0, #FLOW_CTRL_HALT_LIC_IRQ | FLOW_CTRL_HALT_LIC_FIQ
+
        cpu_to_halt_reg r2, r1
        str     r0, [r6, r2]
        dsb