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 14struct fb_info; 15 16#ifndef pgprot_framebuffer 17#define pgprot_framebuffer pgprot_framebuffer 18static inline pgprot_t pgprot_framebuffer(pgprot_t prot, 19 unsigned long vm_start, unsigned long vm_end, 20 unsigned long offset) 21{ 22 return pgprot_writecombine(prot); 23} 24#endif 25 26#ifndef fb_is_primary_device 27#define fb_is_primary_device fb_is_primary_device 28static 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 44static 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 52static 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 60static 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) 69static 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 78static 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 86static 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 94static 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) 103static 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 112static inline void fb_memcpy_fromio(void *to, const volatile void __iomem *from, size_t n) 113{ 114 memcpy_fromio(to, from, n); 115} 116#define fb_memcpy_fromio fb_memcpy_fromio 117#endif 118 119#ifndef fb_memcpy_toio 120static inline void fb_memcpy_toio(volatile void __iomem *to, const void *from, size_t n) 121{ 122 memcpy_toio(to, from, n); 123} 124#define fb_memcpy_toio fb_memcpy_toio 125#endif 126 127#ifndef fb_memset 128static 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_ */ 136