diff options
author | Sinan Kaya <okaya@codeaurora.org> | 2018-04-05 09:09:13 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2018-04-06 12:02:13 +0200 |
commit | 87fe2d543f817300e13f0ea683f38c122737856e (patch) | |
tree | 2004868de5dde731d7fa663b9ed0afe67f8d77c1 | |
parent | a7851aa54c0cdd2f62457b72aee0da5d5586e514 (diff) |
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 <okaya@codeaurora.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r-- | include/asm-generic/io.h | 21 |
1 files changed, 18 insertions, 3 deletions
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 |