xref: /openbsd-src/sys/dev/pci/drm/include/linux/io.h (revision 99fd087599a8791921855f21bd7e36130f39aadc)
1 /* Public domain. */
2 
3 #ifndef _LINUX_IO_H
4 #define _LINUX_IO_H
5 
6 #include <sys/systm.h>
7 #include <linux/types.h>
8 #include <linux/compiler.h>
9 
10 #define memcpy_toio(d, s, n)	memcpy(d, s, n)
11 #define memcpy_fromio(d, s, n)	memcpy(d, s, n)
12 #define memset_io(d, b, n)	memset(d, b, n)
13 
14 static inline u8
15 ioread8(const volatile void __iomem *addr)
16 {
17 	return (*(volatile uint8_t *)addr);
18 }
19 
20 static inline u16
21 ioread16(const volatile void __iomem *addr)
22 {
23 	return (*(volatile uint16_t *)addr);
24 }
25 
26 static inline u32
27 ioread32(const volatile void __iomem *addr)
28 {
29 	return (*(volatile uint32_t *)addr);
30 }
31 
32 static inline u64
33 ioread64(const volatile void __iomem *addr)
34 {
35 	return (*(volatile uint64_t *)addr);
36 }
37 
38 static inline void
39 iowrite8(u8 val, volatile void __iomem *addr)
40 {
41 	*(volatile uint8_t *)addr = val;
42 }
43 
44 static inline void
45 iowrite16(u16 val, volatile void __iomem *addr)
46 {
47 	*(volatile uint16_t *)addr = val;
48 }
49 
50 static inline void
51 iowrite32(u32 val, volatile void __iomem *addr)
52 {
53 	*(volatile uint32_t *)addr = val;
54 }
55 
56 static inline void
57 iowrite64(u64 val, volatile void __iomem *addr)
58 {
59 	*(volatile uint64_t *)addr = val;
60 }
61 
62 #define readb(p) ioread8(p)
63 #define writeb(v, p) iowrite8(v, p)
64 #define readw(p) ioread16(p)
65 #define writew(v, p) iowrite16(v, p)
66 #define readl(p) ioread32(p)
67 #define writel(v, p) iowrite32(v, p)
68 #define readq(p) ioread64(p)
69 #define writeq(v, p) iowrite64(v, p)
70 
71 #endif
72