diff options
Diffstat (limited to 'arch/arm/mach-realview/realview_eb.c')
-rw-r--r-- | arch/arm/mach-realview/realview_eb.c | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c index 9741b4d3c9cf..3dba666151db 100644 --- a/arch/arm/mach-realview/realview_eb.c +++ b/arch/arm/mach-realview/realview_eb.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
32 | #include <asm/hardware/gic.h> | 32 | #include <asm/hardware/gic.h> |
33 | #include <asm/hardware/icst307.h> | 33 | #include <asm/hardware/icst307.h> |
34 | #include <asm/hardware/cache-l2x0.h> | ||
34 | 35 | ||
35 | #include <asm/mach/arch.h> | 36 | #include <asm/mach/arch.h> |
36 | #include <asm/mach/map.h> | 37 | #include <asm/mach/map.h> |
@@ -57,7 +58,26 @@ static struct map_desc realview_eb_io_desc[] __initdata = { | |||
57 | .pfn = __phys_to_pfn(REALVIEW_GIC_DIST_BASE), | 58 | .pfn = __phys_to_pfn(REALVIEW_GIC_DIST_BASE), |
58 | .length = SZ_4K, | 59 | .length = SZ_4K, |
59 | .type = MT_DEVICE, | 60 | .type = MT_DEVICE, |
61 | }, | ||
62 | #ifdef CONFIG_REALVIEW_MPCORE | ||
63 | { | ||
64 | .virtual = IO_ADDRESS(REALVIEW_GIC1_CPU_BASE), | ||
65 | .pfn = __phys_to_pfn(REALVIEW_GIC1_CPU_BASE), | ||
66 | .length = SZ_4K, | ||
67 | .type = MT_DEVICE, | ||
68 | }, { | ||
69 | .virtual = IO_ADDRESS(REALVIEW_GIC1_DIST_BASE), | ||
70 | .pfn = __phys_to_pfn(REALVIEW_GIC1_DIST_BASE), | ||
71 | .length = SZ_4K, | ||
72 | .type = MT_DEVICE, | ||
60 | }, { | 73 | }, { |
74 | .virtual = IO_ADDRESS(REALVIEW_MPCORE_L220_BASE), | ||
75 | .pfn = __phys_to_pfn(REALVIEW_MPCORE_L220_BASE), | ||
76 | .length = SZ_8K, | ||
77 | .type = MT_DEVICE, | ||
78 | }, | ||
79 | #endif | ||
80 | { | ||
61 | .virtual = IO_ADDRESS(REALVIEW_SCTL_BASE), | 81 | .virtual = IO_ADDRESS(REALVIEW_SCTL_BASE), |
62 | .pfn = __phys_to_pfn(REALVIEW_SCTL_BASE), | 82 | .pfn = __phys_to_pfn(REALVIEW_SCTL_BASE), |
63 | .length = SZ_4K, | 83 | .length = SZ_4K, |
@@ -138,19 +158,29 @@ static void __init gic_init_irq(void) | |||
138 | #ifdef CONFIG_REALVIEW_MPCORE | 158 | #ifdef CONFIG_REALVIEW_MPCORE |
139 | unsigned int pldctrl; | 159 | unsigned int pldctrl; |
140 | writel(0x0000a05f, __io_address(REALVIEW_SYS_LOCK)); | 160 | writel(0x0000a05f, __io_address(REALVIEW_SYS_LOCK)); |
141 | pldctrl = readl(__io_address(REALVIEW_SYS_BASE) + 0xd8); | 161 | pldctrl = readl(__io_address(REALVIEW_SYS_BASE) + REALVIEW_MPCORE_SYS_PLD_CTRL1); |
142 | pldctrl |= 0x00800000; /* New irq mode */ | 162 | pldctrl |= 0x00800000; /* New irq mode */ |
143 | writel(pldctrl, __io_address(REALVIEW_SYS_BASE) + 0xd8); | 163 | writel(pldctrl, __io_address(REALVIEW_SYS_BASE) + REALVIEW_MPCORE_SYS_PLD_CTRL1); |
144 | writel(0x00000000, __io_address(REALVIEW_SYS_LOCK)); | 164 | writel(0x00000000, __io_address(REALVIEW_SYS_LOCK)); |
145 | #endif | 165 | #endif |
146 | gic_dist_init(__io_address(REALVIEW_GIC_DIST_BASE)); | 166 | gic_dist_init(0, __io_address(REALVIEW_GIC_DIST_BASE), 29); |
147 | gic_cpu_init(__io_address(REALVIEW_GIC_CPU_BASE)); | 167 | gic_cpu_init(0, __io_address(REALVIEW_GIC_CPU_BASE)); |
168 | #ifdef CONFIG_REALVIEW_MPCORE | ||
169 | gic_dist_init(1, __io_address(REALVIEW_GIC1_DIST_BASE), 64); | ||
170 | gic_cpu_init(1, __io_address(REALVIEW_GIC1_CPU_BASE)); | ||
171 | gic_cascade_irq(1, IRQ_EB_IRQ1); | ||
172 | #endif | ||
148 | } | 173 | } |
149 | 174 | ||
150 | static void __init realview_eb_init(void) | 175 | static void __init realview_eb_init(void) |
151 | { | 176 | { |
152 | int i; | 177 | int i; |
153 | 178 | ||
179 | #ifdef CONFIG_REALVIEW_MPCORE | ||
180 | /* 1MB (128KB/way), 8-way associativity, evmon/parity/share enabled | ||
181 | * Bits: .... ...0 0111 1001 0000 .... .... .... */ | ||
182 | l2x0_init(__io_address(REALVIEW_MPCORE_L220_BASE), 0x00790000, 0xfe000fff); | ||
183 | #endif | ||
154 | clk_register(&realview_clcd_clk); | 184 | clk_register(&realview_clcd_clk); |
155 | 185 | ||
156 | platform_device_register(&realview_flash_device); | 186 | platform_device_register(&realview_flash_device); |