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