aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-arm/arch-ixp2000/platform.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-arm/arch-ixp2000/platform.h')
-rw-r--r--include/asm-arm/arch-ixp2000/platform.h29
1 files changed, 0 insertions, 29 deletions
diff --git a/include/asm-arm/arch-ixp2000/platform.h b/include/asm-arm/arch-ixp2000/platform.h
index abdcf51bd283..aabeef2454dd 100644
--- a/include/asm-arm/arch-ixp2000/platform.h
+++ b/include/asm-arm/arch-ixp2000/platform.h
@@ -15,39 +15,10 @@
15 15
16#ifndef __ASSEMBLY__ 16#ifndef __ASSEMBLY__
17 17
18/*
19 * The IXP2400 B0 silicon contains an erratum (#66) that causes writes
20 * to on-chip I/O register to not complete fully. What this means is
21 * that if you have a write to on-chip I/O followed by a back-to-back
22 * read or write, the first write will happen twice. OR...if it's
23 * not a back-to-back transaction, the read or write will generate
24 * incorrect data.
25 *
26 * The official work around for this is to set the on-chip I/O regions
27 * as XCB=101 and then force a read-back from the register.
28 *
29 */
30#if defined(CONFIG_ARCH_ENP2611) || defined(CONFIG_ARCH_IXDP2400) || defined(CONFIG_ARCH_IXDP2401)
31
32#include <asm/system.h> /* Pickup local_irq_ functions */
33
34static inline void ixp2000_reg_write(volatile void *reg, unsigned long val)
35{
36 unsigned long dummy;
37 unsigned long flags;
38
39 local_irq_save(flags);
40 *((volatile unsigned long *)reg) = val;
41 barrier();
42 dummy = *((volatile unsigned long *)reg);
43 local_irq_restore(flags);
44}
45#else
46static inline void ixp2000_reg_write(volatile void *reg, unsigned long val) 18static inline void ixp2000_reg_write(volatile void *reg, unsigned long val)
47{ 19{
48 *((volatile unsigned long *)reg) = val; 20 *((volatile unsigned long *)reg) = val;
49} 21}
50#endif /* IXDP2400 || IXDP2401 */
51#define ixp2000_reg_read(reg) (*((volatile unsigned long *)reg)) 22#define ixp2000_reg_read(reg) (*((volatile unsigned long *)reg))
52 23
53/* 24/*