This patch fixes IO access endianness, that should be big endian. If any little endian peripheral may be connected, bytes should be swapped in hardware. --- Changes from v2: - patch reduced form 3/3 to 2/2 - isolated big endian IO read/write[w,l] to mcf5441x Signed-off-by: Angelo Dureghello <angelo@xxxxxxxx> --- arch/m68k/include/asm/io_mm.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/arch/m68k/include/asm/io_mm.h b/arch/m68k/include/asm/io_mm.h index ed5333e87879..a1a0f870b61b 100644 --- a/arch/m68k/include/asm/io_mm.h +++ b/arch/m68k/include/asm/io_mm.h @@ -444,13 +444,29 @@ static inline void isa_delay(void) */ #define readb(addr) in_8(addr) #define writeb(val,addr) out_8((addr),(val)) +#ifdef CONFIG_M5441x +/* + * mcf5441x only accesses IO/peripheral internal memory. + */ +#define readw(addr) in_be16(addr) +#define writew(val, addr) out_be16((addr), (val)) +#else #define readw(addr) in_le16(addr) #define writew(val,addr) out_le16((addr),(val)) +#endif #endif /* !CONFIG_ISA && !CONFIG_ATARI_ROM_ISA */ +#ifdef CONFIG_M5441x +/* + * mcf5441x only accesses IO/peripheral internal memory. + */ +#define readl(addr) in_be32(addr) +#define writel(val, addr) out_be32((addr), (val)) +#else #define readl(addr) in_le32(addr) #define writel(val,addr) out_le32((addr),(val)) +#endif #define readsb(port, buf, nr) raw_insb((port), (u8 *)(buf), (nr)) #define readsw(port, buf, nr) raw_insw((port), (u16 *)(buf), (nr)) -- 2.15.1 -- To unsubscribe from this list: send the line "unsubscribe linux-m68k" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html