aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-tegra/sleep.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-tegra/sleep.h')
-rw-r--r--arch/arm/mach-tegra/sleep.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/sleep.h b/arch/arm/mach-tegra/sleep.h
index d0c7a8b1c885..0f047eb3ca2e 100644
--- a/arch/arm/mach-tegra/sleep.h
+++ b/arch/arm/mach-tegra/sleep.h
@@ -19,6 +19,8 @@
19 19
20#include <mach/iomap.h> 20#include <mach/iomap.h>
21 21
22#define TEGRA_ARM_PERIF_VIRT (TEGRA_ARM_PERIF_BASE - IO_CPU_PHYS \
23 + IO_CPU_VIRT)
22#define TEGRA_FLOW_CTRL_VIRT (TEGRA_FLOW_CTRL_BASE - IO_PPSB_PHYS \ 24#define TEGRA_FLOW_CTRL_VIRT (TEGRA_FLOW_CTRL_BASE - IO_PPSB_PHYS \
23 + IO_PPSB_VIRT) 25 + IO_PPSB_VIRT)
24 26
@@ -52,5 +54,28 @@
52 movw \reg, #:lower16:\val 54 movw \reg, #:lower16:\val
53 movt \reg, #:upper16:\val 55 movt \reg, #:upper16:\val
54.endm 56.endm
57
58/* Macro to exit SMP coherency. */
59.macro exit_smp, tmp1, tmp2
60 mrc p15, 0, \tmp1, c1, c0, 1 @ ACTLR
61 bic \tmp1, \tmp1, #(1<<6) | (1<<0) @ clear ACTLR.SMP | ACTLR.FW
62 mcr p15, 0, \tmp1, c1, c0, 1 @ ACTLR
63 isb
64 cpu_id \tmp1
65 mov \tmp1, \tmp1, lsl #2
66 mov \tmp2, #0xf
67 mov \tmp2, \tmp2, lsl \tmp1
68 mov32 \tmp1, TEGRA_ARM_PERIF_VIRT + 0xC
69 str \tmp2, [\tmp1] @ invalidate SCU tags for CPU
70 dsb
71.endm
72#else
73
74#ifdef CONFIG_HOTPLUG_CPU
75void tegra30_hotplug_init(void);
76#else
77static inline void tegra30_hotplug_init(void) {}
78#endif
79
55#endif 80#endif
56#endif 81#endif