|
@@ -248,4 +248,94 @@ static inline void __iomem *__ioremap(phys_addr_t address, unsigned long size,
|
|
|
#define ioport_map(port, nr) ((void __iomem *)(port))
|
|
|
#define ioport_unmap(addr)
|
|
|
|
|
|
+/* from asm-generic/io.h */
|
|
|
+#ifndef insb
|
|
|
+static inline void insb(unsigned long addr, void *buffer, int count)
|
|
|
+{
|
|
|
+ if (count) {
|
|
|
+ u8 *buf = buffer;
|
|
|
+ do {
|
|
|
+ u8 x = inb(addr);
|
|
|
+ *buf++ = x;
|
|
|
+ } while (--count);
|
|
|
+ }
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifndef insw
|
|
|
+static inline void insw(unsigned long addr, void *buffer, int count)
|
|
|
+{
|
|
|
+ if (count) {
|
|
|
+ u16 *buf = buffer;
|
|
|
+ do {
|
|
|
+ u16 x = inw(addr);
|
|
|
+ *buf++ = x;
|
|
|
+ } while (--count);
|
|
|
+ }
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifndef insl
|
|
|
+static inline void insl(unsigned long addr, void *buffer, int count)
|
|
|
+{
|
|
|
+ if (count) {
|
|
|
+ u32 *buf = buffer;
|
|
|
+ do {
|
|
|
+ u32 x = inl(addr);
|
|
|
+ *buf++ = x;
|
|
|
+ } while (--count);
|
|
|
+ }
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifndef outsb
|
|
|
+static inline void outsb(unsigned long addr, const void *buffer, int count)
|
|
|
+{
|
|
|
+ if (count) {
|
|
|
+ const u8 *buf = buffer;
|
|
|
+ do {
|
|
|
+ outb(*buf++, addr);
|
|
|
+ } while (--count);
|
|
|
+ }
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifndef outsw
|
|
|
+static inline void outsw(unsigned long addr, const void *buffer, int count)
|
|
|
+{
|
|
|
+ if (count) {
|
|
|
+ const u16 *buf = buffer;
|
|
|
+ do {
|
|
|
+ outw(*buf++, addr);
|
|
|
+ } while (--count);
|
|
|
+ }
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifndef outsl
|
|
|
+static inline void outsl(unsigned long addr, const void *buffer, int count)
|
|
|
+{
|
|
|
+ if (count) {
|
|
|
+ const u32 *buf = buffer;
|
|
|
+ do {
|
|
|
+ outl(*buf++, addr);
|
|
|
+ } while (--count);
|
|
|
+ }
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+#define ioread8_rep(p, dst, count) \
|
|
|
+ insb((unsigned long) (p), (dst), (count))
|
|
|
+#define ioread16_rep(p, dst, count) \
|
|
|
+ insw((unsigned long) (p), (dst), (count))
|
|
|
+#define ioread32_rep(p, dst, count) \
|
|
|
+ insl((unsigned long) (p), (dst), (count))
|
|
|
+
|
|
|
+#define iowrite8_rep(p, src, count) \
|
|
|
+ outsb((unsigned long) (p), (src), (count))
|
|
|
+#define iowrite16_rep(p, src, count) \
|
|
|
+ outsw((unsigned long) (p), (src), (count))
|
|
|
+#define iowrite32_rep(p, src, count) \
|
|
|
+ outsl((unsigned long) (p), (src), (count))
|
|
|
+
|
|
|
#endif /* _ASM_MICROBLAZE_IO_H */
|