From 87fe2d543f817300e13f0ea683f38c122737856e Mon Sep 17 00:00:00 2001 From: Sinan Kaya Date: Thu, 5 Apr 2018 09:09:13 -0400 Subject: io: change inX() to have their own IO barrier overrides Open code readX() inside inX() so that inX() variants have their own overrideable Port IO barrier combinations as __io_pbr() and __io_par() for actions to be taken before port IO and after port IO read. Signed-off-by: Sinan Kaya Signed-off-by: Arnd Bergmann --- include/asm-generic/io.h | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'include/asm-generic/io.h') diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index 53226d907c45..578b6883dd6a 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h @@ -433,7 +433,12 @@ static inline void writesq(volatile void __iomem *addr, const void *buffer, #define inb inb static inline u8 inb(unsigned long addr) { - return readb(PCI_IOBASE + addr); + u8 val; + + __io_pbr(); + val = __raw_readb(PCI_IOBASE + addr); + __io_par(); + return val; } #endif @@ -441,7 +446,12 @@ static inline u8 inb(unsigned long addr) #define inw inw static inline u16 inw(unsigned long addr) { - return readw(PCI_IOBASE + addr); + u16 val; + + __io_pbr(); + val = __le16_to_cpu(__raw_readw(PCI_IOBASE + addr)); + __io_par(); + return val; } #endif @@ -449,7 +459,12 @@ static inline u16 inw(unsigned long addr) #define inl inl static inline u32 inl(unsigned long addr) { - return readl(PCI_IOBASE + addr); + u32 val; + + __io_pbr(); + val = __le32_to_cpu(__raw_readl(PCI_IOBASE + addr)); + __io_par(); + return val; } #endif -- cgit v1.2.3