1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
291254a4dSThomas Zimmermann
3aafe4dbeSArnd Bergmann #ifndef __ASM_GENERIC_FB_H_
4aafe4dbeSArnd Bergmann #define __ASM_GENERIC_FB_H_
5aafe4dbeSArnd Bergmann
691254a4dSThomas Zimmermann /*
791254a4dSThomas Zimmermann * Only include this header file from your architecture's <asm/fb.h>.
891254a4dSThomas Zimmermann */
9aafe4dbeSArnd Bergmann
108f8eaa1bSThomas Zimmermann #include <linux/io.h>
1191254a4dSThomas Zimmermann #include <linux/mm_types.h>
1291254a4dSThomas Zimmermann #include <linux/pgtable.h>
1391254a4dSThomas Zimmermann
1491254a4dSThomas Zimmermann struct fb_info;
1591254a4dSThomas Zimmermann struct file;
1691254a4dSThomas Zimmermann
1791254a4dSThomas Zimmermann #ifndef fb_pgprotect
1891254a4dSThomas Zimmermann #define fb_pgprotect fb_pgprotect
fb_pgprotect(struct file * file,struct vm_area_struct * vma,unsigned long off)1991254a4dSThomas Zimmermann static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
2091254a4dSThomas Zimmermann unsigned long off)
2191254a4dSThomas Zimmermann {
2291254a4dSThomas Zimmermann vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
2391254a4dSThomas Zimmermann }
2491254a4dSThomas Zimmermann #endif
2591254a4dSThomas Zimmermann
2691254a4dSThomas Zimmermann #ifndef fb_is_primary_device
2791254a4dSThomas Zimmermann #define fb_is_primary_device fb_is_primary_device
fb_is_primary_device(struct fb_info * info)28aafe4dbeSArnd Bergmann static inline int fb_is_primary_device(struct fb_info *info)
29aafe4dbeSArnd Bergmann {
30aafe4dbeSArnd Bergmann return 0;
31aafe4dbeSArnd Bergmann }
3291254a4dSThomas Zimmermann #endif
33aafe4dbeSArnd Bergmann
348f8eaa1bSThomas Zimmermann /*
358f8eaa1bSThomas Zimmermann * I/O helpers for the framebuffer. Prefer these functions over their
368f8eaa1bSThomas Zimmermann * regular counterparts. The regular I/O functions provide in-order
378f8eaa1bSThomas Zimmermann * access and swap bytes to/from little-endian ordering. Neither is
388f8eaa1bSThomas Zimmermann * required for framebuffers. Instead, the helpers read and write
398f8eaa1bSThomas Zimmermann * raw framebuffer data. Independent operations can be reordered for
408f8eaa1bSThomas Zimmermann * improved performance.
418f8eaa1bSThomas Zimmermann */
428f8eaa1bSThomas Zimmermann
438f8eaa1bSThomas Zimmermann #ifndef fb_readb
fb_readb(const volatile void __iomem * addr)448f8eaa1bSThomas Zimmermann static inline u8 fb_readb(const volatile void __iomem *addr)
458f8eaa1bSThomas Zimmermann {
468f8eaa1bSThomas Zimmermann return __raw_readb(addr);
478f8eaa1bSThomas Zimmermann }
488f8eaa1bSThomas Zimmermann #define fb_readb fb_readb
498f8eaa1bSThomas Zimmermann #endif
508f8eaa1bSThomas Zimmermann
518f8eaa1bSThomas Zimmermann #ifndef fb_readw
fb_readw(const volatile void __iomem * addr)528f8eaa1bSThomas Zimmermann static inline u16 fb_readw(const volatile void __iomem *addr)
538f8eaa1bSThomas Zimmermann {
548f8eaa1bSThomas Zimmermann return __raw_readw(addr);
558f8eaa1bSThomas Zimmermann }
568f8eaa1bSThomas Zimmermann #define fb_readw fb_readw
578f8eaa1bSThomas Zimmermann #endif
588f8eaa1bSThomas Zimmermann
598f8eaa1bSThomas Zimmermann #ifndef fb_readl
fb_readl(const volatile void __iomem * addr)608f8eaa1bSThomas Zimmermann static inline u32 fb_readl(const volatile void __iomem *addr)
618f8eaa1bSThomas Zimmermann {
628f8eaa1bSThomas Zimmermann return __raw_readl(addr);
638f8eaa1bSThomas Zimmermann }
648f8eaa1bSThomas Zimmermann #define fb_readl fb_readl
658f8eaa1bSThomas Zimmermann #endif
668f8eaa1bSThomas Zimmermann
678f8eaa1bSThomas Zimmermann #ifndef fb_readq
688f8eaa1bSThomas Zimmermann #if defined(__raw_readq)
fb_readq(const volatile void __iomem * addr)698f8eaa1bSThomas Zimmermann static inline u64 fb_readq(const volatile void __iomem *addr)
708f8eaa1bSThomas Zimmermann {
718f8eaa1bSThomas Zimmermann return __raw_readq(addr);
728f8eaa1bSThomas Zimmermann }
738f8eaa1bSThomas Zimmermann #define fb_readq fb_readq
748f8eaa1bSThomas Zimmermann #endif
758f8eaa1bSThomas Zimmermann #endif
768f8eaa1bSThomas Zimmermann
778f8eaa1bSThomas Zimmermann #ifndef fb_writeb
fb_writeb(u8 b,volatile void __iomem * addr)788f8eaa1bSThomas Zimmermann static inline void fb_writeb(u8 b, volatile void __iomem *addr)
798f8eaa1bSThomas Zimmermann {
808f8eaa1bSThomas Zimmermann __raw_writeb(b, addr);
818f8eaa1bSThomas Zimmermann }
828f8eaa1bSThomas Zimmermann #define fb_writeb fb_writeb
838f8eaa1bSThomas Zimmermann #endif
848f8eaa1bSThomas Zimmermann
858f8eaa1bSThomas Zimmermann #ifndef fb_writew
fb_writew(u16 b,volatile void __iomem * addr)868f8eaa1bSThomas Zimmermann static inline void fb_writew(u16 b, volatile void __iomem *addr)
878f8eaa1bSThomas Zimmermann {
888f8eaa1bSThomas Zimmermann __raw_writew(b, addr);
898f8eaa1bSThomas Zimmermann }
908f8eaa1bSThomas Zimmermann #define fb_writew fb_writew
918f8eaa1bSThomas Zimmermann #endif
928f8eaa1bSThomas Zimmermann
938f8eaa1bSThomas Zimmermann #ifndef fb_writel
fb_writel(u32 b,volatile void __iomem * addr)948f8eaa1bSThomas Zimmermann static inline void fb_writel(u32 b, volatile void __iomem *addr)
958f8eaa1bSThomas Zimmermann {
968f8eaa1bSThomas Zimmermann __raw_writel(b, addr);
978f8eaa1bSThomas Zimmermann }
988f8eaa1bSThomas Zimmermann #define fb_writel fb_writel
998f8eaa1bSThomas Zimmermann #endif
1008f8eaa1bSThomas Zimmermann
1018f8eaa1bSThomas Zimmermann #ifndef fb_writeq
1028f8eaa1bSThomas Zimmermann #if defined(__raw_writeq)
fb_writeq(u64 b,volatile void __iomem * addr)1038f8eaa1bSThomas Zimmermann static inline void fb_writeq(u64 b, volatile void __iomem *addr)
1048f8eaa1bSThomas Zimmermann {
1058f8eaa1bSThomas Zimmermann __raw_writeq(b, addr);
1068f8eaa1bSThomas Zimmermann }
1078f8eaa1bSThomas Zimmermann #define fb_writeq fb_writeq
1088f8eaa1bSThomas Zimmermann #endif
1098f8eaa1bSThomas Zimmermann #endif
1108f8eaa1bSThomas Zimmermann
111*20d54e48SThomas Zimmermann #ifndef fb_memcpy_fromio
fb_memcpy_fromio(void * to,const volatile void __iomem * from,size_t n)112*20d54e48SThomas Zimmermann static inline void fb_memcpy_fromio(void *to, const volatile void __iomem *from, size_t n)
1138f8eaa1bSThomas Zimmermann {
1148f8eaa1bSThomas Zimmermann memcpy_fromio(to, from, n);
1158f8eaa1bSThomas Zimmermann }
116*20d54e48SThomas Zimmermann #define fb_memcpy_fromio fb_memcpy_fromio
1178f8eaa1bSThomas Zimmermann #endif
1188f8eaa1bSThomas Zimmermann
119*20d54e48SThomas Zimmermann #ifndef fb_memcpy_toio
fb_memcpy_toio(volatile void __iomem * to,const void * from,size_t n)120*20d54e48SThomas Zimmermann static inline void fb_memcpy_toio(volatile void __iomem *to, const void *from, size_t n)
1218f8eaa1bSThomas Zimmermann {
1228f8eaa1bSThomas Zimmermann memcpy_toio(to, from, n);
1238f8eaa1bSThomas Zimmermann }
124*20d54e48SThomas Zimmermann #define fb_memcpy_toio fb_memcpy_toio
1258f8eaa1bSThomas Zimmermann #endif
1268f8eaa1bSThomas Zimmermann
1278f8eaa1bSThomas Zimmermann #ifndef fb_memset
fb_memset_io(volatile void __iomem * addr,int c,size_t n)128*20d54e48SThomas Zimmermann static inline void fb_memset_io(volatile void __iomem *addr, int c, size_t n)
1298f8eaa1bSThomas Zimmermann {
1308f8eaa1bSThomas Zimmermann memset_io(addr, c, n);
1318f8eaa1bSThomas Zimmermann }
132*20d54e48SThomas Zimmermann #define fb_memset fb_memset_io
1338f8eaa1bSThomas Zimmermann #endif
1348f8eaa1bSThomas Zimmermann
135aafe4dbeSArnd Bergmann #endif /* __ASM_GENERIC_FB_H_ */
136