diff options
Diffstat (limited to 'arch/arm/mach-mvebu/coherency.c')
| -rw-r--r-- | arch/arm/mach-mvebu/coherency.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/arm/mach-mvebu/coherency.c b/arch/arm/mach-mvebu/coherency.c index 3585cb394e9b..ccef8806bb58 100644 --- a/arch/arm/mach-mvebu/coherency.c +++ b/arch/arm/mach-mvebu/coherency.c | |||
| @@ -190,6 +190,13 @@ static void __init armada_375_380_coherency_init(struct device_node *np) | |||
| 190 | arch_ioremap_caller = armada_pcie_wa_ioremap_caller; | 190 | arch_ioremap_caller = armada_pcie_wa_ioremap_caller; |
| 191 | 191 | ||
| 192 | /* | 192 | /* |
| 193 | * We should switch the PL310 to I/O coherency mode only if | ||
| 194 | * I/O coherency is actually enabled. | ||
| 195 | */ | ||
| 196 | if (!coherency_available()) | ||
| 197 | return; | ||
| 198 | |||
| 199 | /* | ||
| 193 | * Add the PL310 property "arm,io-coherent". This makes sure the | 200 | * Add the PL310 property "arm,io-coherent". This makes sure the |
| 194 | * outer sync operation is not used, which allows to | 201 | * outer sync operation is not used, which allows to |
| 195 | * workaround the system erratum that causes deadlocks when | 202 | * workaround the system erratum that causes deadlocks when |
| @@ -246,9 +253,14 @@ static int coherency_type(void) | |||
| 246 | return type; | 253 | return type; |
| 247 | } | 254 | } |
| 248 | 255 | ||
| 256 | /* | ||
| 257 | * As a precaution, we currently completely disable hardware I/O | ||
| 258 | * coherency, until enough testing is done with automatic I/O | ||
| 259 | * synchronization barriers to validate that it is a proper solution. | ||
| 260 | */ | ||
| 249 | int coherency_available(void) | 261 | int coherency_available(void) |
| 250 | { | 262 | { |
| 251 | return coherency_type() != COHERENCY_FABRIC_TYPE_NONE; | 263 | return false; |
| 252 | } | 264 | } |
| 253 | 265 | ||
| 254 | int __init coherency_init(void) | 266 | int __init coherency_init(void) |
