video.h 2.9 KB

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