Commit ab2674c7 authored by Tom Rini's avatar Tom Rini Committed by Linus Torvalds

[PATCH] ppc32: MPC82xx PCI9 errata workaround broken

Changeset 1.1938.196.11 broke MPC8260 PCI9 Errata workaround.  This pach
makes it work again.
Signed-off-by: default avatarRune Torgersen <runet@innovsys.com>
Signed-off-by: default avatarTom Rini <trini@kernel.crashing.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 576441bc
...@@ -133,7 +133,10 @@ extern inline void out_be32(volatile unsigned __iomem *addr, int val) ...@@ -133,7 +133,10 @@ extern inline void out_be32(volatile unsigned __iomem *addr, int val)
{ {
__asm__ __volatile__("stw%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val)); __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) static inline __u8 readb(volatile void __iomem *addr)
{ {
return in_8(addr); return in_8(addr);
...@@ -142,6 +145,8 @@ static inline void writeb(__u8 b, volatile void __iomem *addr) ...@@ -142,6 +145,8 @@ static inline void writeb(__u8 b, volatile void __iomem *addr)
{ {
out_8(addr, b); out_8(addr, b);
} }
#endif
#if defined(CONFIG_APUS) #if defined(CONFIG_APUS)
static inline __u16 readw(volatile void __iomem *addr) static inline __u16 readw(volatile void __iomem *addr)
{ {
...@@ -159,6 +164,12 @@ static inline void writel(__u32 b, volatile void __iomem *addr) ...@@ -159,6 +164,12 @@ static inline void writel(__u32 b, volatile void __iomem *addr)
{ {
*(__force volatile __u32 *)(addr) = b; *(__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 #else
static inline __u16 readw(volatile void __iomem *addr) static inline __u16 readw(volatile void __iomem *addr)
{ {
...@@ -332,6 +343,11 @@ extern void _outsl_ns(volatile u32 __iomem *port, const void *buf, int nl); ...@@ -332,6 +343,11 @@ extern void _outsl_ns(volatile u32 __iomem *port, const void *buf, int nl);
#define IO_SPACE_LIMIT ~0 #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) static inline void memset_io(volatile void __iomem *addr, unsigned char val, int count)
{ {
memset((void __force *)addr, val, count); memset((void __force *)addr, val, count);
...@@ -392,7 +408,7 @@ extern inline void * bus_to_virt(unsigned long address) ...@@ -392,7 +408,7 @@ extern inline void * bus_to_virt(unsigned long address)
return (void*) mm_ptov (address); return (void*) mm_ptov (address);
#endif #endif
} }
#endif
/* /*
* Change virtual addresses to physical addresses and vv, for * Change virtual addresses to physical addresses and vv, for
* addresses in the area where the kernel has the RAM mapped. * addresses in the area where the kernel has the RAM mapped.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment