Commit ae5b28a5 authored by Al Viro's avatar Al Viro

[PATCH] fix rio_copy_to_card() for OLDPCI case

It replaced old rio_pcicopy().  That puppy did _not_ do readb() (unlike
rio_memcpy_toio()) and current implementation is simply broken - readb(NULL)
is never a valid thing to do.
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent bfa6b7bb
...@@ -335,7 +335,7 @@ int RIODelay_ni(struct Port *PortP, int njiffies) ...@@ -335,7 +335,7 @@ int RIODelay_ni(struct Port *PortP, int njiffies)
void rio_copy_to_card(void *from, void __iomem *to, int len) void rio_copy_to_card(void *from, void __iomem *to, int len)
{ {
rio_memcpy_toio(NULL, to, from, len); rio_copy_toio(to, from, len);
} }
int rio_minor(struct tty_struct *tty) int rio_minor(struct tty_struct *tty)
......
...@@ -138,12 +138,23 @@ static inline void __iomem *rio_memcpy_toio(void __iomem *dummy, void __iomem *d ...@@ -138,12 +138,23 @@ static inline void __iomem *rio_memcpy_toio(void __iomem *dummy, void __iomem *d
while (n--) { while (n--) {
writeb(*src++, dst++); writeb(*src++, dst++);
(void) readb(dummy); /* WTF? */ (void) readb(dummy);
} }
return dest; return dest;
} }
static inline void __iomem *rio_copy_toio(void __iomem *dest, void *source, int n)
{
char __iomem *dst = dest;
char *src = source;
while (n--)
writeb(*src++, dst++);
return dest;
}
static inline void *rio_memcpy_fromio(void *dest, void __iomem *source, int n) static inline void *rio_memcpy_fromio(void *dest, void __iomem *source, int n)
{ {
...@@ -158,6 +169,7 @@ static inline void *rio_memcpy_fromio(void *dest, void __iomem *source, int n) ...@@ -158,6 +169,7 @@ static inline void *rio_memcpy_fromio(void *dest, void __iomem *source, int n)
#else #else
#define rio_memcpy_toio(dummy,dest,source,n) memcpy_toio(dest, source, n) #define rio_memcpy_toio(dummy,dest,source,n) memcpy_toio(dest, source, n)
#define rio_copy_toio memcpy_toio
#define rio_memcpy_fromio memcpy_fromio #define rio_memcpy_fromio memcpy_fromio
#endif #endif
......
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