io: change outX() to have their own IO barrier overrides
authorSinan Kaya <okaya@codeaurora.org>
Thu, 5 Apr 2018 13:09:12 +0000 (09:09 -0400)
committerArnd Bergmann <arnd@arndb.de>
Fri, 6 Apr 2018 10:02:04 +0000 (12:02 +0200)
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>
include/asm-generic/io.h

index 964725e4f459b97bedec445fd0a14855bf938c27..53226d907c457eb98f9b9382d13ccf53c75a02df 100644 (file)
@@ -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