diff options
author | Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> | 2010-04-03 14:10:45 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-04-14 11:08:10 -0400 |
commit | 8e797a7e4f588fb3b9cfe9860b00dcd3b14f8b60 (patch) | |
tree | 57ac8c456499c5438274a99617e50ea4e46ac8a1 | |
parent | b102c01faed5e0083a4e6d29a2d61f6b57716e94 (diff) |
ARM: 6027/1: ux500: enable l2x0 support
This enables the l2x0 support and ensures that the secondary
CPU can see the page table and secondary data at this point.
Signed-off-by: srinidhi kasagar <srinidhi.kasagar@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/mach-ux500/cpu-u8500.c | 17 | ||||
-rw-r--r-- | arch/arm/mach-ux500/platsmp.c | 3 | ||||
-rw-r--r-- | arch/arm/mm/Kconfig | 3 |
3 files changed, 21 insertions, 2 deletions
diff --git a/arch/arm/mach-ux500/cpu-u8500.c b/arch/arm/mach-ux500/cpu-u8500.c index 5fb44661adaf..979f1c32ad09 100644 --- a/arch/arm/mach-ux500/cpu-u8500.c +++ b/arch/arm/mach-ux500/cpu-u8500.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/localtimer.h> | 20 | #include <asm/localtimer.h> |
21 | #include <asm/hardware/gic.h> | 21 | #include <asm/hardware/gic.h> |
22 | #include <asm/mach/map.h> | 22 | #include <asm/mach/map.h> |
23 | #include <asm/hardware/cache-l2x0.h> | ||
23 | #include <plat/mtu.h> | 24 | #include <plat/mtu.h> |
24 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
25 | #include <mach/setup.h> | 26 | #include <mach/setup.h> |
@@ -127,6 +128,7 @@ static struct map_desc u8500_io_desc[] __initdata = { | |||
127 | __IO_DEV_DESC(U8500_GPIO2_BASE, SZ_4K), | 128 | __IO_DEV_DESC(U8500_GPIO2_BASE, SZ_4K), |
128 | __IO_DEV_DESC(U8500_GPIO3_BASE, SZ_4K), | 129 | __IO_DEV_DESC(U8500_GPIO3_BASE, SZ_4K), |
129 | __IO_DEV_DESC(U8500_GPIO5_BASE, SZ_4K), | 130 | __IO_DEV_DESC(U8500_GPIO5_BASE, SZ_4K), |
131 | __IO_DEV_DESC(U8500_L2CC_BASE, SZ_4K), | ||
130 | }; | 132 | }; |
131 | 133 | ||
132 | static struct map_desc u8500ed_io_desc[] __initdata = { | 134 | static struct map_desc u8500ed_io_desc[] __initdata = { |
@@ -183,3 +185,18 @@ static void __init u8500_timer_init(void) | |||
183 | struct sys_timer u8500_timer = { | 185 | struct sys_timer u8500_timer = { |
184 | .init = u8500_timer_init, | 186 | .init = u8500_timer_init, |
185 | }; | 187 | }; |
188 | |||
189 | #ifdef CONFIG_CACHE_L2X0 | ||
190 | static int u8500_l2x0_init(void) | ||
191 | { | ||
192 | void __iomem *l2x0_base; | ||
193 | |||
194 | l2x0_base = __io_address(U8500_L2CC_BASE); | ||
195 | |||
196 | /* 64KB way size, 8 way associativity, force WA */ | ||
197 | l2x0_init(l2x0_base, 0x3e060000, 0xc0000fff); | ||
198 | |||
199 | return 0; | ||
200 | } | ||
201 | early_initcall(u8500_l2x0_init); | ||
202 | #endif | ||
diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c index 8dfe7ca245d8..76dd9354bd18 100644 --- a/arch/arm/mach-ux500/platsmp.c +++ b/arch/arm/mach-ux500/platsmp.c | |||
@@ -75,7 +75,8 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) | |||
75 | * that it has been released by resetting pen_release. | 75 | * that it has been released by resetting pen_release. |
76 | */ | 76 | */ |
77 | pen_release = cpu; | 77 | pen_release = cpu; |
78 | flush_cache_all(); | 78 | __cpuc_flush_dcache_area((void *)&pen_release, sizeof(pen_release)); |
79 | outer_clean_range(__pa(&pen_release), __pa(&pen_release) + 1); | ||
79 | 80 | ||
80 | timeout = jiffies + (1 * HZ); | 81 | timeout = jiffies + (1 * HZ); |
81 | while (time_before(jiffies, timeout)) { | 82 | while (time_before(jiffies, timeout)) { |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index c4ed9f93f646..22c1c839306a 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -754,7 +754,8 @@ config CACHE_FEROCEON_L2_WRITETHROUGH | |||
754 | config CACHE_L2X0 | 754 | config CACHE_L2X0 |
755 | bool "Enable the L2x0 outer cache controller" | 755 | bool "Enable the L2x0 outer cache controller" |
756 | depends on REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176 || \ | 756 | depends on REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176 || \ |
757 | REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31 || MACH_REALVIEW_PBX || ARCH_NOMADIK || ARCH_OMAP4 | 757 | REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31 || MACH_REALVIEW_PBX || \ |
758 | ARCH_NOMADIK || ARCH_OMAP4 || ARCH_U8500 | ||
758 | default y | 759 | default y |
759 | select OUTER_CACHE | 760 | select OUTER_CACHE |
760 | help | 761 | help |