sh: Provide stubbed I/O routines for NO_IOPORT case.
authorPaul Mundt <lethal@linux-sh.org>
Thu, 10 May 2012 04:07:55 +0000 (13:07 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Thu, 10 May 2012 04:07:55 +0000 (13:07 +0900)
Too many drivers fail at IOPORT vs IOMEM checking before blindly calling
in to the API, so we may as well just provide basic stubs to get more
build coverage. Other platforms already do this, too (tile, parisc, etc.)

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/include/asm/io.h
arch/sh/include/asm/io_noioport.h [new file with mode: 0644]

index ec464a6b95fe2cbd790bd63c17302a533f239a6e..0cf60a62881435559ddec1d1c930ba2d71298a5c 100644 (file)
@@ -218,8 +218,13 @@ __BUILD_IOPORT_STRING(w, u16)
 __BUILD_IOPORT_STRING(l, u32)
 __BUILD_IOPORT_STRING(q, u64)
 
+#else /* !CONFIG_HAS_IOPORT */
+
+#include <asm/io_noioport.h>
+
 #endif
 
+
 #define IO_SPACE_LIMIT 0xffffffff
 
 /* synco on SH-4A, otherwise a nop */
diff --git a/arch/sh/include/asm/io_noioport.h b/arch/sh/include/asm/io_noioport.h
new file mode 100644 (file)
index 0000000..e136d28
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef __ASM_SH_IO_NOIOPORT_H
+#define __ASM_SH_IO_NOIOPORT_H
+
+static inline u8 inb(unsigned long addr)
+{
+       BUG();
+       return -1;
+}
+
+static inline u16 inw(unsigned long addr)
+{
+       BUG();
+       return -1;
+}
+
+static inline u32 inl(unsigned long addr)
+{
+       BUG();
+       return -1;
+}
+
+#define outb(x, y)     BUG()
+#define outw(x, y)     BUG()
+#define outl(x, y)     BUG()
+
+#define inb_p(addr)    inb(addr)
+#define inw_p(addr)    inw(addr)
+#define inl_p(addr)    inl(addr)
+#define outb_p(x, addr)        outb((x), (addr))
+#define outw_p(x, addr)        outw((x), (addr))
+#define outl_p(x, addr)        outl((x), (addr))
+
+#define insb(a, b, c)  BUG()
+#define insw(a, b, c)  BUG()
+#define insl(a, b, c)  BUG()
+
+#define outsb(a, b, c) BUG()
+#define outsw(a, b, c) BUG()
+#define outsl(a, b, c) BUG()
+
+#endif /* __ASM_SH_IO_NOIOPORT_H */