Commit 9f2c9492 authored by Krzysztof Hałasa's avatar Krzysztof Hałasa

ARM: fix insl() and outsl() endianness on IXP4xx architecture.

The repetitive in/out functions must preserve order, not value.
Signed-off-by: default avatarKrzysztof Hałasa <khc@pm.waw.pl>
parent 8ae45a53
...@@ -311,7 +311,7 @@ static inline void ...@@ -311,7 +311,7 @@ static inline void
__ixp4xx_outsl(u32 io_addr, const u32 *vaddr, u32 count) __ixp4xx_outsl(u32 io_addr, const u32 *vaddr, u32 count)
{ {
while (count--) while (count--)
outl(*vaddr++, io_addr); outl(cpu_to_le32(*vaddr++), io_addr);
} }
static inline u8 static inline u8
...@@ -366,7 +366,7 @@ static inline void ...@@ -366,7 +366,7 @@ static inline void
__ixp4xx_insl(u32 io_addr, u32 *vaddr, u32 count) __ixp4xx_insl(u32 io_addr, u32 *vaddr, u32 count)
{ {
while (count--) while (count--)
*vaddr++ = inl(io_addr); *vaddr++ = le32_to_cpu(inl(io_addr));
} }
#define PIO_OFFSET 0x10000UL #define PIO_OFFSET 0x10000UL
...@@ -374,12 +374,13 @@ __ixp4xx_insl(u32 io_addr, u32 *vaddr, u32 count) ...@@ -374,12 +374,13 @@ __ixp4xx_insl(u32 io_addr, u32 *vaddr, u32 count)
#define __is_io_address(p) (((unsigned long)p >= PIO_OFFSET) && \ #define __is_io_address(p) (((unsigned long)p >= PIO_OFFSET) && \
((unsigned long)p <= (PIO_MASK + PIO_OFFSET))) ((unsigned long)p <= (PIO_MASK + PIO_OFFSET)))
static inline unsigned int static inline unsigned int
__ixp4xx_ioread8(const void __iomem *addr) __ixp4xx_ioread8(const void __iomem *addr)
{ {
unsigned long port = (unsigned long __force)addr; unsigned long port = (unsigned long __force)addr;
if (__is_io_address(port)) if (__is_io_address(port))
return (unsigned int)__ixp4xx_inb(port & PIO_MASK); return (unsigned int)__ixp4xx_inb(port & PIO_MASK);
else else
#ifndef CONFIG_IXP4XX_INDIRECT_PCI #ifndef CONFIG_IXP4XX_INDIRECT_PCI
return (unsigned int)__raw_readb(port); return (unsigned int)__raw_readb(port);
......
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