Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae5b28a5 authored by Al Viro's avatar Al Viro
Browse files

[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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -335,7 +335,7 @@ int RIODelay_ni(struct Port *PortP, int njiffies)

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)
+13 −1
Original line number Diff line number Diff line
@@ -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