linux/arch/arm/mach-mvebu
Thomas Petazzoni dcad68876c ARM: mvebu: don't set the PL310 in I/O coherency mode when I/O coherency is disabled
Since commit f2c3c67f00 (merge commit that adds commit "ARM: mvebu:
completely disable hardware I/O coherency"), we disable I/O coherency
on Armada EBU platforms.

However, we continue to initialize the coherency fabric, because this
coherency fabric is needed on Armada XP for inter-CPU
coherency. Unfortunately, due to this, we also continued to execute
the coherency fabric initialization code for Armada 375/38x, which
switched the PL310 into I/O coherent mode. This has the effect of
disabling the outer cache sync operation: this is needed when I/O
coherency is enabled to work around a PCIe/L2 deadlock. But obviously,
when I/O coherency is disabled, having the outer cache sync operation
is crucial.

Therefore, this commit fixes the armada_375_380_coherency_init() so
that the PL310 is switched to I/O coherent mode only if I/O coherency
is enabled.

Without this fix, all devices using DMA are broken on Armada 375/38x.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Cc: <stable@vger.kernel.org> # v3.8+
2015-01-28 11:23:56 -06:00
..
include/mach ARM: mvebu: Simplify headers and make local 2014-02-22 21:19:59 +00:00
Kconfig mvebu SoC changes for v3.17 (round 4) 2014-07-26 18:17:08 +02:00
Makefile ARM: mvebu: Armada XP GP specific suspend/resume code 2014-11-30 16:40:14 +00:00
armada-370-xp.h ARM: mvebu: Clean-up the Armada XP support 2014-11-22 02:13:24 +00:00
board-v7.c mvebu SoC suspend changes for v3.19 2014-12-04 16:46:43 +01:00
board.h ARM: Kirkwood: Add setup file for netxbig LEDs 2014-06-20 23:47:27 +00:00
coherency.c ARM: mvebu: don't set the PL310 in I/O coherency mode when I/O coherency is disabled 2015-01-28 11:23:56 -06:00
coherency.h ARM: mvebu: Remove the unused argument of set_cpu_coherent() 2014-05-08 16:18:52 +00:00
coherency_ll.S ARM: mvebu: make the coherency_ll.S functions work with no coherency fabric 2014-11-22 01:49:27 +00:00
common.h ARM: mvebu: implement suspend/resume support for Armada XP 2014-11-30 16:40:12 +00:00
cpu-reset.c ARM: mvebu: Clean-up the Armada XP support 2014-11-22 02:13:24 +00:00
dove.c bus: mvebu: pass the coherency availability information at init time 2014-04-24 05:00:36 +00:00
headsmp-a9.S ARM: mvebu: Fix the secondary startup for Cortex A9 SoC 2014-11-22 02:14:20 +00:00
headsmp.S ARM: mvebu: Split low level functions to manipulate HW coherency 2014-05-08 16:18:54 +00:00
kirkwood-pm.c ARM: mvebu: Simplify headers and make local 2014-02-22 21:19:59 +00:00
kirkwood-pm.h ARM: mvebu: Move kirkwood DT boards into mach-mvebu 2014-02-22 21:19:55 +00:00
kirkwood.c ARM: Kirkwood: Add setup file for netxbig LEDs 2014-06-20 23:47:27 +00:00
kirkwood.h ARM: mvebu: Simplify headers and make local 2014-02-22 21:19:59 +00:00
mvebu-soc-id.c ARM: mvebu: Use system controller to get the soc id when possible 2014-06-30 17:40:59 +00:00
mvebu-soc-id.h ARM: mvebu: add Armada 375 A0 revision definition 2014-05-08 16:40:14 +00:00
netxbig.c ARM: Kirkwood: Add setup file for netxbig LEDs 2014-06-20 23:47:27 +00:00
platsmp-a9.c ARM: mvebu: Implement the CPU hotplug support for the Armada 38x SoCs 2014-11-22 02:14:38 +00:00
platsmp.c mvebu SoC suspend changes for v3.19 2014-12-04 16:46:43 +01:00
pm-board.c ARM: mvebu: Armada XP GP specific suspend/resume code 2014-11-30 16:40:14 +00:00
pm.c ARM: mvebu: implement suspend/resume support for Armada XP 2014-11-30 16:40:12 +00:00
pmsu.c ARM: mvebu: use the cpufreq-dt platform_data for independent clocks 2014-12-04 17:31:32 +01:00
pmsu.h mvebu SoC suspend changes for v3.19 2014-12-04 16:46:43 +01:00
pmsu_ll.S mvebu SoC suspend changes for v3.19 2014-12-04 16:46:43 +01:00
system-controller.c ARM: mvebu: use the common function for Armada 375 SMP workaround 2014-07-24 11:46:10 +00:00