vdin_ctl.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /*
  2. * VDIN driver
  3. *
  4. * Author: Lin Xu <lin.xu@amlogic.com>
  5. * Bobby Yang <bo.yang@amlogic.com>
  6. *
  7. * Copyright (C) 2010 Amlogic Inc.
  8. *
  9. * This program is free software; you can redistribute it and/or modify
  10. * it under the terms of the GNU General Public License version 2 as
  11. * published by the Free Software Foundation.
  12. */
  13. #ifndef __TVIN_VDIN_CTL_H
  14. #define __TVIN_VDIN_CTL_H
  15. #include <linux/amports/vframe.h>
  16. #include "vdin.h"
  17. // ***************************************************************************
  18. // *** enum definitions *********************************************
  19. // ***************************************************************************
  20. /*
  21. YUV601: SDTV BT.601 YCbCr (16~235, 16~240, 16~240)
  22. YUV601F: SDTV BT.601 Full_Range YCbCr ( 0~255, 0~255, 0~255)
  23. YUV709: HDTV BT.709 YCbCr (16~235, 16~240, 16~240)
  24. YUV709F: HDTV BT.709 Full_Range YCbCr ( 0~255, 0~255, 0~255)
  25. RGBS: StudioRGB (16~235, 16~235, 16~235)
  26. RGB: RGB ( 0~255, 0~255, 0~255)
  27. */
  28. typedef enum vdin_matrix_csc_e {
  29. VDIN_MATRIX_NULL = 0,
  30. VDIN_MATRIX_XXX_YUV601_BLACK,
  31. VDIN_MATRIX_RGB_YUV601,
  32. VDIN_MATRIX_YUV601_RGB,
  33. VDIN_MATRIX_RGB_YUV601F,
  34. VDIN_MATRIX_YUV601F_RGB,
  35. VDIN_MATRIX_RGBS_YUV601,
  36. VDIN_MATRIX_YUV601_RGBS,
  37. VDIN_MATRIX_RGBS_YUV601F,
  38. VDIN_MATRIX_YUV601F_RGBS,
  39. VDIN_MATRIX_YUV601F_YUV601,
  40. VDIN_MATRIX_YUV601_YUV601F,
  41. VDIN_MATRIX_RGB_YUV709,
  42. VDIN_MATRIX_YUV709_RGB,
  43. VDIN_MATRIX_RGB_YUV709F,
  44. VDIN_MATRIX_YUV709F_RGB,
  45. VDIN_MATRIX_RGBS_YUV709,
  46. VDIN_MATRIX_YUV709_RGBS,
  47. VDIN_MATRIX_RGBS_YUV709F,
  48. VDIN_MATRIX_YUV709F_RGBS,
  49. VDIN_MATRIX_YUV709F_YUV709,
  50. VDIN_MATRIX_YUV709_YUV709F,
  51. VDIN_MATRIX_YUV601_YUV709,
  52. VDIN_MATRIX_YUV709_YUV601,
  53. VDIN_MATRIX_YUV601_YUV709F,
  54. VDIN_MATRIX_YUV709F_YUV601,
  55. VDIN_MATRIX_YUV601F_YUV709,
  56. VDIN_MATRIX_YUV709_YUV601F,
  57. VDIN_MATRIX_YUV601F_YUV709F,
  58. VDIN_MATRIX_YUV709F_YUV601F,
  59. VDIN_MATRIX_RGBS_RGB,
  60. VDIN_MATRIX_RGB_RGBS,
  61. } vdin_matrix_csc_t;
  62. // ***************************************************************************
  63. // *** structure definitions *********************************************
  64. // ***************************************************************************
  65. typedef struct vdin_matrix_lup_s {
  66. unsigned int pre_offset0_1;
  67. unsigned int pre_offset2;
  68. unsigned int coef00_01;
  69. unsigned int coef02_10;
  70. unsigned int coef11_12;
  71. unsigned int coef20_21;
  72. unsigned int coef22;
  73. unsigned int post_offset0_1;
  74. unsigned int post_offset2;
  75. } vdin_matrix_lup_t;
  76. typedef struct vdin_stat_s {
  77. unsigned int sum_luma ; // VDIN_HIST_LUMA_SUM_REG
  78. unsigned int sum_pixel ; // VDIN_HIST_PIX_CNT_REG
  79. } vdin_stat_t;
  80. typedef struct vdin_hist_cfg_s {
  81. unsigned int pow;
  82. unsigned int win_en;
  83. unsigned int rd_en;
  84. unsigned int hstart;
  85. unsigned int hend;
  86. unsigned int vstart;
  87. unsigned int vend;
  88. } vdin_hist_cfg_t;
  89. // *****************************************************************************
  90. // ******** GLOBAL FUNCTION CLAIM ********
  91. // *****************************************************************************
  92. extern void vdin_set_vframe_prop_info(vframe_t *vf, unsigned int offset);
  93. extern void vdin_get_format_convert(struct vdin_dev_s *devp);
  94. extern void vdin_set_all_regs(struct vdin_dev_s *devp);
  95. extern void vdin_set_default_regmap(unsigned int offset);
  96. extern void vdin_set_def_wr_canvas(struct vdin_dev_s *devp);
  97. extern void vdin_hw_enable(unsigned int offset);
  98. extern void vdin_hw_disable(unsigned int offset);
  99. extern void vdin_set_meas_mux(unsigned int offset, enum tvin_port_e port_);
  100. extern unsigned int vdin_get_field_type(unsigned int offset);
  101. #if defined(CONFIG_ARCH_MESON2)
  102. extern void vdin_get_meas_timing(struct vdin_dev_s *devp);
  103. extern void vdin_set_cutwin(struct vdin_dev_s *devp);
  104. extern void vdin_set_decimation(struct vdin_dev_s *devp);
  105. #endif
  106. extern inline unsigned int vdin_get_meas_hcnt64(struct vdin_dev_s *devp);
  107. extern unsigned int vdin_get_active_h(unsigned int offset);
  108. extern unsigned int vdin_get_active_v(unsigned int offset);
  109. extern unsigned int vdin_get_total_v(unsigned int offset);
  110. extern unsigned int vdin_get_canvas_id(unsigned int offset);
  111. extern void vdin_set_canvas_id(unsigned int offset, unsigned int canvas_id);
  112. extern void vdin_enable_module(unsigned int offset, bool enable);
  113. extern void vdin_set_matrix(struct vdin_dev_s *devp);
  114. extern void vdin_set_matrix_blank(struct vdin_dev_s *devp);
  115. extern void vdin_delay_line(unsigned short num,unsigned int offset);
  116. extern void set_wr_ctrl(int h_pos,int v_pos,struct vdin_dev_s *devp);
  117. extern bool vdin_check_vs(struct vdin_dev_s *devp);
  118. #endif