linux/Documentation/devicetree/bindings/arm
Thomas Petazzoni 98ea2dba65 ARM: 8076/1: mm: add support for HW coherent systems in PL310 cache
When a PL310 cache is used on a system that provides hardware
coherency, the outer cache sync operation is useless, and can be
skipped. Moreover, on some systems, it is harmful as it causes
deadlocks between the Marvell coherency mechanism, the Marvell PCIe
controller and the Cortex-A9.

To avoid this, this commit introduces a new Device Tree property
'arm,io-coherent' for the L2 cache controller node, valid only for the
PL310 cache. It identifies the usage of the PL310 cache in an I/O
coherent configuration. Internally, it makes the driver disable the
outer cache sync operation.

Note that technically speaking, a fully coherent system wouldn't
require any of the other .outer_cache operations. However, in
practice, when booting secondary CPUs, these are not yet coherent, and
therefore a set of cache maintenance operations are necessary at this
point. This explains why we keep the other .outer_cache operations and
only ->sync is disabled.

While in theory any write to a PL310 register could cause the
deadlock, in practice, disabling ->sync is sufficient to workaround
the deadlock, since the other cache maintenance operations are only
used in very specific situations.

Contrary to previous versions of this patch, this new version does not
simply NULL-ify the ->sync member, because the l2c_init_data
structures are now 'const' and therefore cannot be modified, which is
a good thing. Therefore, this patch introduces a separate
l2c_init_data instance, called of_l2c310_coherent_data.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2014-06-29 10:26:37 +01:00
..
altera Documentation: dt: reset: move socfpga-reset 2014-05-05 22:33:17 -05:00
bcm ARM: DT: bcm21664: Device tree bindings 2014-03-14 12:17:26 -04:00
calxeda ARM: dts: calxeda: move memory-controller node out of ecx-common.dtsi 2013-11-04 17:01:05 -06:00
davinci mtd: nand: davinci: move bindings under mtd 2014-01-03 11:22:25 -08:00
exynos devicetree: bindings: document SYSRAM binding 2014-05-15 03:30:29 +09:00
firmware of: add Trusted Foundations bindings documentation 2013-12-13 12:50:30 -07:00
hisilicon clk: hisilicon: add hi3620_mmc_clks 2014-02-26 16:03:56 -08:00
keystone ARM: dts: keystone: use common "ti,keystone" compatible instead of -evm 2014-03-20 17:00:27 -04:00
mrvl ARM: MM: Add DT binding for Feroceon L2 cache 2014-02-22 20:43:49 +00:00
msm devicetree: bindings: Document qcom,saw2 node 2014-02-11 15:00:39 -06:00
omap Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial into next 2014-06-04 08:50:34 -07:00
rockchip ARM: rockchip: add power-management-unit 2014-03-01 17:21:53 +01:00
samsung ARM: dts: add pmu sysreg node to exynos3250 2014-05-31 02:22:19 +09:00
spear doc: fix misspellings with 'codespell' tool 2013-05-28 12:02:12 +02:00
tegra ARM: tegra: add missing clock documentation to DT bindings 2013-12-11 16:41:55 -07:00
vt8500 arm: vt8500: doc: Add device tree bindings for arch-vt8500 devices 2012-09-21 19:23:58 +12:00
arch_timer.txt clocksource: arch_arm_timer: Fix age-old arch timer C3STOP detection issue 2014-04-29 15:06:36 +02:00
arm-boards ARM: integrator: move EBI to the device tree 2013-12-04 16:22:31 +01:00
armada-38x.txt ARM: mvebu: add initial support for the Armada 380/385 SOCs 2014-02-22 00:43:59 +00:00
armada-370-xp-pmsu.txt ARM: mvebu: add Armada 38x compatible string to pmsu 2014-05-08 16:08:38 +00:00
armada-370-xp.txt arm: mach-mvebu: add documentation for new device tree bindings 2012-07-10 15:47:49 +02:00
armada-375.txt ARM: mvebu: add initial support for the Armada 375 SOCs 2014-02-22 00:41:10 +00:00
armada-cpu-reset.txt ARM: mvebu: introduce CPU reset code 2014-04-24 05:24:02 +00:00
armadeus.txt ARM: dts: Add apf51 basic support 2013-02-10 23:25:45 +08:00
atmel-aic.txt ARM: at91/dt: binding: add precision to AIC documentation 2013-12-09 11:10:07 +01:00
atmel-at91.txt ARM: SoC DT updates for 3.14 2014-01-23 18:45:38 -08:00
atmel-pmc.txt ARM: at91: add pmc DT support 2012-03-15 23:31:14 +08:00
axxia.txt ARM: Add platform support for LSI AXM55xx SoC 2014-05-23 18:18:39 +02:00
bcm2835.txt ARM: add infra-structure for BCM2835 and Raspberry Pi 2012-09-19 19:08:27 -06:00
bcm4708.txt ARM: BCM5301X: initial support for the BCM5301X/BCM470X SoCs with ARM CPU 2014-03-06 00:36:02 -05:00
calxeda.txt ARM: dts: Add Calxeda ECX-2000 support 2012-10-31 13:46:17 -05:00
cci.txt ARM: dts: Document the CCI PMU DT bindings 2013-09-17 12:02:15 +01:00
coherency-fabric.txt ARM: mvebu: add Armada 38x support to the coherency code 2014-04-24 05:00:38 +00:00
cpus.txt Documentation: devicetree: arm: sort enable-method entries 2014-05-26 11:15:53 -07:00
davinci.txt ARM: davinci: add support for am1808 based EnBW CMC board 2012-10-29 15:43:43 +05:30
fsl.txt ARM: mx25pdk: Add device tree support 2013-02-10 23:25:42 +08:00
gic.txt DRIVERS: IRQCHIP: IRQ-GIC: Add support for routable irqs 2014-02-05 20:08:00 +05:30
global_timer.txt documentaion: DT: allow a A5 compatible string in global timer 2014-04-22 11:44:25 +02:00
insignal-boards.txt
kirkwood.txt cpufreq: kirkwood: Add a cpufreq driver for Marvell Kirkwood SoCs 2013-02-09 12:56:08 +01:00
l2cc.txt ARM: 8076/1: mm: add support for HW coherent systems in PL310 cache 2014-06-29 10:26:37 +01:00
lpc32xx-mic.txt ARM: LPC32xx: Device tree support 2012-04-22 12:01:19 +02:00
lpc32xx.txt ARM: LPC32xx: Device tree support 2012-04-22 12:01:19 +02:00
marvell,berlin.txt dt-binding: ARM: add pinctrl binding docs for Marvell Berlin2 SoCs 2014-05-19 23:02:30 +02:00
marvell,dove.txt devicetree: bindings: add missing Marvell Dove SoC documentation 2014-02-25 18:54:02 +01:00
marvell,kirkwood.txt DT: bindings: add missing Marvell Kirkwood SoC documentation 2014-04-14 12:23:04 -05:00
moxart.txt ARM: moxart: add MOXA ART SoC device tree files 2013-12-22 11:57:57 -08:00
mvebu-system-controller.txt ARM: mvebu: add Armada 375 support to the system-controller driver 2014-02-22 00:41:09 +00:00
nspire.txt arm: Add device trees for TI-Nspire hardware 2013-06-21 20:06:29 +02:00
olimex.txt ARM: mx23: Add initial support for olinuxino board 2012-07-05 09:40:51 +08:00
picoxcell.txt
pmu.txt ARM: 8054/1: perf: add support for the Cortex-A17 PMU 2014-05-25 23:49:43 +01:00
primecell.txt serial: pl011: use generic DMA slave configuration if possible 2013-03-12 17:56:09 +01:00
psci.txt Documentation: devicetree: Add new binding for PSCIv0.2 2014-05-15 10:16:24 -04:00
rockchip.txt ARM: dts: rockchip: add root compatible properties 2014-05-10 01:38:00 +02:00
rtsm-dcscb.txt ARM: vexpress: introduce DCSCB support 2013-05-29 15:50:34 -04:00
samsung-boards.txt ARM: EXYNOS: Add support for Exynos secure firmware 2013-04-09 01:52:30 +09:00
sirf.txt ARM: PRIMA2: add CSR SiRFmarco device tree .dts 2013-01-22 19:33:30 +08:00
spear-timer.txt SPEAr: Add DT bindings for SPEAr's timer 2012-05-12 21:03:26 +02:00
spear.txt SPEAr: Update MAINTAINERS and Documentation 2012-05-14 17:34:11 +02:00
ste-nomadik.txt ARM: nomadik: convert all clocks except timer to dt 2013-05-12 21:49:56 +02:00
ste-u300.txt doc: devicetree: bindings: Fix typo in bindings 2013-07-25 12:32:07 +02:00
sti.txt ARM: STi: Add STiH407 SoC support 2014-05-17 10:22:30 +02:00
tegra.txt ARM: tegra: add support for Trusted Foundations 2013-12-13 12:50:31 -07:00
topology.txt ARM: topology: Make it clear that all CPUs need to be described 2014-04-02 12:14:16 +01:00
twd.txt ARM: smp_twd: add device tree support 2012-03-13 13:27:51 +00:00
versatile-fpga-irq.txt irqchip: versatile FPGA: support cascaded interrupts from DT 2014-01-03 22:26:13 +01:00
vexpress-scc.txt ARM: vexpress: Add SCC to V2P-CA15_A7's device tree 2013-08-07 14:55:27 +01:00
vexpress-sysreg.txt mfd: vexpress: Define the device as MFD cells 2014-05-15 17:02:19 +01:00
vexpress.txt mfd: vexpress: Convert custom func API to regmap 2014-05-15 17:02:18 +01:00
vic.txt irqchip: vic: Parse interrupt and resume masks from device tree 2013-09-17 06:48:27 +09:00
vt8500.txt arm: vt8500: Add support for Wondermedia WM8750/WM8850 2013-01-12 15:51:24 +13:00
xen.txt docs: Xen ARM DT bindings 2012-09-18 09:57:47 +00:00
xilinx.txt