aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSrinidhi Kasagar <srinidhi.kasagar@stericsson.com>2010-04-03 14:10:45 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-04-14 11:08:10 -0400
commit8e797a7e4f588fb3b9cfe9860b00dcd3b14f8b60 (patch)
tree57ac8c456499c5438274a99617e50ea4e46ac8a1 /arch
parentb102c01faed5e0083a4e6d29a2d61f6b57716e94 (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>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-ux500/cpu-u8500.c17
-rw-r--r--arch/arm/mach-ux500/platsmp.c3
-rw-r--r--arch/arm/mm/Kconfig3
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
132static struct map_desc u8500ed_io_desc[] __initdata = { 134static struct map_desc u8500ed_io_desc[] __initdata = {
@@ -183,3 +185,18 @@ static void __init u8500_timer_init(void)
183struct sys_timer u8500_timer = { 185struct sys_timer u8500_timer = {
184 .init = u8500_timer_init, 186 .init = u8500_timer_init,
185}; 187};
188
189#ifdef CONFIG_CACHE_L2X0
190static 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}
201early_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
754config CACHE_L2X0 754config 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