diff options
Diffstat (limited to 'include/asm-arm/arch-ixp2000/platform.h')
-rw-r--r-- | include/asm-arm/arch-ixp2000/platform.h | 29 |
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 | |||
34 | static 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 | ||
46 | static inline void ixp2000_reg_write(volatile void *reg, unsigned long val) | 18 | static 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 | /* |