1af22ac66SMasahiro Yamada /*
2af22ac66SMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+
3af22ac66SMasahiro Yamada */
4af22ac66SMasahiro Yamada
5af22ac66SMasahiro Yamada #ifndef _LINUX_IO_H
6af22ac66SMasahiro Yamada #define _LINUX_IO_H
7af22ac66SMasahiro Yamada
89a387128SMasahiro Yamada #include <linux/compiler.h>
99a387128SMasahiro Yamada #include <linux/types.h>
10af22ac66SMasahiro Yamada #include <asm/io.h>
11af22ac66SMasahiro Yamada
ioread8(const volatile void __iomem * addr)12*59814c3bSMasahiro Yamada static inline u8 ioread8(const volatile void __iomem *addr)
13*59814c3bSMasahiro Yamada {
14*59814c3bSMasahiro Yamada return readb(addr);
15*59814c3bSMasahiro Yamada }
16*59814c3bSMasahiro Yamada
ioread16(const volatile void __iomem * addr)17*59814c3bSMasahiro Yamada static inline u16 ioread16(const volatile void __iomem *addr)
18*59814c3bSMasahiro Yamada {
19*59814c3bSMasahiro Yamada return readw(addr);
20*59814c3bSMasahiro Yamada }
21*59814c3bSMasahiro Yamada
ioread32(const volatile void __iomem * addr)22*59814c3bSMasahiro Yamada static inline u32 ioread32(const volatile void __iomem *addr)
23*59814c3bSMasahiro Yamada {
24*59814c3bSMasahiro Yamada return readl(addr);
25*59814c3bSMasahiro Yamada }
26*59814c3bSMasahiro Yamada
27*59814c3bSMasahiro Yamada #ifdef CONFIG_64BIT
ioread64(const volatile void __iomem * addr)28*59814c3bSMasahiro Yamada static inline u64 ioread64(const volatile void __iomem *addr)
29*59814c3bSMasahiro Yamada {
30*59814c3bSMasahiro Yamada return readq(addr);
31*59814c3bSMasahiro Yamada }
32*59814c3bSMasahiro Yamada #endif /* CONFIG_64BIT */
33*59814c3bSMasahiro Yamada
iowrite8(u8 value,volatile void __iomem * addr)34*59814c3bSMasahiro Yamada static inline void iowrite8(u8 value, volatile void __iomem *addr)
35*59814c3bSMasahiro Yamada {
36*59814c3bSMasahiro Yamada writeb(value, addr);
37*59814c3bSMasahiro Yamada }
38*59814c3bSMasahiro Yamada
iowrite16(u16 value,volatile void __iomem * addr)39*59814c3bSMasahiro Yamada static inline void iowrite16(u16 value, volatile void __iomem *addr)
40*59814c3bSMasahiro Yamada {
41*59814c3bSMasahiro Yamada writew(value, addr);
42*59814c3bSMasahiro Yamada }
43*59814c3bSMasahiro Yamada
iowrite32(u32 value,volatile void __iomem * addr)44*59814c3bSMasahiro Yamada static inline void iowrite32(u32 value, volatile void __iomem *addr)
45*59814c3bSMasahiro Yamada {
46*59814c3bSMasahiro Yamada writel(value, addr);
47*59814c3bSMasahiro Yamada }
48*59814c3bSMasahiro Yamada
49*59814c3bSMasahiro Yamada #ifdef CONFIG_64BIT
iowrite64(u64 value,volatile void __iomem * addr)50*59814c3bSMasahiro Yamada static inline void iowrite64(u64 value, volatile void __iomem *addr)
51*59814c3bSMasahiro Yamada {
52*59814c3bSMasahiro Yamada writeq(value, addr);
53*59814c3bSMasahiro Yamada }
54*59814c3bSMasahiro Yamada #endif /* CONFIG_64BIT */
55*59814c3bSMasahiro Yamada
569a387128SMasahiro Yamada #ifndef CONFIG_HAVE_ARCH_IOREMAP
ioremap(resource_size_t offset,resource_size_t size)579a387128SMasahiro Yamada static inline void __iomem *ioremap(resource_size_t offset,
589a387128SMasahiro Yamada resource_size_t size)
599a387128SMasahiro Yamada {
609a387128SMasahiro Yamada return (void __iomem *)(unsigned long)offset;
619a387128SMasahiro Yamada }
629a387128SMasahiro Yamada
iounmap(void __iomem * addr)639a387128SMasahiro Yamada static inline void iounmap(void __iomem *addr)
649a387128SMasahiro Yamada {
659a387128SMasahiro Yamada }
669a387128SMasahiro Yamada
679a387128SMasahiro Yamada #define devm_ioremap(dev, offset, size) ioremap(offset, size)
689a387128SMasahiro Yamada #endif
699a387128SMasahiro Yamada
70af22ac66SMasahiro Yamada #endif /* _LINUX_IO_H */
71