提交 8e797a7e 编写于 作者: S Srinidhi Kasagar 提交者: Russell King

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: Nsrinidhi kasagar <srinidhi.kasagar@stericsson.com>
Acked-by: NLinus Walleij <linus.walleij@stericsson.com>
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 b102c01f
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <asm/localtimer.h> #include <asm/localtimer.h>
#include <asm/hardware/gic.h> #include <asm/hardware/gic.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <asm/hardware/cache-l2x0.h>
#include <plat/mtu.h> #include <plat/mtu.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/setup.h> #include <mach/setup.h>
...@@ -127,6 +128,7 @@ static struct map_desc u8500_io_desc[] __initdata = { ...@@ -127,6 +128,7 @@ static struct map_desc u8500_io_desc[] __initdata = {
__IO_DEV_DESC(U8500_GPIO2_BASE, SZ_4K), __IO_DEV_DESC(U8500_GPIO2_BASE, SZ_4K),
__IO_DEV_DESC(U8500_GPIO3_BASE, SZ_4K), __IO_DEV_DESC(U8500_GPIO3_BASE, SZ_4K),
__IO_DEV_DESC(U8500_GPIO5_BASE, SZ_4K), __IO_DEV_DESC(U8500_GPIO5_BASE, SZ_4K),
__IO_DEV_DESC(U8500_L2CC_BASE, SZ_4K),
}; };
static struct map_desc u8500ed_io_desc[] __initdata = { static struct map_desc u8500ed_io_desc[] __initdata = {
...@@ -183,3 +185,18 @@ static void __init u8500_timer_init(void) ...@@ -183,3 +185,18 @@ static void __init u8500_timer_init(void)
struct sys_timer u8500_timer = { struct sys_timer u8500_timer = {
.init = u8500_timer_init, .init = u8500_timer_init,
}; };
#ifdef CONFIG_CACHE_L2X0
static int u8500_l2x0_init(void)
{
void __iomem *l2x0_base;
l2x0_base = __io_address(U8500_L2CC_BASE);
/* 64KB way size, 8 way associativity, force WA */
l2x0_init(l2x0_base, 0x3e060000, 0xc0000fff);
return 0;
}
early_initcall(u8500_l2x0_init);
#endif
...@@ -75,7 +75,8 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -75,7 +75,8 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* that it has been released by resetting pen_release. * that it has been released by resetting pen_release.
*/ */
pen_release = cpu; pen_release = cpu;
flush_cache_all(); __cpuc_flush_dcache_area((void *)&pen_release, sizeof(pen_release));
outer_clean_range(__pa(&pen_release), __pa(&pen_release) + 1);
timeout = jiffies + (1 * HZ); timeout = jiffies + (1 * HZ);
while (time_before(jiffies, timeout)) { while (time_before(jiffies, timeout)) {
......
...@@ -754,7 +754,8 @@ config CACHE_FEROCEON_L2_WRITETHROUGH ...@@ -754,7 +754,8 @@ config CACHE_FEROCEON_L2_WRITETHROUGH
config CACHE_L2X0 config CACHE_L2X0
bool "Enable the L2x0 outer cache controller" bool "Enable the L2x0 outer cache controller"
depends on REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176 || \ depends on REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176 || \
REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31 || MACH_REALVIEW_PBX || ARCH_NOMADIK || ARCH_OMAP4 REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31 || MACH_REALVIEW_PBX || \
ARCH_NOMADIK || ARCH_OMAP4 || ARCH_U8500
default y default y
select OUTER_CACHE select OUTER_CACHE
help help
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册