lcd.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. * ark_lcd.h
  3. *
  4. */
  5. #ifndef _LCD_H
  6. #define _LCD_H
  7. #define LCD_VIDEO_LAYER LCD_OSD0
  8. #define LCD_UI_LAYER LCD_OSD1
  9. #define LCD_OSD_FMT_TYPE_YUV 0
  10. #define LCD_OSD_FMT_TYPE_ARGB888 1
  11. #define LCD_OSD_FMT_TYPE_RGB565 2
  12. #define LCD_OSD_FMT_TYPE_RGB454 3
  13. typedef enum {
  14. LCD_OSD0 = 0,
  15. LCD_OSD1,
  16. LCD_OSD_NUMS,
  17. }LCD_OSD_LAYER;
  18. typedef enum {
  19. LCD_OSD_FORAMT_Y_UV420 = 0,
  20. LCD_OSD_FORAMT_Y_U_V420,
  21. LCD_OSD_FORAMT_Y_UV422,
  22. LCD_OSD_FORAMT_Y_U_V422,
  23. LCD_OSD_FORAMT_ARGB888,
  24. LCD_OSD_FORAMT_RGB565,
  25. LCD_OSD_FORAMT_RGB454,
  26. LCD_OSD_FORAMT_NUMS,
  27. }LCD_OSD_FORMAT;
  28. typedef struct {
  29. int x;
  30. int y;
  31. int width;
  32. int height;
  33. int format;
  34. unsigned int yaddr;
  35. unsigned int uaddr;
  36. unsigned int vaddr;
  37. } LcdOsdInfo;
  38. /* osd layer set func */
  39. /************************************************************/
  40. int ark_lcd_set_osd_size(LCD_OSD_LAYER osd, uint32_t width, uint32_t height);
  41. int ark_lcd_set_osd_format(LCD_OSD_LAYER osd, LCD_OSD_FORMAT format);
  42. int ark_lcd_set_osd_yaddr(LCD_OSD_LAYER osd, uint32_t yaddr);
  43. int ark_lcd_set_osd_uaddr(LCD_OSD_LAYER osd, uint32_t yaddr);
  44. int ark_lcd_set_osd_vaddr(LCD_OSD_LAYER osd, uint32_t yaddr);
  45. int ark_lcd_osd_enable(LCD_OSD_LAYER osd, uint8_t enable);
  46. int ark_lcd_get_osd_enable(LCD_OSD_LAYER osd);
  47. /* Interface with default argument value, may be you need them. If you not sure, ingore them */
  48. int ark_lcd_set_osd_possition(LCD_OSD_LAYER osd, uint32_t h, uint32_t v);
  49. int ark_lcd_set_osd_h_offset(LCD_OSD_LAYER osd, uint32_t offset);
  50. int ark_lcd_osd_coeff_enable(LCD_OSD_LAYER osd, uint8_t enable);
  51. int ark_lcd_osd_set_coeff(LCD_OSD_LAYER osd, uint32_t value);
  52. int ark_lcd_set_osd_mult_coef(LCD_OSD_LAYER osd, uint32_t value);
  53. int ark_lcd_set_background_color(uint8_t r, uint8_t g, uint8_t b);
  54. void ark_lcd_set_osd_colorkey_enable(LCD_OSD_LAYER osd, uint8_t enable);
  55. void ark_lcd_set_osd_colorkey(LCD_OSD_LAYER osd, uint8_t r, uint8_t g, uint8_t b);
  56. void ark_lcd_set_osd_colorkey_thld_r(LCD_OSD_LAYER osd, uint8_t thld);
  57. void ark_lcd_set_osd_colorkey_thld_g(LCD_OSD_LAYER osd, uint8_t thld);
  58. void ark_lcd_set_osd_colorkey_thld_b(LCD_OSD_LAYER osd, uint8_t thld);
  59. /* after calling the osd layer set func, you should call */
  60. /* this function to flush the parameters for atom option */
  61. int ark_lcd_set_osd_sync(LCD_OSD_LAYER osd);
  62. /************************************************************/
  63. int ark_lcd_get_osd_size(LCD_OSD_LAYER osd, uint32_t *width, uint32_t *height);
  64. int ark_lcd_get_osd_format(LCD_OSD_LAYER osd, LCD_OSD_FORMAT *format);
  65. int ark_lcd_get_osd_yaddr(LCD_OSD_LAYER osd, uint32_t *yaddr);
  66. uint32_t ark_lcd_get_virt_addr(void);
  67. uint8_t *ark_lcd_get_fb_addr(uint8_t index);
  68. int ark_lcd_get_boot_status(void);
  69. int ark_lcd_enable(uint8_t enable);
  70. int ark_lcd_wait_for_vsync(void);
  71. int ark_lcd_set_osd_info_atomic(LCD_OSD_LAYER osd, LcdOsdInfo *info);
  72. int ark_lcd_get_osd_info_atomic_isactive(LCD_OSD_LAYER osd);
  73. int lcd_init(void);
  74. void lcd_uninit(void);
  75. void Cpulcd_Init(void);
  76. #endif