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-vexpress/ct-ca9x4.c | |
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-vexpress/ct-ca9x4.c')
-rw-r--r-- | arch/arm/mach-vexpress/ct-ca9x4.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/arch/arm/mach-vexpress/ct-ca9x4.c b/arch/arm/mach-vexpress/ct-ca9x4.c index 494d70bfddad..86150d7a2e7d 100644 --- a/arch/arm/mach-vexpress/ct-ca9x4.c +++ b/arch/arm/mach-vexpress/ct-ca9x4.c | |||
@@ -45,6 +45,23 @@ static void __init ct_ca9x4_map_io(void) | |||
45 | iotable_init(ct_ca9x4_io_desc, ARRAY_SIZE(ct_ca9x4_io_desc)); | 45 | iotable_init(ct_ca9x4_io_desc, ARRAY_SIZE(ct_ca9x4_io_desc)); |
46 | } | 46 | } |
47 | 47 | ||
48 | static void __init ca9x4_l2_init(void) | ||
49 | { | ||
50 | #ifdef CONFIG_CACHE_L2X0 | ||
51 | void __iomem *l2x0_base = ioremap(CT_CA9X4_L2CC, SZ_4K); | ||
52 | |||
53 | if (l2x0_base) { | ||
54 | /* set RAM latencies to 1 cycle for this core tile. */ | ||
55 | writel(0, l2x0_base + L310_TAG_LATENCY_CTRL); | ||
56 | writel(0, l2x0_base + L310_DATA_LATENCY_CTRL); | ||
57 | |||
58 | l2x0_init(l2x0_base, 0x00400000, 0xfe0fffff); | ||
59 | } else { | ||
60 | pr_err("L2C: unable to map L2 cache controller\n"); | ||
61 | } | ||
62 | #endif | ||
63 | } | ||
64 | |||
48 | #ifdef CONFIG_HAVE_ARM_TWD | 65 | #ifdef CONFIG_HAVE_ARM_TWD |
49 | static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, A9_MPCORE_TWD, IRQ_LOCALTIMER); | 66 | static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, A9_MPCORE_TWD, IRQ_LOCALTIMER); |
50 | 67 | ||
@@ -63,6 +80,7 @@ static void __init ct_ca9x4_init_irq(void) | |||
63 | gic_init(0, 29, ioremap(A9_MPCORE_GIC_DIST, SZ_4K), | 80 | gic_init(0, 29, ioremap(A9_MPCORE_GIC_DIST, SZ_4K), |
64 | ioremap(A9_MPCORE_GIC_CPU, SZ_256)); | 81 | ioremap(A9_MPCORE_GIC_CPU, SZ_256)); |
65 | ca9x4_twd_init(); | 82 | ca9x4_twd_init(); |
83 | ca9x4_l2_init(); | ||
66 | } | 84 | } |
67 | 85 | ||
68 | static int ct_ca9x4_clcd_setup(struct clcd_fb *fb) | 86 | static int ct_ca9x4_clcd_setup(struct clcd_fb *fb) |
@@ -146,16 +164,6 @@ static void __init ct_ca9x4_init(void) | |||
146 | { | 164 | { |
147 | int i; | 165 | int i; |
148 | 166 | ||
149 | #ifdef CONFIG_CACHE_L2X0 | ||
150 | void __iomem *l2x0_base = ioremap(CT_CA9X4_L2CC, SZ_4K); | ||
151 | |||
152 | /* set RAM latencies to 1 cycle for this core tile. */ | ||
153 | writel(0, l2x0_base + L2X0_TAG_LATENCY_CTRL); | ||
154 | writel(0, l2x0_base + L2X0_DATA_LATENCY_CTRL); | ||
155 | |||
156 | l2x0_init(l2x0_base, 0x00400000, 0xfe0fffff); | ||
157 | #endif | ||
158 | |||
159 | for (i = 0; i < ARRAY_SIZE(ct_ca9x4_amba_devs); i++) | 167 | for (i = 0; i < ARRAY_SIZE(ct_ca9x4_amba_devs); i++) |
160 | amba_device_register(ct_ca9x4_amba_devs[i], &iomem_resource); | 168 | amba_device_register(ct_ca9x4_amba_devs[i], &iomem_resource); |
161 | 169 | ||