Line data Source code
1 : /* SPDX-License-Identifier: GPL-2.0 */ 2 : 3 : #ifndef __ASM_GENERIC_FB_H_ 4 : #define __ASM_GENERIC_FB_H_ 5 : 6 : /* 7 : * Only include this header file from your architecture's <asm/fb.h>. 8 : */ 9 : 10 : #include <linux/io.h> 11 : #include <linux/mm_types.h> 12 : #include <linux/pgtable.h> 13 : 14 : struct fb_info; 15 : struct file; 16 : 17 : #ifndef fb_pgprotect 18 : #define fb_pgprotect fb_pgprotect 19 : static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma, 20 : unsigned long off) 21 : { 22 : vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); 23 : } 24 : #endif 25 : 26 : #ifndef fb_is_primary_device 27 : #define fb_is_primary_device fb_is_primary_device 28 : static inline int fb_is_primary_device(struct fb_info *info) 29 : { 30 : return 0; 31 : } 32 : #endif 33 : 34 : /* 35 : * I/O helpers for the framebuffer. Prefer these functions over their 36 : * regular counterparts. The regular I/O functions provide in-order 37 : * access and swap bytes to/from little-endian ordering. Neither is 38 : * required for framebuffers. Instead, the helpers read and write 39 : * raw framebuffer data. Independent operations can be reordered for 40 : * improved performance. 41 : */ 42 : 43 : #ifndef fb_readb 44 : static inline u8 fb_readb(const volatile void __iomem *addr) 45 : { 46 : return __raw_readb(addr); 47 : } 48 : #define fb_readb fb_readb 49 : #endif 50 : 51 : #ifndef fb_readw 52 : static inline u16 fb_readw(const volatile void __iomem *addr) 53 : { 54 : return __raw_readw(addr); 55 : } 56 : #define fb_readw fb_readw 57 : #endif 58 : 59 : #ifndef fb_readl 60 : static inline u32 fb_readl(const volatile void __iomem *addr) 61 : { 62 : return __raw_readl(addr); 63 : } 64 : #define fb_readl fb_readl 65 : #endif 66 : 67 : #ifndef fb_readq 68 : #if defined(__raw_readq) 69 : static inline u64 fb_readq(const volatile void __iomem *addr) 70 : { 71 : return __raw_readq(addr); 72 : } 73 : #define fb_readq fb_readq 74 : #endif 75 : #endif 76 : 77 : #ifndef fb_writeb 78 : static inline void fb_writeb(u8 b, volatile void __iomem *addr) 79 : { 80 : __raw_writeb(b, addr); 81 : } 82 : #define fb_writeb fb_writeb 83 : #endif 84 : 85 : #ifndef fb_writew 86 : static inline void fb_writew(u16 b, volatile void __iomem *addr) 87 : { 88 : __raw_writew(b, addr); 89 : } 90 : #define fb_writew fb_writew 91 : #endif 92 : 93 : #ifndef fb_writel 94 : static inline void fb_writel(u32 b, volatile void __iomem *addr) 95 : { 96 : __raw_writel(b, addr); 97 : } 98 : #define fb_writel fb_writel 99 : #endif 100 : 101 : #ifndef fb_writeq 102 : #if defined(__raw_writeq) 103 : static inline void fb_writeq(u64 b, volatile void __iomem *addr) 104 : { 105 : __raw_writeq(b, addr); 106 : } 107 : #define fb_writeq fb_writeq 108 : #endif 109 : #endif 110 : 111 : #ifndef fb_memcpy_fromio 112 : static inline void fb_memcpy_fromio(void *to, const volatile void __iomem *from, size_t n) 113 : { 114 0 : memcpy_fromio(to, from, n); 115 : } 116 : #define fb_memcpy_fromio fb_memcpy_fromio 117 : #endif 118 : 119 : #ifndef fb_memcpy_toio 120 : static inline void fb_memcpy_toio(volatile void __iomem *to, const void *from, size_t n) 121 : { 122 0 : memcpy_toio(to, from, n); 123 : } 124 : #define fb_memcpy_toio fb_memcpy_toio 125 : #endif 126 : 127 : #ifndef fb_memset 128 : static inline void fb_memset_io(volatile void __iomem *addr, int c, size_t n) 129 : { 130 : memset_io(addr, c, n); 131 : } 132 : #define fb_memset fb_memset_io 133 : #endif 134 : 135 : #endif /* __ASM_GENERIC_FB_H_ */