Changeset 1.1938.196.11 broke MPC8260 PCI9 Errata workaround. This pach makes it work again.
Signed-off-by: Rune Torgersen <runet at innovsys.com> ===== include/asm-ppc/io.h 1.29 vs edited ===== --- 1.29/include/asm-ppc/io.h 2005-01-26 17:15:02 -06:00 +++ edited/include/asm-ppc/io.h 2005-01-26 17:54:11 -06:00 @@ -133,7 +133,10 @@ { __asm__ __volatile__("stw%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val)); } - +#if defined (CONFIG_8260_PCI9) +#define readb(addr) in_8((volatile u8 *)(addr)) +#define writeb(b,addr) out_8((volatile u8 *)(addr), (b)) +#else static inline __u8 readb(volatile void __iomem *addr) { return in_8(addr); @@ -142,6 +145,8 @@ { out_8(addr, b); } +#endif + #if defined(CONFIG_APUS) static inline __u16 readw(volatile void __iomem *addr) { @@ -159,6 +164,12 @@ { *(__force volatile __u32 *)(addr) = b; } +#elif defined (CONFIG_8260_PCI9) +/* Use macros if PCI9 workaround enabled */ +#define readw(addr) in_le16((volatile u16 *)(addr)) +#define readl(addr) in_le32((volatile u32 *)(addr)) +#define writew(b,addr) out_le16((volatile u16 *)(addr),(b)) +#define writel(b,addr) out_le32((volatile u32 *)(addr),(b)) #else static inline __u16 readw(volatile void __iomem *addr) { @@ -332,6 +343,11 @@ #define IO_SPACE_LIMIT ~0 +#if defined (CONFIG_8260_PCI9) +#define memset_io(a,b,c) memset((void *)(a),(b),(c)) +#define memcpy_fromio(a,b,c) memcpy((a),(void *)(b),(c)) +#define memcpy_toio(a,b,c) memcpy((void *)(a),(b),(c)) +#else static inline void memset_io(volatile void __iomem *addr, unsigned char val, int count) { memset((void __force *)addr, val, count); @@ -344,7 +360,7 @@ { memcpy((void __force *) dst, src, count); } - +#endif /* * Map in an area of physical address space, for accessing * I/O devices etc. Rune Torgersen System Developer Innovative Systems LLC 1000 Innovative Drive Mitchell, SD 57301 Ph: 605-995-6120 www.innovsys.com