diff options
Diffstat (limited to 'arch/arm/mach-tegra/sleep.h')
-rw-r--r-- | arch/arm/mach-tegra/sleep.h | 25 |
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 | ||
75 | void tegra30_hotplug_init(void); | ||
76 | #else | ||
77 | static inline void tegra30_hotplug_init(void) {} | ||
78 | #endif | ||
79 | |||
55 | #endif | 80 | #endif |
56 | #endif | 81 | #endif |