diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-05 18:57:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-05 18:57:04 -0400 |
commit | eb3d3ec567e868c8a3bfbfdfc9465ffd52983d11 (patch) | |
tree | 75acf38b8d73cd281e5ce4dcc941faf48e244b98 /arch/arm/mach-realview | |
parent | c3c55a07203947f72afa50a3218460b27307c47d (diff) | |
parent | bd63ce27d9d62bc40a962b991cbbbe4f0dc913d2 (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.c | 11 | ||||
-rw-r--r-- | arch/arm/mach-realview/core.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-realview/realview_eb.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-realview/realview_pb1176.c | 16 | ||||
-rw-r--r-- | arch/arm/mach-realview/realview_pb11mp.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-realview/realview_pbx.c | 21 |
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 | */ |
388 | void realview_fixup(struct tag *tags, char **from, struct meminfo *meminfo) | 389 | void 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); | |||
52 | extern int realview_eth_register(const char *name, struct resource *res); | 52 | extern int realview_eth_register(const char *name, struct resource *res); |
53 | extern int realview_usb_register(struct resource *res); | 53 | extern int realview_usb_register(struct resource *res); |
54 | extern void realview_init_early(void); | 54 | extern void realview_init_early(void); |
55 | extern void realview_fixup(struct tag *tags, char **from, | 55 | extern void realview_fixup(struct tag *tags, char **from); |
56 | struct meminfo *meminfo); | ||
57 | 56 | ||
58 | extern struct smp_operations realview_smp_ops; | 57 | extern struct smp_operations realview_smp_ops; |
59 | extern void realview_cpu_die(unsigned int cpu); | 58 | extern 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 | ||
342 | static void realview_pb1176_fixup(struct tag *tags, char **from, | 343 | static 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 | ||
353 | static void __init realview_pb1176_init(void) | 351 | static 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 | ||
328 | static void realview_pbx_fixup(struct tag *tags, char **from, | 329 | static 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 .... .... .... */ |