summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSinan Kaya <okaya@codeaurora.org>2018-04-05 09:09:12 -0400
committerArnd Bergmann <arnd@arndb.de>2018-04-06 12:02:04 +0200
commita7851aa54c0cdd2f62457b72aee0da5d5586e514 (patch)
tree0fccafba788a172ee6b65f9e5fc49eb5551538a9
parent755bd04aaf4bf7c49ce8aad2677ea4d14271fc46 (diff)
downloadlinux-stable-a7851aa54c0cdd2f62457b72aee0da5d5586e514.tar.gz
linux-stable-a7851aa54c0cdd2f62457b72aee0da5d5586e514.tar.bz2
linux-stable-a7851aa54c0cdd2f62457b72aee0da5d5586e514.zip
io: change outX() to have their own IO barrier overrides
Open code writeX() inside outX() so that outX() variants have their own overrideable Port IO barrier combinations as __io_pbw() and __io_paw() for actions to be taken before port IO and after port IO write. Signed-off-by: Sinan Kaya <okaya@codeaurora.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r--include/asm-generic/io.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h
index 964725e4f459..53226d907c45 100644
--- a/include/asm-generic/io.h
+++ b/include/asm-generic/io.h
@@ -457,7 +457,9 @@ static inline u32 inl(unsigned long addr)
#define outb outb
static inline void outb(u8 value, unsigned long addr)
{
- writeb(value, PCI_IOBASE + addr);
+ __io_pbw();
+ __raw_writeb(value, PCI_IOBASE + addr);
+ __io_paw();
}
#endif
@@ -465,7 +467,9 @@ static inline void outb(u8 value, unsigned long addr)
#define outw outw
static inline void outw(u16 value, unsigned long addr)
{
- writew(value, PCI_IOBASE + addr);
+ __io_pbw();
+ __raw_writew(cpu_to_le16(value), PCI_IOBASE + addr);
+ __io_paw();
}
#endif
@@ -473,7 +477,9 @@ static inline void outw(u16 value, unsigned long addr)
#define outl outl
static inline void outl(u32 value, unsigned long addr)
{
- writel(value, PCI_IOBASE + addr);
+ __io_pbw();
+ __raw_writel(cpu_to_le32(value), PCI_IOBASE + addr);
+ __io_paw();
}
#endif