aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-tegra/sleep.h
diff options
context:
space:
mode:
authorJoseph Lo <josephl@nvidia.com>2013-05-20 06:39:25 -0400
committerStephen Warren <swarren@nvidia.com>2013-05-22 17:19:22 -0400
commitf6d06f33664756cfa8bce3494e586be32b213bdd (patch)
treedaeb1a5839ece049ef3159cf07c5a2b60647a9a9 /arch/arm/mach-tegra/sleep.h
parent4b3e2edacf4344cdf7863b6fae64ccb8b02fe9f5 (diff)
ARM: tegra: skip SCU and PL310 code when CPU is not Cortex-A9
For supporting single image on all Tegra series, we need to skip some HW support code for Cortex-A9 only. Signed-off-by: Joseph Lo <josephl@nvidia.com> Signed-off-by: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/sleep.h')
-rw-r--r--arch/arm/mach-tegra/sleep.h24
1 files changed, 18 insertions, 6 deletions
diff --git a/arch/arm/mach-tegra/sleep.h b/arch/arm/mach-tegra/sleep.h
index f9f2164a2fc7..2269c0d6fa67 100644
--- a/arch/arm/mach-tegra/sleep.h
+++ b/arch/arm/mach-tegra/sleep.h
@@ -70,19 +70,31 @@
70 movt \reg, #:upper16:\val 70 movt \reg, #:upper16:\val
71.endm 71.endm
72 72
73/* Marco to check CPU part num */
74.macro check_cpu_part_num part_num, tmp1, tmp2
75 mrc p15, 0, \tmp1, c0, c0, 0
76 ubfx \tmp1, \tmp1, #4, #12
77 mov32 \tmp2, \part_num
78 cmp \tmp1, \tmp2
79.endm
80
73/* Macro to exit SMP coherency. */ 81/* Macro to exit SMP coherency. */
74.macro exit_smp, tmp1, tmp2 82.macro exit_smp, tmp1, tmp2
75 mrc p15, 0, \tmp1, c1, c0, 1 @ ACTLR 83 mrc p15, 0, \tmp1, c1, c0, 1 @ ACTLR
76 bic \tmp1, \tmp1, #(1<<6) | (1<<0) @ clear ACTLR.SMP | ACTLR.FW 84 bic \tmp1, \tmp1, #(1<<6) | (1<<0) @ clear ACTLR.SMP | ACTLR.FW
77 mcr p15, 0, \tmp1, c1, c0, 1 @ ACTLR 85 mcr p15, 0, \tmp1, c1, c0, 1 @ ACTLR
78 isb 86 isb
79 cpu_id \tmp1 87#ifdef CONFIG_HAVE_ARM_SCU
80 mov \tmp1, \tmp1, lsl #2 88 check_cpu_part_num 0xc09, \tmp1, \tmp2
81 mov \tmp2, #0xf 89 mrceq p15, 0, \tmp1, c0, c0, 5
82 mov \tmp2, \tmp2, lsl \tmp1 90 andeq \tmp1, \tmp1, #0xF
83 mov32 \tmp1, TEGRA_ARM_PERIF_VIRT + 0xC 91 moveq \tmp1, \tmp1, lsl #2
84 str \tmp2, [\tmp1] @ invalidate SCU tags for CPU 92 moveq \tmp2, #0xf
93 moveq \tmp2, \tmp2, lsl \tmp1
94 ldreq \tmp1, =(TEGRA_ARM_PERIF_VIRT + 0xC)
95 streq \tmp2, [\tmp1] @ invalidate SCU tags for CPU
85 dsb 96 dsb
97#endif
86.endm 98.endm
87 99
88/* Macro to check Tegra revision */ 100/* Macro to check Tegra revision */