drv_kmf_ioctl_internal.h 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. #ifndef _KMF_IOCTL_INTERNAL_H_
  2. #define _KMF_IOCTL_INTERNAL_H_
  3. typedef struct _RWriteEDID_t
  4. {
  5. UINT8 address;
  6. UINT8 len;
  7. UINT8 src;
  8. UINT8 *data;
  9. }RWriteEDID_t;
  10. typedef struct _ScartInputData
  11. {
  12. UINT8 index;
  13. UINT8 InputType;
  14. }ScartInputData_t;
  15. typedef struct _EMIUTILIOCTL_t
  16. {
  17. UINT8 cmd;
  18. UINT8 mode;
  19. }EMIUTILIOCTL_t;
  20. typedef enum {
  21. MAIN,
  22. SUB
  23. }InputPath;
  24. /* Scart input type */
  25. typedef enum
  26. {
  27. TVFE_TvDec_SCART_CVBS = 0,
  28. TVFE_TvDec_SCART_RGB,
  29. TVFE_TvDec_SCART_MIX,
  30. TVFE_TvDec_SCART_SV,
  31. } TVFE_TvDecScartInputType_e;
  32. typedef enum
  33. {
  34. TVFE_TvDec_SCART_AutoMode= 0,
  35. TVFE_TvDec_SCART_Force_RGB,
  36. TVFE_TvDec_SCART_Force_CVBS,
  37. TVFE_TvDec_SCART_Force_SV
  38. } TVFE_TvDecForceScartType_t;
  39. typedef enum{
  40. TVFE_TT_ECC_HAMMING,
  41. TVFE_TT_ECC_PARITY
  42. }TVFE_TTSlicerEccMode_e;
  43. /* Enumeration of TVFE events */
  44. typedef enum {
  45. TVFE_EVENT_CH1_FSM_INITIAL_COMPLETE,
  46. /*
  47. ** This event will sent one time when a available signal become a
  48. ** unavailable signal
  49. */
  50. TVFE_EVENT_CH1_NO_SIGNAL,
  51. TVFE_EVENT_CH1_DEBOUNCING_SIGNAL,
  52. /*
  53. ** This event will sent one time when a new available signal is found
  54. */
  55. TVFE_EVENT_CH1_AVAILABLE_SIGNAL,
  56. TVFE_EVENT_CH1_FSM_STOP,
  57. TVFE_EVENT_CH1_PC_AUTO_TUNE_COMPLETE,
  58. TVFE_EVENT_CH1_PC_AUTO_TUNE,
  59. TVFE_EVENT_CH1_HDCP_PROTECT,
  60. TVFE_EVENT_CH1_HDCP_UNPROTECT,
  61. TVFE_EVENT_CH1_SCART_RGB,
  62. TVFE_EVENT_CH1_SCART_CVBS,
  63. TVFE_EVENT_CH1_UNSUPPORT_MODE,
  64. TVFE_EVENT_CH1_HDMI_HDMI_MODE,
  65. TVFE_EVENT_CH1_HDMI_DVI_MODE,
  66. TVFE_EVENT_MAX,
  67. } TVFE_Event_e;
  68. /* Enumeration of FSM states */
  69. typedef enum {
  70. FSM_VFE_INITIAL,
  71. FSM_VFE_NO_SIGNAL,
  72. FSM_VFE_NO_SIGNAL_CHECK_STATUS,
  73. FSM_VFE_SIGNAL_IN_DEBOUNCE,
  74. FSM_VFE_SIGNAL_OUT_DEBOUNCE,
  75. FSM_VFE_SIGNAL_STABLE_UPDATE_RESOLUTION,
  76. FSM_VFE_SIGNAL_STABLE,
  77. FSM_VFE_NO_SIGNAL_INFORM_VOM,
  78. FSM_VFE_NOT_NO_SIGNAL,
  79. FSM_VFE_SIGNAL_UNSUPPORT,
  80. FSM_VFE_VAFE_AUTOTUNE,
  81. FSM_VFE_VAFE_HW_AUTO_OFFSET,
  82. FSM_VFE_VAFE_HW_AUTO_GAIN,
  83. FSM_VFE_VAFE_HW_AUTOCALIBRATION,
  84. FSM_VFE_VAFE_MODE_DETECT,
  85. FSM_VFE_VAFE_AUTOCOLOR_OFFSET_ADJUST,
  86. FSM_VFE_TVDEC_TUNER_FIND_NEW_SIGNAL,
  87. FSM_VFE_TVDEC_TUNER_FIND_NEW_SIGNAL_DEBOUNCE,
  88. FSM_VFE_TVDEC_TUNER_SCANNING_INITIAL,
  89. FSM_VFE_TVDEC_TUNER_SCANNING,
  90. FSM_VFE_TVDEC_VCR,
  91. FSM_VFE_TVDEC_NON_STANDARD,
  92. FSM_VFE_VAFE_SOG_BOUNDARY_DETECT,
  93. FSM_VFE_UNUSED = 0xff,
  94. } TVFE_CheckState_e;
  95. /* Describe embedded front-end video digitizer */
  96. typedef enum {
  97. TVFE_TV_DECODER,
  98. TVFE_ADC,
  99. TVFE_HDMI,
  100. TVFE_CCIR656,
  101. TVFE_MPEG,
  102. TVFE_DEVICE_MAX,
  103. } TVFE_Device_e;
  104. typedef enum {
  105. TVFE_FRAME_BUFFER_MODE = 0,
  106. TVFE_BYPASS_MODE,
  107. TVFE_MODE_MAX,
  108. } TVFE_ByPassmode_e;
  109. typedef enum
  110. {
  111. TVFE_ATV_Input_Vsync_FreqRange_Unknown = 0,
  112. TVFE_ATV_Input_Vsync_FreqRange_50Hz,
  113. TVFE_ATV_Input_Vsync_FreqRange_60Hz,
  114. TVFE_ATV_Input_Vsync_FreqRange_Other,
  115. } TVFE_ATV_INPUT_VSYNCFREQ_t;
  116. typedef enum
  117. {
  118. TVFE_SRAMEDID_PORT_PC,
  119. TVFE_SRAMEDID_PORT_HDMI0,
  120. TVFE_SRAMEDID_PORT_HDMI1,
  121. TVFE_SRAMEDID_PORT_HDMI2,
  122. TVFE_SRAMEDID_PORT_MAX,
  123. } TVFE_SRAMEDID_PORT_e;
  124. /*****************************************************************************
  125. ** Structure defined here
  126. *****************************************************************************/
  127. typedef struct {
  128. PLF_VideoID_t eModeID;
  129. UINT32 wHStart; /* tpi input window hstart position */
  130. UINT32 wVStart; /* tpi input window vstart position */
  131. UINT32 wImgBufMaxWidth;
  132. UINT32 wImgBufMaxHeight;
  133. } TVFE_TimingInfo_Part1_st;
  134. typedef struct {
  135. UINT32 wHStart_x1; /* H start position of 1X timing */
  136. UINT32 wHStart_x1_5; /* H start position of 1.5X timing */
  137. signed INT8 bSVOffsetX; /* SVideo H start position offset */
  138. signed INT8 bSVOffsetY; /* SVideo V start position offset */
  139. signed INT8 bSCARTRgbOffsetX; /* SCART_RGB H start position offset */
  140. signed INT8 bSCARTRgbOffsetY; /* SCART_RGB V start position offset */
  141. } tvdec_param_st;
  142. typedef struct {
  143. UINT8 bTUNER_HUpSampling; /* H Upsampling mode for TUNER source */
  144. UINT8 bTUNER_10bitsPath; /* DRAM control mode for TUNER source */
  145. UINT8 bCVBS_HUpSampling; /* H Upsampling mode for CVBS source */
  146. UINT8 bCVBS_10bitsPath; /* DRAM control mode for CVBS source */
  147. UINT8 bSVIDEO_HUpSampling; /* H Upsampling mode for SVIDEO source */
  148. UINT8 bSVIDEO_10bitsPath; /* DRAM control mode for SVIDEO source */
  149. UINT8 bSCART_HUpSampling; /* H Upsampling mode for SCART source */
  150. UINT8 bSCART_10bitsPath; /* DRAM control mode for SCART source */
  151. } tvdec_optimize_st;
  152. typedef struct {
  153. //weilung for SPV9107
  154. struct {
  155. UINT8 bfPolRef : 1;
  156. UINT8 bHPol : 1;
  157. UINT8 bVPol : 1;
  158. UINT8 bReserved : 5;
  159. } polarity;
  160. UINT8 bEnableFrameBufferMode;
  161. UINT8 bSamplingMode;
  162. UINT8 bPhase;
  163. struct {
  164. UINT8 bSOGTh : 5 ;
  165. UINT8 bReserved : 3;
  166. } sog;
  167. UINT8 bVCORange; //2-bits
  168. UINT8 bCurrent; //5-bits
  169. UINT8 bClampPlacement;
  170. UINT8 bClampDuration;
  171. UINT8 bAAFBandWidth; //5-bits
  172. UINT8 bPreCoast;
  173. UINT8 bPostCoast;
  174. UINT8 bModeDetectWithSyncWidth;
  175. struct {
  176. UINT32 wfDitherEn : 1;
  177. UINT32 wfBit1 : 1;
  178. UINT32 wfBit2 : 1;
  179. UINT32 wfBit3 : 1;
  180. UINT32 wfBit4 : 1;
  181. UINT32 wfBit5 : 1;
  182. UINT32 wfBit6 : 1;
  183. UINT32 wfBit7 : 1;
  184. UINT32 wReserved : 8;
  185. } extra;
  186. UINT8 bExtraByte;
  187. } adc_param_st;
  188. /* 10bits or not */
  189. typedef struct {
  190. UINT8 b10bitsPath; /* DRAM control mode */
  191. } optimize_st;
  192. /* YUV444 or not */
  193. typedef struct {
  194. UINT8 bYUV;/*HDMI Output Color Space*/
  195. } Color_Space_st;
  196. /* Timing information */
  197. typedef struct {
  198. PLF_VideoID_t eModeID;
  199. UINT8 validflag;
  200. UINT32 wHStart; /* tpi input window hstart position */
  201. UINT32 wVStart; /* tpi input window vstart position */
  202. UINT32 wHValid; /* tpi input window hvalid size */
  203. UINT32 wVValid; /* tpi input window vvalid size */
  204. UINT32 wHTotal; /* tpi input window htotal size */
  205. UINT32 wVTotal; /* tpi input window vtotal size */
  206. UINT32 wClkRate; /* input timing clock rate */
  207. UINT8 fInterlace;
  208. UINT32 wImgBufMaxWidth;
  209. UINT32 wImgBufMaxHeight;
  210. } TVFE_TimingInfo_st;
  211. typedef struct {
  212. PLF_VideoID_t eModeID;
  213. INT8 *ModeString;
  214. UINT32 wHValid; /* tpi input window hvalid size */
  215. UINT32 wVValid; /* tpi input window vvalid size */
  216. UINT32 wHTotal; /* tpi input window htotal size */
  217. UINT32 wVTotal; /* tpi input window vtotal size */
  218. UINT32 wClkRate; /* input timing clock rate */
  219. UINT8 fInterlace;
  220. UINT32 wHsFreq;
  221. UINT32 wVsFreq;
  222. UINT8 bHsOutWidth;
  223. UINT32 wHSync_Width;
  224. UINT32 wVSync_Width;
  225. } TVFE_ADCTimingInfo_Part2_st;
  226. typedef struct {
  227. //UINT32 custom_tag;
  228. //void *custom_data;
  229. TVFE_TimingInfo_Part1_st tpi;
  230. adc_param_st vfe;
  231. optimize_st optimize;
  232. TVFE_ADCTimingInfo_Part2_st *ModeTable;
  233. } TVFE_ADCTimingInfo_st;
  234. /* TV decoding timing info */
  235. typedef struct {
  236. PLF_VideoID_t eModeID;
  237. UINT8 validflag;
  238. UINT32 wHValid; /* tpi input window hvalid size */
  239. UINT32 wVValid; /* tpi input window vvalid size */
  240. UINT32 wHTotal; /* tpi input window htotal size */
  241. UINT32 wVTotal; /* tpi input window vtotal size */
  242. UINT32 wClkRate; /* input timing clock rate */
  243. UINT8 fInterlace;
  244. } TVFE_TVDecTimingInfo_Part2_st;
  245. typedef struct {
  246. //UINT32 custom_tag;
  247. //void *custom_data;
  248. TVFE_TimingInfo_Part1_st tpi;
  249. const tvdec_param_st tvdec;
  250. tvdec_optimize_st tvdec_optimize;
  251. TVFE_TVDecTimingInfo_Part2_st *ModeTable;
  252. } TVFE_TVDecTimingInfo_st;
  253. typedef struct {
  254. UINT8 bEnableFrameBufferMode;
  255. } tmds_param_st;
  256. /*!
  257. * @brief HDMI 3D Structure
  258. */
  259. typedef enum
  260. {
  261. DRV_HDMI_3D_STRUCT_FP = 0x00, //frame packing
  262. DRV_HDMI_3D_STRUCT_FA, //field alternative
  263. DRV_HDMI_3D_STRUCT_LA, //line alternative
  264. DRV_HDMI_3D_STRUCT_SS_F, //side by side full
  265. DRV_HDMI_3D_STRUCT_L_D, //L + depth
  266. DRV_HDMI_3D_STRUCT_L_D_G, //L + depth + graphic + graphics-depth
  267. DRV_HDMI_3D_STRUCT_TB, //Top and Bottom
  268. DRV_HDMI_3D_STRUCT_RESV7, //reserved
  269. DRV_HDMI_3D_STRUCT_SS_H, //side by side half
  270. DRV_HDMI_3D_STRUCT_RESV9, //reserved
  271. DRV_HDMI_3D_STRUCT_RESV10, //reserved
  272. DRV_HDMI_3D_STRUCT_RESV11, //reserved
  273. DRV_HDMI_3D_STRUCT_RESV12, //reserved
  274. DRV_HDMI_3D_STRUCT_RESV13, //reserved
  275. DRV_HDMI_3D_STRUCT_RESV14, //reserved
  276. DRV_HDMI_3D_STRUCT_NOTUSE, //not use
  277. } DRV_HDMI3DStructure_e;
  278. typedef struct {
  279. PLF_VideoID_t eModeID;
  280. DRV_HDMI3DStructure_e e3DStructure;
  281. UINT32 wHValid; /* tpi input window hvalid size */
  282. UINT32 wVValid; /* tpi input window vvalid size */
  283. UINT32 wHTotal; /* tpi input window htotal size */
  284. UINT32 wVTotal; /* tpi input window vtotal size */
  285. UINT32 wClkRate; /* input timing clock rate */
  286. UINT8 fInterlace;
  287. UINT32 wHsFreq;
  288. UINT32 wVsFreq;
  289. /* Input Pixel Clock Replication or Output Pixel clock divider */
  290. struct {
  291. /*
  292. ** 00 : 1x clock cycle (no replication) 01: 2x clock
  293. ** 10: RSVD 11: 4x clock
  294. */
  295. UINT8 bIptPixRep : 2;
  296. /* 00: No divide 01: Divide by 2 10: RSVD 11: Divide by 4 */
  297. UINT8 bOptPixDiv : 2;
  298. /* Output Clock Invert 1=invert output clock 0=Normal output clock */
  299. UINT8 bOutputClockInvert : 3;
  300. } PixRepDiv;
  301. } TVFE_HDMITimingInfo_Part2_st;
  302. /* HDMI timing info */
  303. typedef struct {
  304. //UINT32 custom_tag;
  305. //void *custom_data;
  306. TVFE_TimingInfo_Part1_st tpi;
  307. tmds_param_st vfe;
  308. optimize_st optimize;
  309. Color_Space_st ColorSpace;
  310. TVFE_HDMITimingInfo_Part2_st *ModeTable;
  311. } TVFE_HDMITimingInfo_st;
  312. #ifdef __KERNEL__
  313. #include <linux/version.h>
  314. #include <linux/fs.h>
  315. #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
  316. LONG kmf_ioctl(struct file *file, UINT32 cmd, ULONG arg);
  317. #else
  318. INT32 kmf_ioctl(struct inode *inode, struct file *filp, UINT32 cmd, ULONG arg);
  319. #endif
  320. #endif //__KERNEL__
  321. extern UINT8 PQ_ParsePQCmdSet(UINT32 *pulAddr);
  322. extern UINT32 PQ_LoadGammaTable(UINT32 *pulAddr);
  323. extern INT32 adc_AdjustFunction(UINT8 ucFunID, INT32 iValue);
  324. extern void sfs_umount(void);
  325. extern void sfs_mount(void);
  326. extern void PQ_GetYavg(UINT32 *Y_AVG);
  327. extern int PQ_GetYHistOverValueCount(int YValue);
  328. #endif