summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/sleep-t3.S
diff options
context:
space:
mode:
authorScott Williams <scwilliams@nvidia.com>2011-07-25 14:55:25 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:46:58 -0800
commitd177f4e51d81f29699f6041909c26ae43a27bd76 (patch)
treed5400a8048b6eec596bd24ee02241d1e3e200d56 /arch/arm/mach-tegra/sleep-t3.S
parenteae868ee1d776e923b667ea2144d0aca3014a2ef (diff)
ARM: tegra: power: Split CPU context save and coherency exit
Separate the CPU context save and CPU coherency exit into separate functions. Change-Id: I7c5376677e293342b02b5bebdef6be2610522936 Signed-off-by: Scott Williams <scwilliams@nvidia.com> Signed-off-by: Dan Willemsen <dwillemsen@nvidia.com> Rebase-Id: R17eb40d551e797448410cf6220dfba122faa702d
Diffstat (limited to 'arch/arm/mach-tegra/sleep-t3.S')
-rw-r--r--arch/arm/mach-tegra/sleep-t3.S19
1 files changed, 4 insertions, 15 deletions
diff --git a/arch/arm/mach-tegra/sleep-t3.S b/arch/arm/mach-tegra/sleep-t3.S
index b234ab3a671f..9a089a605378 100644
--- a/arch/arm/mach-tegra/sleep-t3.S
+++ b/arch/arm/mach-tegra/sleep-t3.S
@@ -49,25 +49,13 @@
* Should never return.
*/
ENTRY(tegra3_hotplug_shutdown)
- cpu_id r0
-
- /* Exit coherency. */
- mrc p15, 0, r3, c1, c0, 1 @ ACTLR
- bic r3, r3, #(1<<6) @ exit coherency SCTLR.SMP
- mcr p15, 0, r3, c1, c0, 1 @ ACTLR
- isb
-
- /* Invalidate the SCU tags for this CPU. */
- mov32 r3, TEGRA_ARM_PERIF_VIRT + 0xC @ SCUIAR
- mov r2, r0, lsl #2
- mov r1, #0xf
- mov r1, r1, lsl r2 @ 0xF << (cpu * 4)
- str r1, [r3] @ invalidate SCU tags for CPU
+ mov r6, lr
+ bl tegra_cpu_exit_coherency
/* Powergate this CPU. */
mov r0, #TEGRA_POWER_HOTPLUG_SHUTDOWN
bl tegra3_cpu_reset
- mov pc, lr @ should never get here
+ mov pc, r6 @ should never get here
ENDPROC(tegra3_hotplug_shutdown)
#endif
@@ -140,6 +128,7 @@ ENDPROC(tegra3_cpu_reset)
ENTRY(tegra3_sleep_cpu)
mov r3, lr @ set resume address to lr
bl tegra_cpu_save
+ bl tegra_cpu_exit_coherency
mov32 r1, tegra3_tear_down_cpu
add r1, r1, r0