drv_cvd2_internal.h 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. #ifndef _DRV_CVD2_INTERNAL_H_
  2. #define _DRV_CVD2_INTERNAL_H_
  3. #include <drv_types.h>
  4. #include <drv_cvd2_external.h>
  5. #include <drv_scart.h>
  6. #ifndef BIT0
  7. #define BIT0 0x01
  8. #endif
  9. #ifndef BIT1
  10. #define BIT1 0x02
  11. #endif
  12. #ifndef BIT2
  13. #define BIT2 0x04
  14. #endif
  15. #ifndef BIT3
  16. #define BIT3 0x08
  17. #endif
  18. #ifndef BIT4
  19. #define BIT4 0x10
  20. #endif
  21. #ifndef BIT5
  22. #define BIT5 0x20
  23. #endif
  24. #ifndef BIT6
  25. #define BIT6 0x40
  26. #endif
  27. #ifndef BIT7
  28. #define BIT7 0x80
  29. #endif
  30. #define CCTT_ON 1
  31. #define CCTT_OFF 0
  32. /* Use oscillator frequency */
  33. #define Fs_OSC 24 //27,24 MHz
  34. #if( Fs_OSC == 27 )
  35. #define NTSC_CDTO_DATA 0x21f07c1f
  36. #define NTSC443_CDTO_DATA 0x2a098acb
  37. #define PALM_CDTO_DATA 0x21e6efa4
  38. #define PALCN_CDTO_DATA 0x21f69446
  39. #define PALI_CDTO_DATA 0x2a098acb
  40. #define SECAM_CDTO_DATA 0x28a33bb2
  41. #define PAL60_CDTO_DATA 0x2a098acb
  42. #define ALL_HDTO 0x20000000
  43. #else
  44. #define NTSC_CDTO_DATA 0x2549745d //0x254cf394
  45. #define NTSC443_CDTO_DATA 0x2e2efbbc //0x2e33508b
  46. #define PALM_CDTO_DATA 0x253ef6c7 //0x25427501
  47. #define PALCN_CDTO_DATA 0x25502666 //0x2553a63d
  48. #define PALI_CDTO_DATA 0x2e2efbbc //0x2e33508b
  49. #define SECAM_CDTO_DATA 0x2ca4b855 //0x2ca55555 //0x2ca98539
  50. #define PAL60_CDTO_DATA 0x2e2efbbc //0x2e33508b
  51. #define ALL_HDTO 0x23280000 //0x232b4c0f
  52. #endif
  53. #define GET_HCDTO_BYTE1(SET_CDTO) ( SET_CDTO & 0xff )
  54. #define GET_HCDTO_BYTE2(SET_CDTO) ( (SET_CDTO >> 8 ) & 0xff )
  55. #define GET_HCDTO_BYTE3(SET_CDTO) ( (SET_CDTO >> 16 ) & 0xff )
  56. #define GET_HCDTO_BYTE4(SET_CDTO) ( (SET_CDTO >> 24 ) & 0xff )
  57. #define CVD2_BASIC_ADDRESS 0xbe170000
  58. //=================================================================================================
  59. // CVD2 register address.
  60. //=================================================================================================
  61. //=================================================================================================
  62. // CVD2 bits define.
  63. //=================================================================================================
  64. /* Reg=0x3a */
  65. enum {
  66. no_signal = BIT0,
  67. hlock = BIT1,
  68. vlock = BIT2,
  69. chroma_lock = BIT3,
  70. chroma_hv_Locked = 0x0e,
  71. };
  72. /* Reg=0x3c */
  73. typedef enum {
  74. ntsc_detected = 0x00,
  75. pal_detected = BIT0,
  76. secam_detected = BIT1,
  77. _625lines_detected = BIT2,
  78. COLOR_SYSTEM_DETECTED = 0x07,
  79. }cvd2_TypeDetectStatus;
  80. /* VBI data Type */
  81. typedef enum {
  82. US_CC,
  83. EURO_CC,
  84. VPS,
  85. TT_625A,
  86. TT_625B,
  87. TT_625C,
  88. TT_625D,
  89. TT_525B,
  90. TT_525C,
  91. TT_525D,
  92. WST625,
  93. WST525,
  94. WSS625,
  95. WSSJ,
  96. CC_TT_END
  97. }cvd2_TypeVbiMode;
  98. /* Define FC status flags. */
  99. typedef enum{
  100. FC_SAME,
  101. FC_LESS,
  102. FC_MORE,
  103. }cvd2_TypeFcStatus;
  104. /*Select input source */
  105. enum
  106. {
  107. CVBS=0,
  108. SVIDEO,
  109. CVD2ATV,
  110. RGB_SOURCE,
  111. NONE_SOURCE
  112. };
  113. /* Enable or Disable timer. */
  114. typedef enum
  115. {
  116. CVD2_DISABLE,
  117. CVD2_ENABLE,
  118. }cvd2_TypeTimerStatus;
  119. typedef enum
  120. {
  121. TV_INPUT,
  122. AV_INPUT,
  123. SV_INPUT,
  124. NONE_INPUT,
  125. CVD2_END_INPUT = NONE_INPUT
  126. }cvd2_TypeInputSrc;
  127. typedef enum
  128. {
  129. CVD2_EXE_OK = 0, // Execution successful
  130. CVD2_CLK_ERROR, // Execution Fail due to clock is disabled
  131. CVD2_UNKNOWN_ERROR // Reserved extending Error conditions
  132. }cvd2_TypeExeResult;
  133. typedef enum
  134. {
  135. TTSLICER_MODE_0,
  136. TTSLICER_MODE_1,
  137. TTSLICER_MODE_2,
  138. TTSLICER_MODE_3,
  139. }cvd2_TypeTTSlicerMode;
  140. typedef struct _Cvd2HVactive_t
  141. {
  142. UINT8 CbCrSwap;
  143. UINT8 VactiveStart;
  144. UINT8 VactiveHeight;
  145. UINT8 OddEvenSwap;
  146. UINT8 HactiveDelay;
  147. UINT16 HactiveStart; // 10 bits since p330
  148. UINT16 HactiveEnd; // Add since p330
  149. }Cvd2HVactive_t;
  150. typedef struct _CVBSOutRequest_t
  151. {
  152. cvd2_TypeInputSrc SrcType;
  153. BOOL Enable;
  154. cvd2_TypeCVBSOMode OutMode;
  155. }cvd2_TypeCVBSOut, *cvd2_pTypeCVBSOut;
  156. typedef struct _Cvd2OSDAdjValue_t
  157. {
  158. UINT8 path;
  159. UINT8 cmd;
  160. INT32 value;
  161. INT32 min;
  162. INT32 max;
  163. }cvd2_TypeOSDAdjValue, *cvd2_pTypeOSDAdjValue;
  164. typedef struct _Cvd2SigSTD_t
  165. {
  166. BOOL vertical_nSTD; // vnon_standard
  167. BOOL horizontal_nSTD; // hnon_standard
  168. BOOL nSTD_det_en; // non_standard_det_en
  169. }cvd2_TypeSigSTD, *cvd2_pTypeSigSTD;
  170. /*!
  171. * @brief input signal status
  172. */
  173. typedef enum
  174. {
  175. CVD2_SIGNAL_STABLE,
  176. CVD2_SIGNAL_UNSTABLE,
  177. CVD2_NO_SIGNAL_IN
  178. } cvd2_SignalStatus_t;
  179. /*!
  180. * @brief DRV_CVD2_Detect_AudioM() use for report Audio M or NTSC443 colorburst
  181. */
  182. typedef enum
  183. {
  184. DRV_AudioM = 0,
  185. DRV_Colorburst,
  186. DRV_None
  187. } cvd2_BurstType_t;
  188. typedef enum
  189. {
  190. DRV_TvDec_AUTO_DETECT_PALM = 0x01,//0x01<<0x00,
  191. DRV_TvDec_AUTO_DETECT_PALCN = 0x02,//0x01<<0x01,
  192. DRV_TvDec_AUTO_DETECT_SECAM = 0x04,//0x01<<0x02,
  193. DRV_TvDec_AUTO_DETECT_NTSC443 = 0x08,//0x01<<0x03,
  194. DRV_TvDec_AUTO_DETECT_PAL60 = 0x10,//0x01<<0x04,
  195. DRV_TvDec_AUTO_DETECT_NTSC = 0x20,//0x01<<0x05,
  196. DRV_TvDec_AUTO_DETECT_PALI = 0x40,//0x01<<0x06,
  197. DRV_TvDec_AUTO_DETECT_SECAML = 0x80,//0x01<<0x07
  198. } cvd2_AutoDetect_t;
  199. typedef enum
  200. {
  201. DRV_DetectSECAML_None = 0,
  202. DRV_DetectSECAML_Detect,
  203. DRV_DetectSECAML_Feedback,
  204. }cvd2_DetectSECAML_t;
  205. typedef enum
  206. {
  207. DRV_BWnwt_Detect_None = 0,
  208. DRV_BWnwt_Detect_Detect
  209. }cvd2_DetectBWnwt_t;
  210. /* STD Flag */
  211. typedef enum {
  212. PAL_Detected = BIT0,
  213. Is_SECAM = BIT1,
  214. Freq_358 = BIT2,
  215. Line_625 = BIT3,
  216. Burst_detected = BIT4,
  217. }cvd2_TypeStdFlag;
  218. ////=================================================================================================
  219. // Exporting define function area.
  220. //=================================================================================================
  221. extern void ADC175_InputSelect( INT32 iInputSource );
  222. extern void DRV_CVD2_EnableTimer( UINT8 ucType );
  223. extern void DRV_CVD2_Change_Channel(UINT8 bUMFChangeChannel,INT32 channel);
  224. extern void DRV_CVD2_ChannelScan( BOOL b_scan );
  225. extern INT32 DRV_CVD2_Power(INT32 bPowerOn);
  226. extern void DRV_CVD2_InputSelect( UINT8 ucInputSource );
  227. extern BOOL DRV_CVD2_Setup_CVBSOut(cvd2_pTypeCVBSOut pCVBSOut );
  228. extern void DRV_CVD2_Enable_CVBSO_Gain ( BOOL bEnable );
  229. extern UINT8 DRV_CVD2_TV_Get_DetectedStandard(void);
  230. extern void DRV_CVD2_TV_Setting(UINT8 ColorSystem);
  231. //Sync and color detected.
  232. extern UINT8 DRV_CVD2_GetDetectedStandard( void );
  233. extern UINT8 DRV_CVD2_Get_Reg3A ( void );
  234. extern void DRV_CVD2_Ademod_Input_Reset(void *unused);
  235. //CC or TT select.
  236. extern void DRV_CVD2_Enable_Ypp_CC(void);
  237. extern void DRV_CVD2_Disable_Ypp_CC(void);
  238. extern INT32 DRV_CVD2_Power_Setting(INT32 bPowerOn);
  239. extern void DRV_CVD2_CCTT_Select( UINT8 ucMode, cvd2_TypeVbiMode ucVBI_Type );
  240. //OSD menu in factor mode.
  241. extern INT32 DRV_CVD2_Adjust(cvd2_TypeOSDAdjValue osdadj);
  242. extern void DRV_CVD2_Sync_OSDFactory(CVD2VideoDecoderSetting_t* osdFactory);
  243. extern BOOL DRV_CVD2_GetColorSystem( UINT8 *ucColorMode );
  244. extern void DRV_CVD2_Disable_3DCombMemory(void);
  245. extern void DRV_CVD2_Set_AAFFilter(INT32 bUMFSetFilter);
  246. extern cvd2_TypeExeResult DRV_CVD2_Set_TTSlicerEccMode(DRV_TvDecTTEcc_t ucValue);
  247. extern cvd2_TypeExeResult DRV_CVD2_Get_WssData(CVD2_WSSDATA_t *Wssdata);
  248. extern cvd2_TypeExeResult DRV_CVD2_Get_LockStatus(UINT8 *ucValue);
  249. extern cvd2_TypeExeResult DRV_CVD2_Get_StandardFeature(UINT8 *ucValue);
  250. extern cvd2_TypeExeResult CVD2_GetNoiseStatus(UINT8 *ucValue);
  251. extern cvd2_TypeExeResult DRV_CVD2_Get_SyncHeight(UINT8 *ucValue);
  252. extern cvd2_TypeExeResult DRV_CVD2_CheckNonSTDStatus(cvd2_pTypeSigSTD sigSTD_status);
  253. extern cvd2_TypeExeResult DRV_CVD2_Enable_DC_Restore(BOOL ucValue);
  254. extern cvd2_TypeExeResult DRV_CVD2_Get_MemoryAddress(UINT32 *Address);
  255. extern cvd2_TypeExeResult DRV_CVD2_Enable_DumpMemoryData(BOOL Enable);
  256. extern cvd2_TypeExeResult DRV_CVD2_GetCgainStatus(UINT16 *ucValue);
  257. extern cvd2_TypeExeResult DRV_CVD2_GetVsyncEqualPulseStatus(UINT8 *ucValue);
  258. extern cvd2_TypeExeResult DRV_CVD2_GetSyncDelta(UINT8 *ucValue);
  259. extern cvd2_TypeExeResult DRV_CVD2_Enable_PAL_HighFrameDiff(BOOL Enable);
  260. extern cvd2_TypeExeResult DRV_CVD2_AV_PAL_FinetuneHFDiff(BOOL Enable);
  261. extern cvd2_TypeExeResult DRV_CVD2_Specific2D3D(BOOL Enable);
  262. extern UINT8 DRV_CVD2_GetColbarCnt(void);
  263. extern cvd2_TypeExeResult DRV_CVD2_GetLumaHist(UINT8 *luma);
  264. extern cvd2_TypeExeResult DRV_CVD2_GetCbHist(UINT8 *cb);
  265. extern cvd2_TypeExeResult DRV_CVD2_GetCrHist(UINT8 *cr);
  266. extern cvd2_TypeExeResult DRV_CVD2_GetSatHist(UINT8 *saturation);
  267. extern cvd2_TypeExeResult DRV_CVD2_Set_CVBSO_Mode(DRV_TvDecOutputSrcType_t outMode);
  268. extern cvd2_TypeExeResult DRV_CVD2_Get_CVBSO_Mode(DRV_TvDecOutputSrcType_t *outMode);
  269. extern DRV_Status_t DRV_CVD2_Atv_Set_AutoDetectFormat(cvd2_AutoDetect_t eFormat);
  270. extern DRV_Status_t DRV_CVD2_Detect_AudioM (cvd2_BurstType_t *peRetBurstType);
  271. extern DRV_Status_t DRV_CVD2_Detect_Signal_InScanning (cvd2_SignalStatus_t *peRetStatus);
  272. #ifdef CONFIG_SCART_SUPPORT
  273. extern void DRV_CVD2_Scart_Sorc_Setting(INT32 num, DRV_ScartSrcType_t ucInputSource);
  274. extern void DRV_CVD2_Scart_Enable(INT32 num);
  275. extern void DRV_CVD2_Set_Scart_InputType(UINT8 bDisable);
  276. extern void DRV_CVD2_Scart_Exit(void);
  277. #endif
  278. #endif