diff options
author | Gregory CLEMENT <gregory.clement@free-electrons.com> | 2012-10-12 11:59:48 -0400 |
---|---|---|
committer | Gregory CLEMENT <gregory.clement@free-electrons.com> | 2012-11-21 11:07:49 -0500 |
commit | 722202e10b488c14e93c428743a0e476093949e3 (patch) | |
tree | 204a0b63402b8d21dcc95699a7ce95de666d3919 /arch/arm/plat-orion/addr-map.c | |
parent | 87b54e786afda828984645a8364a228ae8ac71f4 (diff) |
arm: plat-orion: Add coherency attribute when setup mbus target
Recent SoC such as Armada 370/XP came with the possibility to deal
with the I/O coherency by hardware. In this case the transaction
attribute of the window must be flagged as "Shared transaction". Once
this flag is set, then the transactions will be forced to be sent
through the coherency block, in other case transaction is driven
directly to DRAM.
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Reviewed-by: Yehuda Yitschak <yehuday@marvell.com>
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'arch/arm/plat-orion/addr-map.c')
-rw-r--r-- | arch/arm/plat-orion/addr-map.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/plat-orion/addr-map.c b/arch/arm/plat-orion/addr-map.c index a7b8060c293a..febe3862873c 100644 --- a/arch/arm/plat-orion/addr-map.c +++ b/arch/arm/plat-orion/addr-map.c | |||
@@ -42,6 +42,8 @@ EXPORT_SYMBOL_GPL(mv_mbus_dram_info); | |||
42 | #define WIN_REMAP_LO_OFF 0x0008 | 42 | #define WIN_REMAP_LO_OFF 0x0008 |
43 | #define WIN_REMAP_HI_OFF 0x000c | 43 | #define WIN_REMAP_HI_OFF 0x000c |
44 | 44 | ||
45 | #define ATTR_HW_COHERENCY (0x1 << 4) | ||
46 | |||
45 | /* | 47 | /* |
46 | * Default implementation | 48 | * Default implementation |
47 | */ | 49 | */ |
@@ -163,6 +165,8 @@ void __init orion_setup_cpu_mbus_target(const struct orion_addr_map_cfg *cfg, | |||
163 | w = &orion_mbus_dram_info.cs[cs++]; | 165 | w = &orion_mbus_dram_info.cs[cs++]; |
164 | w->cs_index = i; | 166 | w->cs_index = i; |
165 | w->mbus_attr = 0xf & ~(1 << i); | 167 | w->mbus_attr = 0xf & ~(1 << i); |
168 | if (cfg->hw_io_coherency) | ||
169 | w->mbus_attr |= ATTR_HW_COHERENCY; | ||
166 | w->base = base & 0xffff0000; | 170 | w->base = base & 0xffff0000; |
167 | w->size = (size | 0x0000ffff) + 1; | 171 | w->size = (size | 0x0000ffff) + 1; |
168 | } | 172 | } |