aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-realview
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-06-05 18:57:04 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-06-05 18:57:04 -0400
commiteb3d3ec567e868c8a3bfbfdfc9465ffd52983d11 (patch)
tree75acf38b8d73cd281e5ce4dcc941faf48e244b98 /arch/arm/mach-realview
parentc3c55a07203947f72afa50a3218460b27307c47d (diff)
parentbd63ce27d9d62bc40a962b991cbbbe4f0dc913d2 (diff)
Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into next
Pull ARM updates from Russell King: - Major clean-up of the L2 cache support code. The existing mess was becoming rather unmaintainable through all the additions that others have done over time. This turns it into a much nicer structure, and implements a few performance improvements as well. - Clean up some of the CP15 control register tweaks for alignment support, moving some code and data into alignment.c - DMA properties for ARM, from Santosh and reviewed by DT people. This adds DT properties to specify bus translations we can't discover automatically, and to indicate whether devices are coherent. - Hibernation support for ARM - Make ftrace work with read-only text in modules - add suspend support for PJ4B CPUs - rework interrupt masking for undefined instruction handling, which allows us to enable interrupts earlier in the handling of these exceptions. - support for big endian page tables - fix stacktrace support to exclude stacktrace functions from the trace, and add save_stack_trace_regs() implementation so that kprobes can record stack traces. - Add support for the Cortex-A17 CPU. - Remove last vestiges of ARM710 support. - Removal of ARM "meminfo" structure, finally converting us solely to memblock to handle the early memory initialisation. * 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: (142 commits) ARM: ensure C page table setup code follows assembly code (part II) ARM: ensure C page table setup code follows assembly code ARM: consolidate last remaining open-coded alignment trap enable ARM: remove global cr_no_alignment ARM: remove CPU_CP15 conditional from alignment.c ARM: remove unused adjust_cr() function ARM: move "noalign" command line option to alignment.c ARM: provide common method to clear bits in CPU control register ARM: 8025/1: Get rid of meminfo ARM: 8060/1: mm: allow sub-architectures to override PCI I/O memory type ARM: 8066/1: correction for ARM patch 8031/2 ARM: 8049/1: ftrace/add save_stack_trace_regs() implementation ARM: 8065/1: remove last use of CONFIG_CPU_ARM710 ARM: 8062/1: Modify ldrt fixup handler to re-execute the userspace instruction ARM: 8047/1: rwsem: use asm-generic rwsem implementation ARM: l2c: trial at enabling some Cortex-A9 optimisations ARM: l2c: add warnings for stuff modifying aux_ctrl register values ARM: l2c: print a warning with L2C-310 caches if the cache size is modified ARM: l2c: remove old .set_debug method ARM: l2c: kill L2X0_AUX_CTRL_MASK before anyone else makes use of this ...
Diffstat (limited to 'arch/arm/mach-realview')
-rw-r--r--arch/arm/mach-realview/core.c11
-rw-r--r--arch/arm/mach-realview/core.h3
-rw-r--r--arch/arm/mach-realview/realview_eb.c9
-rw-r--r--arch/arm/mach-realview/realview_pb1176.c16
-rw-r--r--arch/arm/mach-realview/realview_pb11mp.c9
-rw-r--r--arch/arm/mach-realview/realview_pbx.c21
6 files changed, 38 insertions, 31 deletions
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c
index 960b8dd78c44..8c1b39a0caa0 100644
--- a/arch/arm/mach-realview/core.c
+++ b/arch/arm/mach-realview/core.c
@@ -31,6 +31,7 @@
31#include <linux/amba/mmci.h> 31#include <linux/amba/mmci.h>
32#include <linux/gfp.h> 32#include <linux/gfp.h>
33#include <linux/mtd/physmap.h> 33#include <linux/mtd/physmap.h>
34#include <linux/memblock.h>
34 35
35#include <mach/hardware.h> 36#include <mach/hardware.h>
36#include <asm/irq.h> 37#include <asm/irq.h>
@@ -385,19 +386,15 @@ void __init realview_timer_init(unsigned int timer_irq)
385/* 386/*
386 * Setup the memory banks. 387 * Setup the memory banks.
387 */ 388 */
388void realview_fixup(struct tag *tags, char **from, struct meminfo *meminfo) 389void realview_fixup(struct tag *tags, char **from)
389{ 390{
390 /* 391 /*
391 * Most RealView platforms have 512MB contiguous RAM at 0x70000000. 392 * Most RealView platforms have 512MB contiguous RAM at 0x70000000.
392 * Half of this is mirrored at 0. 393 * Half of this is mirrored at 0.
393 */ 394 */
394#ifdef CONFIG_REALVIEW_HIGH_PHYS_OFFSET 395#ifdef CONFIG_REALVIEW_HIGH_PHYS_OFFSET
395 meminfo->bank[0].start = 0x70000000; 396 memblock_add(0x70000000, SZ_512M);
396 meminfo->bank[0].size = SZ_512M;
397 meminfo->nr_banks = 1;
398#else 397#else
399 meminfo->bank[0].start = 0; 398 memblock_add(0, SZ_256M);
400 meminfo->bank[0].size = SZ_256M;
401 meminfo->nr_banks = 1;
402#endif 399#endif
403} 400}
diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h
index 13dc830ef469..868ece221978 100644
--- a/arch/arm/mach-realview/core.h
+++ b/arch/arm/mach-realview/core.h
@@ -52,8 +52,7 @@ extern int realview_flash_register(struct resource *res, u32 num);
52extern int realview_eth_register(const char *name, struct resource *res); 52extern int realview_eth_register(const char *name, struct resource *res);
53extern int realview_usb_register(struct resource *res); 53extern int realview_usb_register(struct resource *res);
54extern void realview_init_early(void); 54extern void realview_init_early(void);
55extern void realview_fixup(struct tag *tags, char **from, 55extern void realview_fixup(struct tag *tags, char **from);
56 struct meminfo *meminfo);
57 56
58extern struct smp_operations realview_smp_ops; 57extern struct smp_operations realview_smp_ops;
59extern void realview_cpu_die(unsigned int cpu); 58extern void realview_cpu_die(unsigned int cpu);
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c
index 6bb070e80128..739d4f113097 100644
--- a/arch/arm/mach-realview/realview_eb.c
+++ b/arch/arm/mach-realview/realview_eb.c
@@ -442,8 +442,13 @@ static void __init realview_eb_init(void)
442 realview_eb11mp_fixup(); 442 realview_eb11mp_fixup();
443 443
444#ifdef CONFIG_CACHE_L2X0 444#ifdef CONFIG_CACHE_L2X0
445 /* 1MB (128KB/way), 8-way associativity, evmon/parity/share enabled 445 /*
446 * Bits: .... ...0 0111 1001 0000 .... .... .... */ 446 * The PL220 needs to be manually configured as the hardware
447 * doesn't report the correct sizes.
448 * 1MB (128KB/way), 8-way associativity, event monitor and
449 * parity enabled, ignore share bit, no force write allocate
450 * Bits: .... ...0 0111 1001 0000 .... .... ....
451 */
447 l2x0_init(__io_address(REALVIEW_EB11MP_L220_BASE), 0x00790000, 0xfe000fff); 452 l2x0_init(__io_address(REALVIEW_EB11MP_L220_BASE), 0x00790000, 0xfe000fff);
448#endif 453#endif
449 platform_device_register(&pmu_device); 454 platform_device_register(&pmu_device);
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c
index 173f2c15de49..b0e0dcaed944 100644
--- a/arch/arm/mach-realview/realview_pb1176.c
+++ b/arch/arm/mach-realview/realview_pb1176.c
@@ -32,6 +32,7 @@
32#include <linux/irqchip/arm-gic.h> 32#include <linux/irqchip/arm-gic.h>
33#include <linux/platform_data/clk-realview.h> 33#include <linux/platform_data/clk-realview.h>
34#include <linux/reboot.h> 34#include <linux/reboot.h>
35#include <linux/memblock.h>
35 36
36#include <mach/hardware.h> 37#include <mach/hardware.h>
37#include <asm/irq.h> 38#include <asm/irq.h>
@@ -339,15 +340,12 @@ static void realview_pb1176_restart(enum reboot_mode mode, const char *cmd)
339 dsb(); 340 dsb();
340} 341}
341 342
342static void realview_pb1176_fixup(struct tag *tags, char **from, 343static void realview_pb1176_fixup(struct tag *tags, char **from)
343 struct meminfo *meminfo)
344{ 344{
345 /* 345 /*
346 * RealView PB1176 only has 128MB of RAM mapped at 0. 346 * RealView PB1176 only has 128MB of RAM mapped at 0.
347 */ 347 */
348 meminfo->bank[0].start = 0; 348 memblock_add(0, SZ_128M);
349 meminfo->bank[0].size = SZ_128M;
350 meminfo->nr_banks = 1;
351} 349}
352 350
353static void __init realview_pb1176_init(void) 351static void __init realview_pb1176_init(void)
@@ -355,7 +353,13 @@ static void __init realview_pb1176_init(void)
355 int i; 353 int i;
356 354
357#ifdef CONFIG_CACHE_L2X0 355#ifdef CONFIG_CACHE_L2X0
358 /* 128Kb (16Kb/way) 8-way associativity. evmon/parity/share enabled. */ 356 /*
357 * The PL220 needs to be manually configured as the hardware
358 * doesn't report the correct sizes.
359 * 128kB (16kB/way), 8-way associativity, event monitor and
360 * parity enabled, ignore share bit, no force write allocate
361 * Bits: .... ...0 0111 0011 0000 .... .... ....
362 */
359 l2x0_init(__io_address(REALVIEW_PB1176_L220_BASE), 0x00730000, 0xfe000fff); 363 l2x0_init(__io_address(REALVIEW_PB1176_L220_BASE), 0x00730000, 0xfe000fff);
360#endif 364#endif
361 365
diff --git a/arch/arm/mach-realview/realview_pb11mp.c b/arch/arm/mach-realview/realview_pb11mp.c
index bde7e6b1fd44..47bf55fdbf27 100644
--- a/arch/arm/mach-realview/realview_pb11mp.c
+++ b/arch/arm/mach-realview/realview_pb11mp.c
@@ -337,8 +337,13 @@ static void __init realview_pb11mp_init(void)
337 int i; 337 int i;
338 338
339#ifdef CONFIG_CACHE_L2X0 339#ifdef CONFIG_CACHE_L2X0
340 /* 1MB (128KB/way), 8-way associativity, evmon/parity/share enabled 340 /*
341 * Bits: .... ...0 0111 1001 0000 .... .... .... */ 341 * The PL220 needs to be manually configured as the hardware
342 * doesn't report the correct sizes.
343 * 1MB (128KB/way), 8-way associativity, event monitor and
344 * parity enabled, ignore share bit, no force write allocate
345 * Bits: .... ...0 0111 1001 0000 .... .... ....
346 */
342 l2x0_init(__io_address(REALVIEW_TC11MP_L220_BASE), 0x00790000, 0xfe000fff); 347 l2x0_init(__io_address(REALVIEW_TC11MP_L220_BASE), 0x00790000, 0xfe000fff);
343#endif 348#endif
344 349
diff --git a/arch/arm/mach-realview/realview_pbx.c b/arch/arm/mach-realview/realview_pbx.c
index 72c96caebefa..d89eb4023467 100644
--- a/arch/arm/mach-realview/realview_pbx.c
+++ b/arch/arm/mach-realview/realview_pbx.c
@@ -29,6 +29,7 @@
29#include <linux/irqchip/arm-gic.h> 29#include <linux/irqchip/arm-gic.h>
30#include <linux/platform_data/clk-realview.h> 30#include <linux/platform_data/clk-realview.h>
31#include <linux/reboot.h> 31#include <linux/reboot.h>
32#include <linux/memblock.h>
32 33
33#include <asm/irq.h> 34#include <asm/irq.h>
34#include <asm/mach-types.h> 35#include <asm/mach-types.h>
@@ -325,23 +326,19 @@ static void __init realview_pbx_timer_init(void)
325 realview_pbx_twd_init(); 326 realview_pbx_twd_init();
326} 327}
327 328
328static void realview_pbx_fixup(struct tag *tags, char **from, 329static void realview_pbx_fixup(struct tag *tags, char **from)
329 struct meminfo *meminfo)
330{ 330{
331#ifdef CONFIG_SPARSEMEM 331#ifdef CONFIG_SPARSEMEM
332 /* 332 /*
333 * Memory configuration with SPARSEMEM enabled on RealView PBX (see 333 * Memory configuration with SPARSEMEM enabled on RealView PBX (see
334 * asm/mach/memory.h for more information). 334 * asm/mach/memory.h for more information).
335 */ 335 */
336 meminfo->bank[0].start = 0; 336
337 meminfo->bank[0].size = SZ_256M; 337 memblock_add(0, SZ_256M);
338 meminfo->bank[1].start = 0x20000000; 338 memblock_add(0x20000000, SZ_512M);
339 meminfo->bank[1].size = SZ_512M; 339 memblock_add(0x80000000, SZ_256M);
340 meminfo->bank[2].start = 0x80000000;
341 meminfo->bank[2].size = SZ_256M;
342 meminfo->nr_banks = 3;
343#else 340#else
344 realview_fixup(tags, from, meminfo); 341 realview_fixup(tags, from);
345#endif 342#endif
346} 343}
347 344
@@ -370,8 +367,8 @@ static void __init realview_pbx_init(void)
370 __io_address(REALVIEW_PBX_TILE_L220_BASE); 367 __io_address(REALVIEW_PBX_TILE_L220_BASE);
371 368
372 /* set RAM latencies to 1 cycle for eASIC */ 369 /* set RAM latencies to 1 cycle for eASIC */
373 writel(0, l2x0_base + L2X0_TAG_LATENCY_CTRL); 370 writel(0, l2x0_base + L310_TAG_LATENCY_CTRL);
374 writel(0, l2x0_base + L2X0_DATA_LATENCY_CTRL); 371 writel(0, l2x0_base + L310_DATA_LATENCY_CTRL);
375 372
376 /* 16KB way size, 8-way associativity, parity disabled 373 /* 16KB way size, 8-way associativity, parity disabled
377 * Bits: .. 0 0 0 0 1 00 1 0 1 001 0 000 0 .... .... .... */ 374 * Bits: .. 0 0 0 0 1 00 1 0 1 001 0 000 0 .... .... .... */