1
2
3#ifndef _LINUX_IO_H
4#define _LINUX_IO_H
5
6#include <linux/compiler.h>
7#include <linux/types.h>
8#include <asm/io.h>
9
10#ifndef CONFIG_HAVE_ARCH_IOMAP
11static inline u8 ioread8(const volatile void __iomem *addr)
12{
13 return readb(addr);
14}
15
16static inline u16 ioread16(const volatile void __iomem *addr)
17{
18 return readw(addr);
19}
20
21static inline u32 ioread32(const volatile void __iomem *addr)
22{
23 return readl(addr);
24}
25#endif
26
27#ifdef CONFIG_64BIT
28static inline u64 ioread64(const volatile void __iomem *addr)
29{
30 return readq(addr);
31}
32#endif
33
34#ifndef CONFIG_HAVE_ARCH_IOMAP
35static inline void iowrite8(u8 value, volatile void __iomem *addr)
36{
37 writeb(value, addr);
38}
39
40static inline void iowrite16(u16 value, volatile void __iomem *addr)
41{
42 writew(value, addr);
43}
44
45static inline void iowrite32(u32 value, volatile void __iomem *addr)
46{
47 writel(value, addr);
48}
49#endif
50
51#ifdef CONFIG_64BIT
52static inline void iowrite64(u64 value, volatile void __iomem *addr)
53{
54 writeq(value, addr);
55}
56#endif
57
58#ifndef CONFIG_HAVE_ARCH_IOREMAP
59static inline void __iomem *ioremap(resource_size_t offset,
60 resource_size_t size)
61{
62 return (void __iomem *)(unsigned long)offset;
63}
64
65static inline void iounmap(void __iomem *addr)
66{
67}
68#endif
69
70#define devm_ioremap(dev, offset, size) ioremap(offset, size)
71
72#endif
73