diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2006-05-27 01:48:08 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2006-05-27 02:26:49 -0400 |
commit | ae5b28a5bb1b5f5d53085a044aec69db41fd0336 (patch) | |
tree | 8b618a3ef0efc0c49de551c4c13fd146b38fa746 /drivers/char/rio/rio_linux.h | |
parent | bfa6b7bb35a9c8c8acae3056f2cb3364c52693d4 (diff) | |
download | blackbird-op-linux-ae5b28a5bb1b5f5d53085a044aec69db41fd0336.tar.gz blackbird-op-linux-ae5b28a5bb1b5f5d53085a044aec69db41fd0336.zip |
[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: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'drivers/char/rio/rio_linux.h')
-rw-r--r-- | drivers/char/rio/rio_linux.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/char/rio/rio_linux.h b/drivers/char/rio/rio_linux.h index 99c7447b6113..55b9c97e8477 100644 --- a/drivers/char/rio/rio_linux.h +++ b/drivers/char/rio/rio_linux.h @@ -138,12 +138,23 @@ static inline void __iomem *rio_memcpy_toio(void __iomem *dummy, void __iomem *d while (n--) { writeb(*src++, dst++); - (void) readb(dummy); /* WTF? */ + (void) readb(dummy); } 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) { @@ -158,6 +169,7 @@ static inline void *rio_memcpy_fromio(void *dest, void __iomem *source, int n) #else #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 #endif |