Merge tag 'asm-generic' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm...
[firefly-linux-kernel-4.4.55.git] / include / asm-generic / io.h
index 063ce76409105fdee96e4b0392a162ef1d3f0545..33bbbae4ddc699ba84b5ae657594c35bfa61cb22 100644 (file)
@@ -82,19 +82,25 @@ static inline void __raw_writel(u32 b, volatile void __iomem *addr)
 #define writel(b,addr) __raw_writel(__cpu_to_le32(b),addr)
 
 #ifdef CONFIG_64BIT
+#ifndef __raw_readq
 static inline u64 __raw_readq(const volatile void __iomem *addr)
 {
        return *(const volatile u64 __force *) addr;
 }
+#endif
+
 #define readq(addr) __le64_to_cpu(__raw_readq(addr))
 
+#ifndef __raw_writeq
 static inline void __raw_writeq(u64 b, volatile void __iomem *addr)
 {
        *(volatile u64 __force *) addr = b;
 }
-#define writeq(b,addr) __raw_writeq(__cpu_to_le64(b),addr)
 #endif
 
+#define writeq(b, addr) __raw_writeq(__cpu_to_le64(b), addr)
+#endif /* CONFIG_64BIT */
+
 #ifndef PCI_IOBASE
 #define PCI_IOBASE ((void __iomem *) 0)
 #endif
@@ -147,7 +153,7 @@ static inline void insb(unsigned long addr, void *buffer, int count)
        if (count) {
                u8 *buf = buffer;
                do {
-                       u8 x = inb(addr);
+                       u8 x = __raw_readb(addr + PCI_IOBASE);
                        *buf++ = x;
                } while (--count);
        }
@@ -160,7 +166,7 @@ static inline void insw(unsigned long addr, void *buffer, int count)
        if (count) {
                u16 *buf = buffer;
                do {
-                       u16 x = inw(addr);
+                       u16 x = __raw_readw(addr + PCI_IOBASE);
                        *buf++ = x;
                } while (--count);
        }
@@ -173,7 +179,7 @@ static inline void insl(unsigned long addr, void *buffer, int count)
        if (count) {
                u32 *buf = buffer;
                do {
-                       u32 x = inl(addr);
+                       u32 x = __raw_readl(addr + PCI_IOBASE);
                        *buf++ = x;
                } while (--count);
        }
@@ -186,7 +192,7 @@ static inline void outsb(unsigned long addr, const void *buffer, int count)
        if (count) {
                const u8 *buf = buffer;
                do {
-                       outb(*buf++, addr);
+                       __raw_writeb(*buf++, addr + PCI_IOBASE);
                } while (--count);
        }
 }
@@ -198,7 +204,7 @@ static inline void outsw(unsigned long addr, const void *buffer, int count)
        if (count) {
                const u16 *buf = buffer;
                do {
-                       outw(*buf++, addr);
+                       __raw_writew(*buf++, addr + PCI_IOBASE);
                } while (--count);
        }
 }
@@ -210,7 +216,7 @@ static inline void outsl(unsigned long addr, const void *buffer, int count)
        if (count) {
                const u32 *buf = buffer;
                do {
-                       outl(*buf++, addr);
+                       __raw_writel(*buf++, addr + PCI_IOBASE);
                } while (--count);
        }
 }
@@ -255,15 +261,20 @@ static inline void outsl(unsigned long addr, const void *buffer, int count)
 
 #ifndef CONFIG_GENERIC_IOMAP
 struct pci_dev;
+extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
+
+#ifndef pci_iounmap
 static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p)
 {
 }
+#endif
 #endif /* CONFIG_GENERIC_IOMAP */
 
 /*
  * Change virtual addresses to physical addresses and vv.
  * These are pretty trivial
  */
+#ifndef virt_to_phys
 static inline unsigned long virt_to_phys(volatile void *address)
 {
        return __pa((unsigned long)address);
@@ -273,6 +284,7 @@ static inline void *phys_to_virt(unsigned long address)
 {
        return __va(address);
 }
+#endif
 
 /*
  * Change "struct page" to physical address.
@@ -332,9 +344,16 @@ static inline void *bus_to_virt(unsigned long address)
 }
 #endif
 
+#ifndef memset_io
 #define memset_io(a, b, c)     memset(__io_virt(a), (b), (c))
+#endif
+
+#ifndef memcpy_fromio
 #define memcpy_fromio(a, b, c) memcpy((a), __io_virt(b), (c))
+#endif
+#ifndef memcpy_toio
 #define memcpy_toio(a, b, c)   memcpy(__io_virt(a), (b), (c))
+#endif
 
 #endif /* __KERNEL__ */