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