diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-14 17:54:26 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-14 17:54:26 -0500 |
commit | c2714334b944abbeaaadda8cddde619eff0292a1 (patch) | |
tree | b45be97a313f58aa62933040230d51aa3a8592b4 /arch/arm/mm | |
parent | 0beb58783f2168354e2b5297af45fc7db70adf12 (diff) | |
parent | 5e5d8999a316d596f2012fe1cf4c59e0de693dab (diff) |
Merge tag 'mvebu' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC updates for Marvell mvebu/kirkwood from Olof Johansson:
"This is a branch with updates for Marvell's mvebu/kirkwood platforms.
They came in late-ish, and were heavily interdependent such that it
didn't make sense to split them up across the cross-platform topic
branches. So here they are (for the second release in a row) in a
branch on their own."
* tag 'mvebu' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (88 commits)
arm: l2x0: add aurora related properties to OF binding
arm: mvebu: add Aurora L2 Cache Controller to the DT
arm: mvebu: add L2 cache support
dma: mv_xor: fix error handling path
dma: mv_xor: fix error checking of irq_of_parse_and_map()
dma: mv_xor: use request_irq() instead of devm_request_irq()
dma: mv_xor: clear the window override control registers
arm: mvebu: fix address decoding armada_cfg_base() function
ARM: mvebu: update defconfig with I2C and RTC support
ARM: mvebu: Add SATA support for OpenBlocks AX3-4
ARM: mvebu: Add support for the RTC in OpenBlocks AX3-4
ARM: mvebu: Add support for I2C on OpenBlocks AX3-4
ARM: mvebu: Add support for I2C controllers in Armada 370/XP
arm: mvebu: Add hardware I/O Coherency support
arm: plat-orion: Add coherency attribute when setup mbus target
arm: dma mapping: Export a dma ops function arm_dma_set_mask
arm: mvebu: Add SMP support for Armada XP
arm: mm: Add support for PJ4B cpu and init routines
arm: mvebu: Add IPI support via doorbells
arm: mvebu: Add initial support for power managmement service unit
...
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/Kconfig | 4 | ||||
-rw-r--r-- | arch/arm/mm/dma-mapping.c | 4 | ||||
-rw-r--r-- | arch/arm/mm/proc-v7.S | 67 |
3 files changed, 72 insertions, 3 deletions
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 94186b6c685f..3fd629d5a513 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -352,6 +352,10 @@ config CPU_PJ4 | |||
352 | select ARM_THUMBEE | 352 | select ARM_THUMBEE |
353 | select CPU_V7 | 353 | select CPU_V7 |
354 | 354 | ||
355 | config CPU_PJ4B | ||
356 | bool | ||
357 | select CPU_V7 | ||
358 | |||
355 | # ARMv6 | 359 | # ARMv6 |
356 | config CPU_V6 | 360 | config CPU_V6 |
357 | bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX | 361 | bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX |
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index 58bc3e4d3bd0..5383bc018571 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c | |||
@@ -124,8 +124,6 @@ static void arm_dma_sync_single_for_device(struct device *dev, | |||
124 | __dma_page_cpu_to_dev(page, offset, size, dir); | 124 | __dma_page_cpu_to_dev(page, offset, size, dir); |
125 | } | 125 | } |
126 | 126 | ||
127 | static int arm_dma_set_mask(struct device *dev, u64 dma_mask); | ||
128 | |||
129 | struct dma_map_ops arm_dma_ops = { | 127 | struct dma_map_ops arm_dma_ops = { |
130 | .alloc = arm_dma_alloc, | 128 | .alloc = arm_dma_alloc, |
131 | .free = arm_dma_free, | 129 | .free = arm_dma_free, |
@@ -971,7 +969,7 @@ int dma_supported(struct device *dev, u64 mask) | |||
971 | } | 969 | } |
972 | EXPORT_SYMBOL(dma_supported); | 970 | EXPORT_SYMBOL(dma_supported); |
973 | 971 | ||
974 | static int arm_dma_set_mask(struct device *dev, u64 dma_mask) | 972 | int arm_dma_set_mask(struct device *dev, u64 dma_mask) |
975 | { | 973 | { |
976 | if (!dev->dma_mask || !dma_supported(dev, dma_mask)) | 974 | if (!dev->dma_mask || !dma_supported(dev, dma_mask)) |
977 | return -EIO; | 975 | return -EIO; |
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index 42cc833aa02f..350f6a74992b 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
@@ -169,6 +169,63 @@ __v7_ca15mp_setup: | |||
169 | orreq r0, r0, r10 @ Enable CPU-specific SMP bits | 169 | orreq r0, r0, r10 @ Enable CPU-specific SMP bits |
170 | mcreq p15, 0, r0, c1, c0, 1 | 170 | mcreq p15, 0, r0, c1, c0, 1 |
171 | #endif | 171 | #endif |
172 | |||
173 | __v7_pj4b_setup: | ||
174 | #ifdef CONFIG_CPU_PJ4B | ||
175 | |||
176 | /* Auxiliary Debug Modes Control 1 Register */ | ||
177 | #define PJ4B_STATIC_BP (1 << 2) /* Enable Static BP */ | ||
178 | #define PJ4B_INTER_PARITY (1 << 8) /* Disable Internal Parity Handling */ | ||
179 | #define PJ4B_BCK_OFF_STREX (1 << 5) /* Enable the back off of STREX instr */ | ||
180 | #define PJ4B_CLEAN_LINE (1 << 16) /* Disable data transfer for clean line */ | ||
181 | |||
182 | /* Auxiliary Debug Modes Control 2 Register */ | ||
183 | #define PJ4B_FAST_LDR (1 << 23) /* Disable fast LDR */ | ||
184 | #define PJ4B_SNOOP_DATA (1 << 25) /* Do not interleave write and snoop data */ | ||
185 | #define PJ4B_CWF (1 << 27) /* Disable Critical Word First feature */ | ||
186 | #define PJ4B_OUTSDNG_NC (1 << 29) /* Disable outstanding non cacheable rqst */ | ||
187 | #define PJ4B_L1_REP_RR (1 << 30) /* L1 replacement - Strict round robin */ | ||
188 | #define PJ4B_AUX_DBG_CTRL2 (PJ4B_SNOOP_DATA | PJ4B_CWF |\ | ||
189 | PJ4B_OUTSDNG_NC | PJ4B_L1_REP_RR) | ||
190 | |||
191 | /* Auxiliary Functional Modes Control Register 0 */ | ||
192 | #define PJ4B_SMP_CFB (1 << 1) /* Set SMP mode. Join the coherency fabric */ | ||
193 | #define PJ4B_L1_PAR_CHK (1 << 2) /* Support L1 parity checking */ | ||
194 | #define PJ4B_BROADCAST_CACHE (1 << 8) /* Broadcast Cache and TLB maintenance */ | ||
195 | |||
196 | /* Auxiliary Debug Modes Control 0 Register */ | ||
197 | #define PJ4B_WFI_WFE (1 << 22) /* WFI/WFE - serve the DVM and back to idle */ | ||
198 | |||
199 | /* Auxiliary Debug Modes Control 1 Register */ | ||
200 | mrc p15, 1, r0, c15, c1, 1 | ||
201 | orr r0, r0, #PJ4B_CLEAN_LINE | ||
202 | orr r0, r0, #PJ4B_BCK_OFF_STREX | ||
203 | orr r0, r0, #PJ4B_INTER_PARITY | ||
204 | bic r0, r0, #PJ4B_STATIC_BP | ||
205 | mcr p15, 1, r0, c15, c1, 1 | ||
206 | |||
207 | /* Auxiliary Debug Modes Control 2 Register */ | ||
208 | mrc p15, 1, r0, c15, c1, 2 | ||
209 | bic r0, r0, #PJ4B_FAST_LDR | ||
210 | orr r0, r0, #PJ4B_AUX_DBG_CTRL2 | ||
211 | mcr p15, 1, r0, c15, c1, 2 | ||
212 | |||
213 | /* Auxiliary Functional Modes Control Register 0 */ | ||
214 | mrc p15, 1, r0, c15, c2, 0 | ||
215 | #ifdef CONFIG_SMP | ||
216 | orr r0, r0, #PJ4B_SMP_CFB | ||
217 | #endif | ||
218 | orr r0, r0, #PJ4B_L1_PAR_CHK | ||
219 | orr r0, r0, #PJ4B_BROADCAST_CACHE | ||
220 | mcr p15, 1, r0, c15, c2, 0 | ||
221 | |||
222 | /* Auxiliary Debug Modes Control 0 Register */ | ||
223 | mrc p15, 1, r0, c15, c1, 0 | ||
224 | orr r0, r0, #PJ4B_WFI_WFE | ||
225 | mcr p15, 1, r0, c15, c1, 0 | ||
226 | |||
227 | #endif /* CONFIG_CPU_PJ4B */ | ||
228 | |||
172 | __v7_setup: | 229 | __v7_setup: |
173 | adr r12, __v7_setup_stack @ the local stack | 230 | adr r12, __v7_setup_stack @ the local stack |
174 | stmia r12, {r0-r5, r7, r9, r11, lr} | 231 | stmia r12, {r0-r5, r7, r9, r11, lr} |
@@ -342,6 +399,16 @@ __v7_ca9mp_proc_info: | |||
342 | .long 0xff0ffff0 | 399 | .long 0xff0ffff0 |
343 | __v7_proc __v7_ca9mp_setup | 400 | __v7_proc __v7_ca9mp_setup |
344 | .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info | 401 | .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info |
402 | |||
403 | /* | ||
404 | * Marvell PJ4B processor. | ||
405 | */ | ||
406 | .type __v7_pj4b_proc_info, #object | ||
407 | __v7_pj4b_proc_info: | ||
408 | .long 0x562f5840 | ||
409 | .long 0xfffffff0 | ||
410 | __v7_proc __v7_pj4b_setup | ||
411 | .size __v7_pj4b_proc_info, . - __v7_pj4b_proc_info | ||
345 | #endif /* CONFIG_ARM_LPAE */ | 412 | #endif /* CONFIG_ARM_LPAE */ |
346 | 413 | ||
347 | /* | 414 | /* |