tvenc_conf.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. typedef struct reg_s {
  2. #ifndef AVOS
  3. uint reg;
  4. uint val;
  5. #else
  6. unsigned int reg;
  7. unsigned int val;
  8. #endif
  9. } reg_t;
  10. static reg_t hdmi_tvenc_regs_480i[] = {
  11. /*1st col: recommmended, but eof/sof/vs_lines +/- 1 from spec; 2nd col: from simu */
  12. {ENCP_VIDEO_MODE, 0 /*0 */ },
  13. {ENCI_DE_H_BEGIN, 229 /*0xeb */ },
  14. {ENCI_DE_H_END, 1669 /*0x68b */ },
  15. {ENCI_DE_V_BEGIN_EVEN, 18 /*0x11 */ },
  16. {ENCI_DE_V_END_EVEN, 258 /*0x101 */ },
  17. {ENCI_DE_V_BEGIN_ODD, 19 /*0x12 */ },
  18. {ENCI_DE_V_END_ODD, 259 /*0x102 */ },
  19. {ENCI_DVI_HSO_BEGIN, 1707 /*0x6b1 */ },
  20. {ENCI_DVI_HSO_END, 115 /*0x79 */ },
  21. {ENCI_DVI_VSO_BLINE_EVN, 0 /*0x105 */ },
  22. {ENCI_DVI_VSO_ELINE_EVN, 2 /*0x1 */ },
  23. {ENCI_DVI_VSO_BEGIN_EVN, 1707 /*0x357 */ },
  24. {ENCI_DVI_VSO_END_EVN, 1707 /*0x6b1 */ },
  25. {ENCI_DVI_VSO_BLINE_ODD, 0 /*0x105 */ },
  26. {ENCI_DVI_VSO_BEGIN_ODD, 849 /*0x6b1 */ },
  27. {ENCI_DVI_VSO_ELINE_ODD, 3 /*0x2 */ },
  28. {ENCI_DVI_VSO_END_ODD, 849 /*0x357 */ },
  29. {VENC_DVI_SETTING, 0x809c /*0x809c*/ },
  30. {VENC_DVI_SETTING_MORE, 0x0 /*0x0 */ },
  31. {0,0}
  32. };
  33. static reg_t hdmi_tvenc_regs_576i[] = {
  34. {ENCP_VIDEO_MODE, 0x00004000},
  35. {ENCI_DE_H_BEGIN, 0x000000f9},
  36. {ENCI_DE_H_END, 0x00000699},
  37. {ENCI_DE_V_BEGIN_EVEN, 0x00000015},
  38. {ENCI_DE_V_END_EVEN, 0x00000135},
  39. {ENCI_DE_V_BEGIN_ODD, 0x00000016},
  40. {ENCI_DE_V_END_ODD, 0x00000136},
  41. {ENCI_DVI_HSO_BEGIN, 0x000006b1},
  42. {ENCI_DVI_HSO_END, 0x0000006f},
  43. {ENCI_DVI_VSO_BLINE_EVN, 0x00000137},
  44. {ENCI_DVI_VSO_ELINE_EVN, 0x00000001},
  45. {ENCI_DVI_VSO_BEGIN_EVN, 0x00000351},
  46. {ENCI_DVI_VSO_END_EVN, 0x000006b1},
  47. {ENCI_DVI_VSO_BLINE_ODD, 0x00000137},
  48. {ENCI_DVI_VSO_BEGIN_ODD, 0x000006b1},
  49. {ENCI_DVI_VSO_ELINE_ODD, 0x00000002},
  50. {ENCI_DVI_VSO_END_ODD, 0x00000351},
  51. {VENC_DVI_SETTING, 0x0000809c},
  52. {VENC_DVI_SETTING_MORE, 0x00000000},
  53. {0,0}
  54. };
  55. static reg_t hdmi_tvenc_regs_1080i[] = {
  56. {ENCP_VIDEO_MODE, 0x00005ffc},
  57. {ENCP_DE_H_BEGIN, 0x00000210},
  58. {ENCP_DE_H_END, 0x00001110},
  59. {ENCP_DE_V_BEGIN_EVEN, 0x00000014},
  60. {ENCP_DE_V_END_EVEN, 0x00000230},
  61. {ENCP_DE_V_BEGIN_ODD, 0x00000247},
  62. {ENCP_DE_V_END_ODD, 0x00000463},
  63. {ENCP_DVI_HSO_BEGIN, 0x00000090},
  64. {ENCP_DVI_HSO_END, 0x000000e8},
  65. {ENCP_DVI_VSO_BLINE_EVN, 0x00000000},
  66. {ENCP_DVI_VSO_ELINE_EVN, 0x00000005},
  67. {ENCP_DVI_VSO_BEGIN_EVN, 0x00000090},
  68. {ENCP_DVI_VSO_END_EVN, 0x00000090},
  69. {ENCP_DVI_VSO_BLINE_ODD, 0x00000232},
  70. {ENCP_DVI_VSO_ELINE_ODD, 0x00000237},
  71. {ENCP_DVI_VSO_BEGIN_ODD, 0x00000928},
  72. {ENCP_DVI_VSO_END_ODD, 0x00000928},
  73. {VENC_DVI_SETTING, 0x000080ad},
  74. {VENC_DVI_SETTING_MORE, 0x00000000},
  75. {0,0}
  76. };
  77. static reg_t hdmi_tvenc_regs_1080i50[] = {
  78. {ENCP_VIDEO_MODE, 0x00005ffc},
  79. {ENCP_DE_H_BEGIN, 0x00000210},
  80. {ENCP_DE_H_END, 0x00001110},
  81. {ENCP_DE_V_BEGIN_EVEN, 0x00000014},
  82. {ENCP_DE_V_END_EVEN, 0x00000230},
  83. {ENCP_DE_V_BEGIN_ODD, 0x00000247},
  84. {ENCP_DE_V_END_ODD, 0x00000463},
  85. {ENCP_DVI_HSO_BEGIN, 0x00000090},
  86. {ENCP_DVI_HSO_END, 0x000000e8},
  87. {ENCP_DVI_VSO_BLINE_EVN, 0x00000000},
  88. {ENCP_DVI_VSO_ELINE_EVN, 0x00000005},
  89. {ENCP_DVI_VSO_BEGIN_EVN, 0x00000090},
  90. {ENCP_DVI_VSO_END_EVN, 0x00000090},
  91. {ENCP_DVI_VSO_BLINE_ODD, 0x00000232},
  92. {ENCP_DVI_VSO_ELINE_ODD, 0x00000237},
  93. {ENCP_DVI_VSO_BEGIN_ODD, 0x00000ae0},
  94. {ENCP_DVI_VSO_END_ODD, 0x00000ae0},
  95. {VENC_DVI_SETTING, 0x000080ad},
  96. {VENC_DVI_SETTING_MORE, 0x00000000},
  97. {0,0}
  98. };
  99. static reg_t hdmi_tvenc_regs_480p[] = {
  100. {ENCP_VIDEO_MODE, /*0x4000 */ 0x00004000},
  101. {ENCP_DE_H_BEGIN, /*0xdc */ 0x000000d7},
  102. {ENCP_DE_H_END, /*0x67c */ 0x00000677},
  103. {ENCP_DE_V_BEGIN_EVEN, /*0x2a */ 0x0000002b},
  104. {ENCP_DE_V_END_EVEN, /*0x2a */ 0x0000020b},
  105. {ENCP_DVI_HSO_BEGIN, /*0x69c */ 0x00000697},
  106. {ENCP_DVI_HSO_END, /*0x64 */ 0x0000005f},
  107. {ENCP_DVI_VSO_BLINE_EVN, /*0x5 */ 0x00000006},
  108. {ENCP_DVI_VSO_ELINE_EVN, /*0xb */ 0x0000000c},
  109. {ENCP_DVI_VSO_BEGIN_EVN, /*0x69c */ 0x00000697},
  110. {ENCP_DVI_VSO_END_EVN, /*0x69c */ 0x00000697},
  111. {VENC_DVI_SETTING_MORE, /*0x0 */ 0x00000000},
  112. {VENC_DVI_SETTING, /*0x80ad */ 0x000080ad},
  113. {0,0}
  114. };
  115. static reg_t hdmi_tvenc_regs_576p[] = {
  116. {ENCP_VIDEO_MODE, 0x00004000},
  117. {ENCP_DE_H_BEGIN, 0x000000ef},
  118. {ENCP_DE_H_END, 0x0000068f},
  119. {ENCP_DE_V_BEGIN_EVEN, 0x0000002d},
  120. {ENCP_DE_V_END_EVEN, 0x0000026d},
  121. {ENCP_DVI_HSO_BEGIN, 0x000006a7},
  122. {ENCP_DVI_HSO_END, 0x00000067},
  123. {ENCP_DVI_VSO_BLINE_EVN, 0x00000000},
  124. {ENCP_DVI_VSO_ELINE_EVN, 0x00000005},
  125. {ENCP_DVI_VSO_BEGIN_EVN, 0x000006a7},
  126. {ENCP_DVI_VSO_END_EVN, 0x000006a7},
  127. {VENC_DVI_SETTING_MORE, 0x00000000},
  128. {VENC_DVI_SETTING, 0x000080ad},
  129. {0,0}
  130. };
  131. static reg_t hdmi_tvenc_regs_720p[] = {
  132. {ENCP_VIDEO_MODE, 0x00004040},
  133. {ENCP_DE_H_BEGIN, 0x0000028a},
  134. {ENCP_DE_H_END, 0x00000c8a},
  135. {ENCP_DE_V_BEGIN_EVEN, 0x0000001d},
  136. {ENCP_DE_V_END_EVEN, 0x000002ed},
  137. {ENCP_DVI_HSO_BEGIN, 0x00000082},
  138. {ENCP_DVI_HSO_END, 0x000000d2},
  139. {ENCP_DVI_VSO_BLINE_EVN, 0x00000004},
  140. {ENCP_DVI_VSO_ELINE_EVN, 0x00000009},
  141. {ENCP_DVI_VSO_BEGIN_EVN, 0x00000082},
  142. {ENCP_DVI_VSO_END_EVN, 0x00000082},
  143. {VENC_DVI_SETTING_MORE, 0x00000000},
  144. {VENC_DVI_SETTING, 0x000080ad},
  145. {0,0}
  146. };
  147. static reg_t hdmi_tvenc_regs_1080p[] = {
  148. {ENCP_VIDEO_MODE, 0x00004040},
  149. {ENCP_DE_H_BEGIN, 0x00000112},
  150. {ENCP_DE_H_END, 0x00000892},
  151. {ENCP_DE_V_BEGIN_EVEN, 0x00000029},
  152. {ENCP_DE_V_END_EVEN, 0x00000461},
  153. {ENCP_DVI_HSO_BEGIN, 0x00000052},
  154. {ENCP_DVI_HSO_END, 0x0000007e},
  155. {ENCP_DVI_VSO_BLINE_EVN, 0x00000000},
  156. {ENCP_DVI_VSO_ELINE_EVN, 0x00000005},
  157. {ENCP_DVI_VSO_BEGIN_EVN, 0x00000052},
  158. {ENCP_DVI_VSO_END_EVN, 0x00000052},
  159. {VENC_DVI_SETTING_MORE, 0x00000000},
  160. {VENC_DVI_SETTING, 0x0000809d},
  161. {0,0}
  162. };
  163. static reg_t hdmi_tvenc_regs_720p50[] = {
  164. {ENCP_VIDEO_MODE, 0x00004040},
  165. {ENCP_DE_H_BEGIN, 0x0000028a},
  166. {ENCP_DE_H_END, 0x00000c8a},
  167. {ENCP_DE_V_BEGIN_EVEN, 0x0000001d},
  168. {ENCP_DE_V_END_EVEN, 0x000002ed},
  169. {ENCP_DVI_HSO_BEGIN, 0x00000082},
  170. {ENCP_DVI_HSO_END, 0x000000d2},
  171. {ENCP_DVI_VSO_BLINE_EVN, 0x00000004},
  172. {ENCP_DVI_VSO_ELINE_EVN, 0x00000009},
  173. {ENCP_DVI_VSO_BEGIN_EVN, 0x00000082},
  174. {ENCP_DVI_VSO_END_EVN, 0x00000082},
  175. {VENC_DVI_SETTING_MORE, 0x00000000},
  176. {VENC_DVI_SETTING, 0x000080ad},
  177. {0,0}
  178. };
  179. static reg_t hdmi_tvenc_regs_1080p50[] = {
  180. {ENCP_VIDEO_MODE, 0x00004040},
  181. {ENCP_DE_H_BEGIN, 0x00000112},
  182. {ENCP_DE_H_END, 0x00000892},
  183. {ENCP_DE_V_BEGIN_EVEN, 0x00000029},
  184. {ENCP_DE_V_END_EVEN, 0x00000461},
  185. {ENCP_DVI_HSO_BEGIN, 0x00000052},
  186. {ENCP_DVI_HSO_END, 0x0000007e},
  187. {ENCP_DVI_VSO_BLINE_EVN, 0x00000000},
  188. {ENCP_DVI_VSO_ELINE_EVN, 0x00000005},
  189. {ENCP_DVI_VSO_BEGIN_EVN, 0x00000052},
  190. {ENCP_DVI_VSO_END_EVN, 0x00000052},
  191. {VENC_DVI_SETTING_MORE, 0x00000000},
  192. {VENC_DVI_SETTING, 0x0000809d},
  193. {0,0}
  194. };
  195. typedef struct hdmi_tvenc_config_
  196. {
  197. int vic;
  198. reg_t* reg_set;
  199. }hdmi_tvenc_config_t;
  200. static const hdmi_tvenc_config_t hdmi_tvenc_configs[] = {
  201. {HDMI_640x480p60 , NULL },
  202. {HDMI_480p60, hdmi_tvenc_regs_480p},
  203. {HDMI_480p60_16x9, hdmi_tvenc_regs_480p},
  204. {HDMI_720p60, hdmi_tvenc_regs_720p},
  205. {HDMI_1080i60, hdmi_tvenc_regs_1080i},
  206. {HDMI_480i60, hdmi_tvenc_regs_480i},
  207. {HDMI_480i60_16x9, hdmi_tvenc_regs_480i},
  208. {HDMI_1440x480p60 , NULL },
  209. {HDMI_1440x480p60_16x9 , NULL },
  210. {HDMI_1080p60 , hdmi_tvenc_regs_1080p},
  211. {HDMI_576p50, hdmi_tvenc_regs_576p},
  212. {HDMI_576p50_16x9, hdmi_tvenc_regs_576p},
  213. {HDMI_720p50, hdmi_tvenc_regs_720p50},
  214. {HDMI_1080i50, hdmi_tvenc_regs_1080i50},
  215. {HDMI_576i50, hdmi_tvenc_regs_576i},
  216. {HDMI_576i50_16x9, hdmi_tvenc_regs_576i},
  217. {HDMI_1080p50 , hdmi_tvenc_regs_1080p50},
  218. {HDMI_1080p24, hdmi_tvenc_regs_1080p},
  219. {HDMI_1080p25, hdmi_tvenc_regs_1080p},
  220. {HDMI_1080p30, hdmi_tvenc_regs_1080p},
  221. {HDMI_Unkown, NULL},
  222. };