ark_display.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef __ARK_DISPLAY_H__
  2. #define __ARK_DISPLAY_H__
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include <semaphore.h>
  7. #define DISPLAY_DATA_ID 0x4449
  8. #define LAYER_FREE -1
  9. #define PRIMARY_LAYER_ADDR_PHY 0x0f000000
  10. #define PRIMARY_LAYER_SIZE_MAX 0x01000000
  11. #define ATOMIC_SET_LAYER_POS (1 << 0)
  12. #define ATOMIC_SET_LAYER_SIZE (1 << 1)
  13. #define ATOMIC_SET_LAYER_FMT (1 << 2)
  14. #define ATOMIC_SET_LAYER_ADDR (1 << 3)
  15. #define ATOMIC_SET_LAYER_SCALER (1 << 4)
  16. #define ARK_IOW(num, dtype) _IOW('O', num, dtype)
  17. #define ARK_IOR(num, dtype) _IOR('O', num, dtype)
  18. #define ARK_IOWR(num, dtype) _IOWR('O', num, dtype)
  19. #define ARK_IO(num) _IO('O', num)
  20. #define ARKFB_GET_VSYNC_STATUS ARK_IOW(37, unsigned int)
  21. #define ARKFB_WAITFORVSYNC ARK_IO(38)
  22. #define ARKFB_SHOW_WINDOW ARK_IO(39)
  23. #define ARKFB_HIDE_WINDOW ARK_IO(40)
  24. #define ARKFB_SET_WINDOW_POS ARK_IOW(41, unsigned int)
  25. #define ARKFB_SET_WINDOW_SIZE ARK_IOW(42, unsigned int)
  26. #define ARKFB_SET_WINDOW_FORMAT ARK_IOW(43, unsigned int)
  27. #define ARKFB_SET_WINDOW_ADDR ARK_IOW(44, struct ark_disp_addr)
  28. #define ARKFB_SET_WINDOW_SCALER ARK_IOW(45, struct ark_disp_scaler)
  29. #define ARKFB_SET_WINDOW_ATOMIC ARK_IOW(46, struct ark_disp_atomic)
  30. #define ARKFB_SET_REG_VALUE ARK_IOW(47, struct ark_disp_reg)
  31. #define ARKFB_GET_REG_VALUE ARK_IOR(48, struct ark_disp_reg)
  32. #define ARKFB_GET_WINDOW_ADDR ARK_IOR(49, struct ark_disp_addr)
  33. #define ARKFB_GET_SCREEN_INFO ARK_IOR(50, struct ark_screen)
  34. #define ARKFB_SET_SCREEN_INFO ARK_IOW(51, struct ark_screen)
  35. #define ARKFB_GET_PLATFORM_INFO ARK_IOR(52, struct ark_platform_info)
  36. #define ARKFB_GET_WINDOW_FORMAT ARK_IOR(53, unsigned int)
  37. #define ARKFB_SET_VP_INFO ARK_IOW(54, struct ark_disp_vp)
  38. #define ARKFB_GET_VP_INFO ARK_IOW(55, struct ark_disp_vp)
  39. #define ARKFB_SET_WINDOW_PRIORITY ARK_IOW(63, unsigned int)
  40. #define ARK1668_LCDC_BASE 0xe0500000
  41. #define PRIMARY_LAYER_VP_OFFSET 0x144
  42. #define VIDEO_LAYER_VP_OFFSET 0x14c
  43. #define OVER_LAYER_VP_OFFSET 0x154
  44. #define TVOUT_LAYER_VP_OFFSET 0x1d8
  45. #define AUX_LAYER_VP_OFFSET 0x134
  46. #define ARKN141_LCDC_BASE 0x70190000
  47. #define ARKN141_VP_OFFSET 0x20c
  48. typedef struct ark_disp_atomic {
  49. int layer;
  50. int atomic_stat;
  51. int pos_x;
  52. int pos_y;
  53. int width;
  54. int height;
  55. int format;
  56. int yuyv_order;
  57. int rgb_order;
  58. struct ark_disp_addr addr;
  59. struct ark_disp_scaler scaler;
  60. } disp_atomic;
  61. typedef struct ark_disp_head {
  62. struct list_head list;
  63. int display_mode;
  64. int init;
  65. sem_t sem;
  66. disp_handle *active[MAX_LAYERS];
  67. int reserve[64];
  68. } disp_head;
  69. typedef struct ark_disp_reg {
  70. u32 addr;
  71. u32 value;
  72. } disp_reg;
  73. #ifdef __cplusplus
  74. }
  75. #endif
  76. #endif