aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJoseph Lo <josephl@nvidia.com>2013-07-03 05:50:40 -0400
committerStephen Warren <swarren@nvidia.com>2013-07-19 12:08:06 -0400
commitccea4bc654a9d5330c4488acadc3abfa4ea7ebbf (patch)
treeaf6af4a789343de0b69fdd3a7cf05e7257a54728 /arch
parent2f5aaa3d2703256d37ae75818c495783d4ad0543 (diff)
ARM: tegra: add low level code for Tegra114 cluster power down
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/flowctrl.h2
-rw-r--r--arch/arm/mach-tegra/sleep-tegra30.S6
2 files changed, 7 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/flowctrl.h b/arch/arm/mach-tegra/flowctrl.h
index e56a950920f6..de0acb9ee323 100644
--- a/arch/arm/mach-tegra/flowctrl.h
+++ b/arch/arm/mach-tegra/flowctrl.h
@@ -28,6 +28,8 @@
28#define FLOW_CTRL_SCLK_RESUME (1 << 27) 28#define FLOW_CTRL_SCLK_RESUME (1 << 27)
29#define FLOW_CTRL_HALT_CPU_IRQ (1 << 10) 29#define FLOW_CTRL_HALT_CPU_IRQ (1 << 10)
30#define FLOW_CTRL_HALT_CPU_FIQ (1 << 8) 30#define FLOW_CTRL_HALT_CPU_FIQ (1 << 8)
31#define FLOW_CTRL_HALT_LIC_IRQ (1 << 11)
32#define FLOW_CTRL_HALT_LIC_FIQ (1 << 10)
31#define FLOW_CTRL_HALT_GIC_IRQ (1 << 9) 33#define FLOW_CTRL_HALT_GIC_IRQ (1 << 9)
32#define FLOW_CTRL_HALT_GIC_FIQ (1 << 8) 34#define FLOW_CTRL_HALT_GIC_FIQ (1 << 8)
33#define FLOW_CTRL_CPU0_CSR 0x8 35#define FLOW_CTRL_CPU0_CSR 0x8
diff --git a/arch/arm/mach-tegra/sleep-tegra30.S b/arch/arm/mach-tegra/sleep-tegra30.S
index 6744161475b2..ecad4eace941 100644
--- a/arch/arm/mach-tegra/sleep-tegra30.S
+++ b/arch/arm/mach-tegra/sleep-tegra30.S
@@ -175,8 +175,12 @@ tegra30_enter_sleep:
175 orr r0, r0, #FLOW_CTRL_CSR_ENABLE 175 orr r0, r0, #FLOW_CTRL_CSR_ENABLE
176 str r0, [r6, r2] 176 str r0, [r6, r2]
177 177
178 tegra_get_soc_id TEGRA_APB_MISC_BASE, r10
179 cmp r10, #TEGRA30
178 mov r0, #FLOW_CTRL_WAIT_FOR_INTERRUPT 180 mov r0, #FLOW_CTRL_WAIT_FOR_INTERRUPT
179 orr r0, r0, #FLOW_CTRL_HALT_CPU_IRQ | FLOW_CTRL_HALT_CPU_FIQ 181 orreq r0, r0, #FLOW_CTRL_HALT_CPU_IRQ | FLOW_CTRL_HALT_CPU_FIQ
182 orrne r0, r0, #FLOW_CTRL_HALT_LIC_IRQ | FLOW_CTRL_HALT_LIC_FIQ
183
180 cpu_to_halt_reg r2, r1 184 cpu_to_halt_reg r2, r1
181 str r0, [r6, r2] 185 str r0, [r6, r2]
182 dsb 186 dsb