drv_vip_internal.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889
  1. #ifndef _DRV_VIP_INTERNAL_H
  2. #define _DRV_VIP_INTERNAL_H
  3. #include <Customization.h>
  4. #include <drv2kmf.h>
  5. #include <linux/version.h>
  6. #include "drv_types.h"
  7. #include <project.h>
  8. #include "drv_vip_external.h"
  9. #define ceil(n, d) ((n)/(d) + ((n)%(d) != 0))
  10. #define round(n, d) ((n>0)?((2*(n)+(d))/(2*(d))):((-1)*((-2*(n)+(d))/(2*(d)))))
  11. #define mips1_byte(x ,y) { *((UINT8 *)(x))=y; udelay(10); }
  12. #define mips1_word(x ,y) { *((UINT32 *)(x))=y; udelay(10); }
  13. #define mips1_byte_delay(x ,y) { *((UINT8 *)(x))=y; udelay(10); }
  14. #define mips1_word_delay(x ,y) { *((UINT32 *)(x))=y; udelay(10); }
  15. #define mips1_byte_nodelay(x ,y) { *((UINT8 *)(x))=y;}
  16. #define mips1_word_nodelay(x ,y) { *((UINT32 *)(x))=y;}
  17. #define H264 0x1b//for dtv StreamType
  18. #define AVS 0x42
  19. //Jimmy 2008-01-22 Add to solve auido problem under PIP/POP mode
  20. #define VIP_ProcessDelayTime 16*90
  21. //used by VIP and PQ
  22. #ifdef CONFIG_CRYSTAL_USE_24MHZ
  23. #define SYSTEM_CLK 24000000
  24. #else
  25. #define SYSTEM_CLK 24576000 //24.576MHz
  26. #endif
  27. #if (CONFIG_CHIPID == 0x131) || (CONFIG_CHIPID == 0x8506) || (CONFIG_CHIPID == 0x6710)
  28. #define REFCLK 24000
  29. #else
  30. #define REFCLK 24576
  31. #endif
  32. #define field_remain_to_resume_PQFun 2
  33. //Why here??
  34. #define RGB 0
  35. #define YCC 1
  36. #define YPP 2 //709
  37. #define YCC_601 1
  38. #define YCC_709 2
  39. #define YUV_422 3
  40. #define YUV_444 4
  41. #define YUV_FCC 5
  42. #define YUV_624 6
  43. #define YUV_170M 7
  44. #define YUV_240M 8
  45. #define YUV_444C10 9
  46. #define YUV_444C8 10
  47. #define YUV_422C10 11
  48. #define YUV_422C8 12
  49. #define YUV_422_888 13
  50. #define YUV_444_888 14
  51. #define DISABLE 0
  52. #define ENABLE 1
  53. #define PROGRESSIVE 0
  54. #define INTERLACE 1
  55. //SYNC processes define
  56. #define SYNC_OK 0
  57. #define SYNC_ERR -1
  58. #define SYNC_DETECT_ERR -2
  59. #define SYNC_UNSTABLE -3
  60. //ADC phase detect define
  61. #define POS_LINE_MODE 0
  62. #define NEG_LINE_MODE 1
  63. #define ALL_LINE_MODE 2
  64. #define PHASE_SINGLE_LINE_MODE 3
  65. #define PHASE_DOUBLE_LINE_MODE 4
  66. #define PHASE_FRAME_MODE 5
  67. #define PHASE_FRAME_CMP 6
  68. #define PC_POSITION_VER_2
  69. #define VIP_FLIP_FUN 1
  70. #define DYNAMIC_BACKLIGHT
  71. #define DISABLE_DEBUG 1 //for 330 code reduced option
  72. #define DynamicBacklight_EnergyEfficiency
  73. #if CONFIG_CHIPID!=0x330
  74. #define VideoAlignment 16 //16 byte memeory alignment for saving memory usage
  75. #define JPEGAlignment 256
  76. #define ENABLE_ADC_FIXED_LINE_WORK_AROUND 1
  77. #else
  78. #define VIP_IMPROVE_ITEM_ENABLE_3 0
  79. #define VideoAlignment 256
  80. #endif
  81. #if defined CONFIG_SUPPORT_ALL_ACTION_SHOW_BLUE_SCREEN || defined CONFIG_SUPPORT_ACTION_SHOW_BLUE_SCREEN_EXCEPT_MEDIA
  82. #define VIP_BLACKSCREEN 0
  83. #else
  84. #define VIP_BLACKSCREEN 1
  85. #endif
  86. #define ScreenColorInOvsc 1
  87. #define FixWhiteScreen 0
  88. #define ADJUST_NR_By_Yavg
  89. #define VIP_MERGE_ADC 1
  90. #define rs 1
  91. #define VIP_IRQ 33
  92. #define VIP_V_SYNC_IRQ 56
  93. #define ENABLE_NXP_UFRC 0
  94. #define DESPERATE_CASE_FURTHER_FETCH 4
  95. //#define VIP_ADAPTIVE_FRAME_RATE
  96. #define WORKAROUND_BANDWIDTH_HALF_MOTION //support half-motion function to saving memory usage
  97. //#if CONFIG_CHIPID == 0x330
  98. #if defined(CONFIG_VIP_COLOR_FORMAT_Y8BIT) || CHIP_ID_INDEX>=CHIP_ID_533
  99. #define WORKAROUND_BANDWIDTH_Y8
  100. #endif
  101. //#define WORKAROUND_BANDWIDTH_LASTNUM
  102. #ifdef WORKAROUND_BANDWIDTH_LASTNUM
  103. #define set_all_lastnum_to_0
  104. #endif
  105. #if defined(CONFIG_FREERUN_MODE)|| defined(CONFIG_FRAMELOCK_CLOSE) || defined(CONFIG_DISABLE_LVDS_CLOCK_CONTROL)
  106. #define VIP_FREERUN_MODE
  107. #endif
  108. #define LOGO_PROLONG
  109. #define COMPARE_DROP_FRAME 2
  110. #define VIP_PANORAMIC 0
  111. #define VIP_THUMBNAIL 1
  112. enum{
  113. NO_FLIP,
  114. HV_FLIP,
  115. H_FLIP,
  116. V_FLIP,
  117. FLIP_MAX,
  118. };
  119. enum{
  120. PTN_DISABLE,
  121. PTN_HORIZONTAL,
  122. PTN_VERTICAL,
  123. };
  124. enum {
  125. CENTERING_FAIL, // Centering failed
  126. CENTERING_H, // Only horizontal centering OK
  127. CENTERING_V, // Only vertical centering OK
  128. CENTERING_HV // Both horizontal and vertical centering OK
  129. };
  130. //#define Always_define_max_memory
  131. #if defined(CONFIG_SUPPORT_ATV_PAL)|| defined(CONFIG_SUPPORT_ATV_SECAM)
  132. #define REFERTO_SRC_ASPECT //wss
  133. #endif
  134. #define myrprintk( fmt, args...) printk(KERN_EMERG"\e[31m [%s-%d] "fmt "\e[0m\n",__FUNCTION__, __LINE__,## args)
  135. #define myprintk( fmt, args...) printk(KERN_EMERG"[%s-%d] "fmt " \n",__FUNCTION__, __LINE__,## args)
  136. #ifdef __KERNEL__
  137. #ifndef CONFIG_SUPPORT_DEBUG_MESSAGE
  138. #define VIPErrorPrint( fmt, args...) //DBG_MSG1(DBGCFG_VIP,fmt,## args)
  139. #define VIPFlipDebugPrint(fmt, args...) //DBG_MSG1(DBGCFG_VIP,"[VIP_HW] "fmt"\n",## args)
  140. #define KICDebugPrint( fmt, args...) DBG_MSG1(DBGCFG_VIP,"[VIP_KIC] "fmt,## args)
  141. #define OB_DebugMsg(fmt, args...) //DBG_MSG1(DBGCFG_VIP,"[VIP_OB] "fmt,## args)
  142. #define VIPDebugPrint(fmt, args...) DBG_MSG1(DBGCFG_VIP,"[VIP_HW] %d "fmt"\n",__LINE__,## args)
  143. #define TemDebugPrint(fmt, args...) //DBG_MSG1(DBGCFG_VIP,fmt,## args) //joshua remove me!!
  144. #else
  145. #if DISABLE_DEBUG
  146. #define VIPErrorPrint( fmt, args...) DBG_MSG1(DBGCFG_VIP,fmt,## args)
  147. #define VIPFlipDebugPrint(fmt, args...) DBG_MSG1(DBGCFG_VIP,"[VIP_HW] "fmt"\n",## args)
  148. #define KICDebugPrint( fmt, args...) DBG_MSG1(DBGCFG_VIP,"VIP] "fmt,## args)
  149. #define OB_DebugMsg(fmt, args...) DBG_MSG1(DBGCFG_VIP,"[VIP_OB] "fmt,## args)
  150. #define VIPDebugPrint(fmt, args...) DBG_MSG1(DBGCFG_VIP,"[VIP_HW] %d "fmt"\n",__LINE__,## args)
  151. #define TemDebugPrint(fmt, args...) DBG_MSG1(DBGCFG_VIP,fmt,## args) //joshua remove me!!
  152. #else
  153. #define VIPErrorPrint( fmt, args...) //DBG_MSG1(DBGCFG_VIP,fmt,## args)
  154. #define VIPFlipDebugPrint(fmt, args...) //DBG_MSG1(DBGCFG_VIP,"VIP]"fmt"\n",## args)
  155. #define KICDebugPrint( fmt, args...) //DBG_MSG1(DBGCFG_VIP,"VIP]"fmt,## args)
  156. #define OB_DebugMsg(fmt, args...) //DBG_MSG1(DBGCFG_VIP,"VIP]"fmt,## args)
  157. #define VIPDebugPrint(fmt, args...) //DBG_MSG1(DBGCFG_VIP,"VIP]"fmt"\n",## args)
  158. #define TemDebugPrint(fmt, args...) //DBG_MSG1(DBGCFG_VIP,fmt,## args) //joshua remove me!!
  159. #endif
  160. #endif
  161. #endif
  162. #define diff(x,y) (x>y?x-y:y-x)
  163. enum // Mapping To L1 Driver Definition
  164. {
  165. EXTS=SOURCE_EXTS,//ADC
  166. CVD2=SOURCE_CVD2,
  167. MPEG=SOURCE_MPEG,
  168. HDMI=SOURCE_HDMI,
  169. JPEG=SOURCE_JPEG,
  170. PATN=SOURCE_PATTERN,
  171. INVALID = SOURCE_NON
  172. };
  173. //used by ADC
  174. enum
  175. {
  176. DSUB=0,
  177. YPP1,
  178. YPP2,
  179. YPP3,
  180. SCART_RGB1
  181. };
  182. enum {
  183. VESA_MODE=0,
  184. PRESET_MODE,
  185. USER_MODE,
  186. USER_NEW_MODE,
  187. NEW_MODE,
  188. YPP_MODE,
  189. SCART_RGB_MODE,
  190. UNSUPPORT_MODE,
  191. SUPPORT_MODE,
  192. UNSTABLE_MODE,
  193. NOSIGNAL_MODE=UNSTABLE_MODE
  194. };
  195. //used by all drivers
  196. enum
  197. {
  198. NormalScreen,
  199. BlueScreen,
  200. BlackScreen,
  201. };
  202. //08/30/2010 added by cdlin to pass RGB Guatization Range to VIP
  203. enum
  204. {
  205. RGBRange_Default=0,
  206. RGBRange_LimitedRange,
  207. RGBRange_FullRange,
  208. RGBRange_NotDefined,
  209. };
  210. //~cdlin
  211. //Used by Hdmi for 3D requirement
  212. enum
  213. {
  214. FRAME_PACKING=0,
  215. FIELD_ALTERNATIVE,
  216. LINE_ALTERNATIVE,
  217. SIDE_BY_SIDE_FULL,
  218. L_DEPTH,
  219. L_DEPTH_GRAPHICS_GRAPHICSDEPTH,
  220. TOP_AND_BOTTOM,
  221. SIDE_BY_SIDE_HALF=8,
  222. NONE_3D=0xf,
  223. REGULAR_2D=NONE_3D,
  224. AUTO_3D=0x10,
  225. SENSIO,
  226. RealD,
  227. FRAME_SEQUENTIAL,
  228. TRANS_2D_TO_3D=0x20,
  229. TRANS_3D_TO_2D, //dispaly just one view according to 3d mode sent by source
  230. };
  231. enum{
  232. DYNAMIC_BL_FORMAL,
  233. DYNAMIC_BL_ENERGY_EFFICIENCY,
  234. DYNAMIC_BL_T_P,
  235. };
  236. typedef enum _DRV_ADI_SOURCE
  237. {
  238. eADI_SOURCE_EXTS = 0x00,
  239. eADI_SOURCE_CVD2 = 0x01,
  240. eADI_SOURCE_MPEG = 0x02,
  241. eADI_SOURCE_V656 = 0x04,
  242. eADI_SOURCE_HDMI = 0x05,
  243. eADI_SOURCE_JPEG = 0x06,
  244. eADI_SOURCE_PATTERN = 0x07,
  245. eADI_SOURCE_NONE = 0xff,
  246. } DRV_ADI_SOURCE;
  247. enum {
  248. RESMODE_1920X1080,
  249. RESMODE_1280X720,
  250. RESMODE_720X480,
  251. RESMODE_720X576,
  252. RESMODE_NON_STD,
  253. };
  254. enum {
  255. #if (CONFIG_CHIPID == 0x330)
  256. VIP_SENDINFO_SPINLOCK,
  257. FLIP_SPINLOCK,
  258. #endif
  259. MUTE_SPINLOCK,
  260. MAX_VIP_SPINLOCK
  261. };
  262. enum {
  263. TimerADCPhaseChange,
  264. #ifdef CONFIG_ENABLE_MIR
  265. TimerMirTimingChange,
  266. #endif
  267. MaxTimerNo
  268. };
  269. enum //HDMI AVI Scan Information
  270. {
  271. HDMINONE,
  272. HDMIOVERSCAN,
  273. HDMIUNDERSCAN,
  274. HDMIFUTUREUSE,
  275. };
  276. enum {
  277. TimerRun,
  278. TimerStop,
  279. TimeOut
  280. };
  281. enum
  282. {
  283. DEFAULT=0, // default size, no centering
  284. CENTER, // default size, image centering
  285. AUTO_FIXED, // auto-fixed ratio image to panel H or V max. resolution
  286. FULL_SCREEN,
  287. };
  288. enum //jpeg & flipQ format
  289. {
  290. none,
  291. RGB888,
  292. ARGB888,
  293. RGB565,
  294. };
  295. #if VIP_UFRC3D_ENABLE || VIP_G3D_ENABLE
  296. typedef enum
  297. {
  298. VIP_BLT_CHANGE_3D_MODE_TO_1080 = 0, //Normal or frame interleaving
  299. VIP_BLT_CHANGE_3D_MODE_TO_SBS = 1, // Side By Side
  300. VIP_BLT_CHANGE_3D_MODE_TO_TB = 2, // Top/Botton
  301. VIP_BLT_CHANGE_3D_MODE_TO_720 = 3,
  302. }VIP_3DBltMode;
  303. #endif
  304. typedef enum _PQTOOL_SOURCE
  305. {
  306. PQTOOL_SOURCE_ATV,
  307. PQTOOL_SOURCE_AV,
  308. PQTOOL_SOURCE_SV,
  309. PQTOOL_SOURCE_COMPONENT,
  310. PQTOOL_SOURCE_HDMI,
  311. PQTOOL_SOURCE_DTV,
  312. PQTOOL_SOURCE_JPEG,
  313. PQTOOL_SOURCE_PC,
  314. PQTOOL_SOURCE_DVI,
  315. PQTOOL_SOURCE_END = 0xff
  316. } PQTOOL_SOURCE;
  317. typedef enum
  318. {
  319. VIP_SUCCESS,
  320. VIP_FAIL,
  321. }VIP_STATUS;
  322. typedef struct _PANEL_SET //for dynamic frame lock 50/60 Hz
  323. {
  324. UINT32 ulHTotal;
  325. UINT32 ulVTotal;
  326. UINT8 ucHSyncStart;
  327. UINT8 ucHSyncEnd;
  328. UINT8 ucVSyncStart;
  329. UINT8 ucVSyncEnd;
  330. UINT32 ulHStart;
  331. UINT32 ulHEnd;
  332. UINT32 ulVStart;
  333. UINT32 ulVEnd;
  334. UINT32 ulReg11C;
  335. UINT32 ulReg120;
  336. #if CONFIG_CHIPID!=0x330
  337. UINT32 ulReg124;
  338. #endif
  339. UINT32 ulReg60C;
  340. UINT32 ulMaxVTotal;
  341. }PANEL_SET,*pPANEL_SET;
  342. typedef struct _VIP_MPEG_ASPECT_INFO
  343. {
  344. UINT8 ucAspectRatio; //pixel aspect ratio from vformat
  345. UINT8 ucAFR;
  346. UINT32 uiStartLineBottomBar;
  347. UINT32 uiEndLineTopBar;
  348. UINT32 uiStartPixelRightBar;
  349. UINT32 uiEndPixelLeftBar;
  350. UINT8 ucStreamType;
  351. UINT32 uiSarWidth;
  352. UINT32 uiSarHeight;
  353. UINT8 ucOverscanApprFlag;
  354. }VIP_MPEG_ASPECT_INFO,*PVIP_MPEG_ASPECT_INFO;
  355. typedef struct _VIP_InterfaceKIC {
  356. UINT8 ucInputSource; // MPEG, HDMI, CVD2, VGA, YPP_INPUT, V656
  357. UINT32 uiHfreq; // H sync frequency
  358. UINT32 uiVfreq; // V sync frequency
  359. UINT32 uiHtotal; // H total
  360. UINT32 uiVtotal; // V total
  361. UINT32 uiHactive; // input horizontal resouluton
  362. UINT32 uiVactive; // input vertical resolution
  363. UINT32 uiHstart; // H start
  364. UINT32 uiHend; // H end
  365. UINT32 uiVstart; // V start
  366. UINT32 uiVend; // V end
  367. BOOL ucHpol; // H polarity 1=+, 0=-
  368. BOOL ucVpol; // V polarity 1=+, 0=-
  369. BOOL bInterlace; // 1=interlaced, 0=progressive
  370. UINT8 ucAspectRatio; // 1:1, 4:3, 16:9, 1:2.21, 14:9, Zoom1, Zoom2, and Refer Source Path Spec.
  371. UINT8 ucFrameRate; // 24000/1001, 24, 25, 30000/1001, 30, 50, 60
  372. UINT8 ucColorimetry; // RGB, ITU601, ITU709
  373. UINT8 ucDataFormat; // 4:2:0, 4:2:2, 4:4:4
  374. UINT8 ucSubInputSource; //
  375. UINT8 ucStdColorSystem; // PAL / NTSC / SECAM
  376. UINT8 uc3DStructure;
  377. UINT32 ucWidthRatio;
  378. UINT32 ucHeightRatio;
  379. union {
  380. //MPEG info
  381. struct
  382. {
  383. VIP_MPEG_ASPECT_INFO MpegAspect;
  384. BOOL bMPEGIFrameOnly; // MPEG I-Frame Only or not
  385. UINT32 ucBurstAmplitude; // for MPEG auto-saturation
  386. };
  387. //HDMI info
  388. struct
  389. {
  390. BOOL bDviEnable; // 1=DVI, 0=HDMI
  391. UINT8 ucR_AVI_S; //scan information (overscan, underscan)
  392. UINT8 ucRGBRange; //08/30/2010 added by cdlin to pass RGB Guatization Range to VIP
  393. UINT8 ucITC; //input is from PC graphic card (prefer underscan)
  394. };
  395. //ADC info
  396. struct
  397. {
  398. UINT32 uiTableHstart;
  399. UINT32 uiTableVstart;
  400. UINT32 uiHsync_width;
  401. UINT8 ucEnlargeWidthRate;
  402. };
  403. //cvd2
  404. struct
  405. {
  406. UINT8 ucSlr_422_en; //to control reg Slr_422_en
  407. };
  408. };
  409. UINT32 uiTimingIndex; //Timing Index value
  410. BOOL bIsScart;
  411. }VIP_InterfaceKIC,*PVIP_InterfaceKIC;
  412. typedef struct _SYNC_DETECT
  413. {
  414. UINT16 usHSyncCnt;
  415. UINT16 usVSyncCnt;
  416. UINT16 usHFreq;
  417. UINT16 usVFreq;
  418. UINT8 ucHPol;
  419. UINT8 ucVPol;
  420. UINT8 ucADCInterlaceMode;
  421. }SYNC_DETECT;
  422. typedef struct _VIP_RECT
  423. {
  424. UINT16 ulHStart,ulHEnd;
  425. UINT16 ulVStart,ulVEnd;
  426. }VIP_RECT,*PVIP_RECT;
  427. typedef struct _VIP_ImageInfo
  428. {
  429. UINT32 uiAddr;
  430. UINT32 uiWidth;
  431. UINT32 uiHeight;
  432. UINT32 uiYLineOffset, uiUVLineOffset, uiYSize, uiUVSize;
  433. UINT8 ucColorFormat;
  434. }VIP_ImageInfo, *PVIP_ImageInfo;
  435. #ifdef CONFIG_AMBIGLOW
  436. typedef struct _AMBI_Color
  437. {
  438. UINT32 ulY,ulU,ulV,ulRed,ulGreen,ulBlue;
  439. }VIP_AMBI_Color;
  440. #endif
  441. typedef struct _VIP_OSD_Bypass_Window
  442. {
  443. UINT8 ucValid;
  444. UINT8 ucEnable;
  445. UINT16 x0;
  446. UINT16 y0;
  447. UINT16 x1;
  448. UINT16 y1;
  449. }VIP_OSD_Bypass_Window, *pVIP_OSD_Bypass_Window;
  450. typedef struct _VIP_FLASH_INFO
  451. {
  452. UINT32 PANELSET_SHADOWADDR;
  453. UINT32 GAMMATABLE_SHADOWADDR;
  454. UINT32 LOGO_SHADOWADDR;
  455. UINT32 VIPTABLE_SHADOWADDR;
  456. UINT32 LUTTABLE_SHADOWADDR;
  457. } VIP_FLASH_INFO;
  458. typedef struct _VIP_SOURCE_INFO
  459. {
  460. UINT8 ucUserSource;
  461. UINT8 ucSubSource;
  462. UINT8 ucAspectRatio;
  463. UINT8 ucSrcAspectRatio;
  464. UINT8 ucCodedFrame;//for DTV AFD
  465. UINT8 ucStreamType;//for DTV
  466. UINT8 ucScartPinAspectRatio;
  467. UINT16 cHOverScan;
  468. UINT16 cVOverScan;
  469. UINT16 usTopOverScan;
  470. UINT16 usBottomOverScan;
  471. UINT16 usLeftOverScan;
  472. UINT16 usRightOverScan;
  473. BOOL bTTPATMode;
  474. INT8 cScreenMode;
  475. INT8 cHPos;
  476. INT8 cVPos;
  477. #if (CONFIG_CHIPID == 0x330)
  478. INT8 cHSize;
  479. INT8 cVSize;
  480. #endif
  481. VIP_RECT rcOutput;
  482. BOOL bInterlace;
  483. UINT16 ulInputHSize;
  484. UINT16 ulInputVSize;
  485. BOOL bSourceActive;
  486. BOOL bVideoFreezed;
  487. BOOL bSignalChangedDuringFreeze;
  488. UINT32 bDviEnable:1;
  489. BOOL bOutputAnyWnd;
  490. BOOL bDVDSource;
  491. BOOL bNetworkSource;
  492. BOOL bOutputAnyWndbyAP;
  493. }VIP_SOURCE_INFO;
  494. typedef enum
  495. {
  496. RESOLUTION_SD,
  497. RESOLUTION_HD,
  498. }VIP_InputResoution;
  499. typedef struct _VIP_OSD_EVENT_ {
  500. void (*VIP_OsdEventFun1)(void);
  501. void (*VIP_OsdEventFun2)(void);
  502. }VIP_OSD_EVENT,*PVIP_OSD_EVENT;
  503. typedef struct _OutWin
  504. {
  505. INT16 iHStart,iHEnd;
  506. INT16 iVStart,iVEnd;
  507. }OutWin,*pOutWin;
  508. typedef enum
  509. {
  510. PE_PLAYBACK_INIT = 0,
  511. PE_PLAYBACK_STOP,
  512. PE_PLAYBACK_PLAY,
  513. PE_PLAYBACK_PAUSE,
  514. PE_PLAYBACK_FF, //fast forward
  515. PE_PLAYBACK_FB, // fast backward
  516. PE_PLAYBACK_SF, //slow forward
  517. PE_PLAYBACK_SB, // slow backward
  518. } PE_Playback_State_t;
  519. enum
  520. {
  521. PC_HORIZONTAL,
  522. PC_VERTICAL,
  523. };
  524. void VIP_GetSource(UINT8 *ucUserSource, UINT8 *ucSubSource);
  525. void VIP_Close(void);
  526. void VIP_EventSourceSelect(UINT8 ucUserInputSource);
  527. void VIP_GetScreenStatus(UINT8 *ucScreenMode);
  528. void VIP_VformatDirectUnmuteScreen(UINT32 DelayTime);
  529. void VIP_MuteScreen (void);
  530. void VIP_MuteScreen_ISR(void);
  531. void VIP_MuteScreenDirectly(void);
  532. void VIP_UnmuteScreen(void);
  533. void VIP_EventSetFunction(UINT8 ucFunID, INT32 iValue, INT32 iParm1, INT32 iParm2);
  534. void VIP_SetAutoTuneStatus(UINT8 bIsFinished);
  535. void VIP_GetAutoTuneStatus(UINT8 *pbRetIsFinished);
  536. void VIP_SetMpegAspect(PVIP_MPEG_ASPECT_INFO pMpegAspect);
  537. void VIP_GetInputInfo (PVIP_InputInfo pVIP_InputInfo );
  538. void VIP_GetVIPHTotal (UINT16 *wHTotal );
  539. void VIP_SetMuteStatus (UINT8 cmd, UINT32 eMuteStatus, UINT32 iParm1, UINT32 iParm2);
  540. void VIP_GetMuteStatus (VIP_Mute_Flag_st *peRetStatus);
  541. void VIP_VideoFreeze(BOOL ucEnable);
  542. void VIP_SetPreviewWndow(PVIP_RECT pOutput);
  543. void VIP_EventControl(UINT8 ucLock, UINT8 ucMode);
  544. void VIP_Coefficient_Table(UINT8 ucType);
  545. void VIP_SetVP6Flag(UINT8 ucPlayVP6En);
  546. #ifdef CONFIG_AMBIGLOW
  547. void VIP_SetAmbiInfoFromOsd(VIP_AMBI_Color* Ambi_OsdInfo);
  548. void VIP_RegisterAmbiCalculateFun(void *pFunction);
  549. #endif
  550. void VIP_UpdateInputFrameRate(INT32 iFrameRate_x100);
  551. void VIP_SetFrameLock(BOOL fEn);
  552. void VIP_SingleColorPatternForOffsetAdjust(UINT8 ucEnable, UINT8 ucRed, UINT8 ucGreen, UINT8 ucBlue);
  553. void VIP_SingleColorPatternSetColor(UINT8 ucRed, UINT8 ucGreen, UINT8 ucBlue);
  554. void VIP_EventSingleColorPatternFromDpy(UINT16 bEnable,UINT32 uRGB);
  555. void VIP_SetDeinterlaceBobTop(UINT8 ucEnable);
  556. void VIP_SetOverScanByPixel(UINT16 usVTop, UINT16 usVBottom, UINT16 usHLeft, UINT16 usHRight);
  557. void VIP_GetOverScanByPixel(UINT16* usVTop, UINT16* usVBottom, UINT16* usHLeft, UINT16* usHRight, BOOL* fUnitByRatio);
  558. void VIP_GetPanelResolution(UINT16* ulWidth, UINT16* wlHeight);
  559. void VIP_SetHDMIScreenMode(UINT8 ucMode);
  560. /**
  561. * @brief JPEG notice VIP that display mode in JPEG source
  562. *
  563. * This function set the display mode of JPEG
  564. *
  565. * @param : ucDisplayMode, the adjustment range is 0 to 1, 0 is full screen; 1 is preview mode
  566. * @return : n/a
  567. */
  568. void VIP_Jpeg_SetDisplayMode(UINT8 ucDisplayMode);
  569. /**
  570. * @brief get display mode in JPEG source
  571. *
  572. * This function return the display mode of JPEG
  573. *
  574. * @param : n/a
  575. * @return : 0 is full screen; 1 is preview mode
  576. */
  577. UINT8 VIP_Jpeg_GetDisplayMode(void);
  578. void VIP_AdiPhaseDetect(UINT8 ucPath, UINT8 ucMode, UINT16 usLine, UINT32 *pulPval, UINT32*pulNval, UINT32 *pulCmp22 ,UINT8 ucDataFormat,UINT8 ucCmpThd);
  579. UINT8 VIP_InputActiveDetect(UINT8 ucInputSource);
  580. INT8 VIP_InputSyncDetect(UINT8 ucPath, UINT8 ucInputsource,SYNC_DETECT*);
  581. void VIP_Clock(INT32);
  582. void VIP_ADCIntClear (void);
  583. void VIP_ResetADI(void);
  584. UINT16 VIP_GetVStart(void);
  585. void VIP_Interrupt (INT8 cEnable);
  586. void VIP_EXTS_SetOriActive(UINT16 Hactive, UINT16 Vactive);
  587. UINT32 VIP_FrameCompare(UINT8 ucFrameCount, UINT8 ucCmpthd);
  588. INT8 VIP_TopDetect(UINT8 ucInputsource);
  589. void VIP_simulate_Compensation_function(VIP_RECT rcCenter,UINT32 *R,UINT32 *G,UINT32 *B);
  590. UINT32 VIP_GetAdiAvgYColor(void);
  591. void VIP_MotionCompenCtlWin(UINT8 ucEnable, UINT16 x0, UINT16 y0, UINT16 x1,UINT16 y1);
  592. //#ifdef CONFIG_SUPPORT_MHEG5
  593. void VIP_SetOutputWindow(INT16 siX, INT16 siY, UINT16 usWidth, UINT16 usHeight, BOOL fMHEG5Active, UINT8 bInfo);
  594. void VIP_OBSetMHEG5(UINT8 ucEnable);
  595. UINT8 VIP_OBGetTVAspectRatio ( void );
  596. UINT8 VIP_OBGetAspectMode(void);
  597. void VIP_GetFormatConversion(VIP_MHEG5_DecFC *decFC);
  598. void VIP_DtvInputVideoOK(void);
  599. UINT8 VIP_GetAFDAR(void);
  600. void VIP_OBSetVIPUpdate(BOOL fMheg5Active, UINT8 bInfo);
  601. void VIP_OBSetSceneAR(VIP_MHEG5_SceneAspectRatio eSceneAR, BOOL fMheg5Active, UINT8 bInfo);
  602. void VIP_OBSetWideAlignment(VIP_MHEG5_WideAignment eWideAlignment, BOOL fMheg5Active, UINT8 bInfo);
  603. //#endif
  604. void VIP_OsdEvenFunc(PVIP_OSD_EVENT pVipOsdEventFun);
  605. UINT32 VIP_GetSourcePixelClock(void);
  606. void VIP_SetVDIMode(void);
  607. UINT8 VIP_GetInputDataFormat(void);
  608. void VIP_SetInputDataFormatBGR(BOOL fIsBGR);
  609. BOOL VIP_IsInputDataFormatBGR(void);
  610. UINT8 VIP_GetInputColorStandard(void);
  611. UINT8 VIP_SetInputColorStandard(UINT8 cInputColorStandard);
  612. UINT8 VIP_GetInterlaceMode(void);
  613. UINT16 VIP_GetlInputCaptureVSize(void);
  614. INT32 PQ_GetCurrContrastValue(void);
  615. UINT8 VIP_GetScreenOnSt(void);
  616. UINT16 VIP_GetInputHSize(void);
  617. UINT16 VIP_GetInputVSize(void);
  618. UINT16 VIP_GetOutputHSize(void);
  619. UINT16 VIP_GetOutputVSize(void);
  620. UINT8 VIP_GetInputResMode(void);
  621. UINT8 VIP_GetInput3dType(void);
  622. UINT8 VIP_GetOutput3dType(void);
  623. UINT16 VIP_GetScalerPreScaleH(void);
  624. #if (CONFIG_CHIPID == 0x330)
  625. UINT16 VIP_GetCHIP_ID(void);
  626. #endif
  627. UINT8 VIP_GetStdColorSystem(void);
  628. UINT8 VIP_GetUserSource(void);
  629. BOOL VIP_IsSourceDTV(void);
  630. BOOL VIP_IsSourcePvr(void);
  631. BOOL VIP_IsPCSource(void);
  632. BOOL VIP_IsATVSource(void);
  633. BOOL VIP_IsSVSource(void);
  634. BOOL VIP_IsAVSource(void);
  635. BOOL VIP_IsDVIMode(void);
  636. BOOL VIP_GetITCStatus(void);
  637. BOOL VIP_IsJPEGSource(void);
  638. void VIP_SetSourceIsJPEG(BOOL ucEnable);
  639. BOOL VIP_IsSCARTSource(void);
  640. UINT16 VIP_GetScalerPreScaleV(void);
  641. UINT8 VIP_IsSingleColorOvscInDpyEnable(void);
  642. UINT8 VIP_RunDVIMode(void);
  643. UINT16 VIP_GetPanelWidth(void);
  644. UINT16 VIP_GetPanelHeight(void);
  645. void VIP_GetSyncLatchCount(UINT8 ucSource, UINT32* pulHscnt, UINT32* pulVscnt);
  646. BOOL VIP_SendInformation(PVIP_InterfaceKIC pInterfaceKIC);
  647. void VIP_SetATVSnowSetting(void);
  648. BOOL VIP_Centering(VIP_RECT* pRect, BOOL bUseCenteringSize);
  649. BOOL VIP_CenteringWindow(VIP_RECT* pRect);
  650. void VIP_NoticeModeNotSupport(UINT8 ucPath, BOOL bEnable);
  651. UINT8 VIP_GetPanelInvert(void);
  652. BOOL VIP_GetDefPanelInvert(void);
  653. UINT8 VIP_GetBobTopSt(void);
  654. void VIP_GetDispalyWindow(UINT16 *pHStart, UINT16 *pHEnd, UINT16 *pVStart, UINT16 *pVEnd);
  655. void VIP_JpegDisplayInit(void);
  656. #ifdef CONFIG_SUPPORT_JPEG_ASPECT_RATIO
  657. UINT32 VIP_Jpeg_PicsDisplay (UINT32 uiAddr, INT8 cShow, INT8 cMode, UINT32 uiHAddrValid, UINT32 uiVAddrValid, UINT32 uiWidth, UINT32 uiHeight, UINT32 uiLineOffset, UINT32 uiDisplaymode);
  658. #else
  659. UINT32 VIP_Jpeg_PicsDisplay (UINT32 uiAddr, INT8 cShow, INT8 cMode, UINT32 uiHAddrValid, UINT32 uiVAddrValid, UINT32 uiWidth, UINT32 uiHeight, UINT32 uiLineOffset);
  660. #endif
  661. UINT16 VIP_Jpeg_GetZoomRatio(void);
  662. UINT16 VIP_Jpeg_GetZoomOutRatio(void);
  663. UINT32 VIP_Jpeg_SetZoomOut (UINT32 uiAddr, INT8 cShow, INT8 cMode, UINT32 uiHAddrValid, UINT32 uiVAddrValid, UINT32 uiWidth, UINT32 uiHeight, UINT32 uiLineOffset);
  664. UINT32 VIP_Jpeg_SetPostScaleMode (INT8 cZoomRatio);
  665. UINT32 VIP_Jpeg_SetZoomOutRatio(INT8 cZoomOutRatio);
  666. #ifdef CONFIG_SUPPORT_JPEG_ASPECT_RATIO
  667. UINT32 VIP_Jpeg_SetAspectRatio (void);
  668. #endif
  669. UINT32 VIP_Jpeg_SetPan (INT8 cMode, UINT32 uiMovePixel);
  670. void VIP_Jpeg_GetPanPixel (UINT32 *uiUp, UINT32 *uiDown, UINT32 *uiLeft, UINT32 *uiRight);
  671. void VIP_SetPanelInvert(UINT8 ucEnable);
  672. void VIP_SetExtsInputWindow(UINT16 HStart, UINT16 HEnd, UINT16 VStart, UINT16 VEnd);
  673. void VIP_GetExtsInputWindow(UINT16 *HStart, UINT16 *HEnd, UINT16 *VStart, UINT16 *VEnd);
  674. void VIP_EventDVDSourceSelect(BOOL bIsDVDSource);
  675. void VIP_EventNetowrkSourceSelect(BOOL bIsNetworkSource);
  676. UINT8 VIP_IsNetworkSource(void);
  677. UINT8 VIP_JudgeDVDSource(void);//Differentiate YPbPr and DVD
  678. #ifdef CONFIG_ENABLE_MIR
  679. void VIP_MIR_SetTVOutFormat(BOOL fMirEn, VIP_TVOut_Timing_t ucMirDpyMode, BOOL fOSDEn);
  680. #endif
  681. void VIP_SetMPEGResetFlag(BOOL bEnable);
  682. void VIP_RgbToYCbCr(UINT8 Red, UINT8 Green, UINT8 Blue, UINT8 *Y, UINT8 *Cb, UINT8 *Cr);
  683. void VIP_YCbCrToRgb(UINT8 Y, UINT8 Cb, UINT8 Cr, UINT8 *Red, UINT8 *Green, UINT8 *Blue);
  684. void VIP_RgbToYuv(INT32 R, INT32 G, INT32 B, INT32 *Y, INT32 *U, INT32 *V);
  685. void VIP_SetTvfeMute(BOOL eStatus);
  686. void VIP_SetVIPMute(BOOL eStatus);
  687. void VIP_SetAPPMute(BOOL eStatus);
  688. #ifdef CONFIG_QSD
  689. void VIP_SetMTMute(BOOL eStatus);
  690. #endif
  691. void VIP_SetVideoResetMute(BOOL bMute);
  692. void VIP_SetVideoMuteColor(UINT8 wR, UINT8 wG, UINT8 wB);
  693. void VIP_SetTVFEMuteColorByAPP(BOOL fEn);
  694. void VIP_WaitScreenMute(void);
  695. void VIP_NoticeKmf_UnMute(void);
  696. UINT8 VIP_GetFrameBufferNum(void);
  697. UINT32 VIP_GetRGB2YCbCrRange(void);
  698. UINT32 VIP_GetRGBRange(void);
  699. void VIP_SetMonflg(UINT32 dMonflg);
  700. void VIP_VDIPause(BOOL cEnable);
  701. BOOL VIP_GetVDIPause(void);
  702. void VIP_ScreenPauseEnable(BOOL cEnable);
  703. void VIP_VDIPause_ISR(BOOL cEnable);
  704. void VIP_InitSetting(void);
  705. void VIP_SetStopNRAdjustFlag(unsigned char *bFlag);
  706. BOOL VIP_GetStopNRAdjustFlag(void);
  707. BOOL VIP_IsSupport3D(VIP_InputStruct_3D_t ucUserSet3DType);
  708. void VIP_SetZoomStatus (Vip_ZoomWindow vipzoom);
  709. BOOL VIP_GetBWModeStatus(void);
  710. #if CHIP_ID_INDEX >= CHIP_ID_131
  711. UINT16 VIP_GetVideoDisplayVSize(int InputWidth,int InputHeight);
  712. #else
  713. UINT16 VIP_GetVideoDisplayVSize(void);
  714. #endif
  715. void PQ_SetATVStatus(BOOL bstatus);
  716. UINT16 VIP_GetVideoDisplayVStart(int InputWidth,int InputHeight);
  717. void VIP_PresetInfo(int InputWidth,int InputHeight,int InputFreq);
  718. UINT16 VIP_GetPanelVsyncStart(void);
  719. void VIP_Ready_to_call_Vformatter_init(int SrcFrom);
  720. void VIP_FlipQ_Init(UINT16 ulWidth, UINT16 ulHeight,INT8 cScreenMode,INT8 cDataFormat);
  721. void VIP_FlipQ_SetDisplay(UINT16 ulWidth, UINT16 ulHeight,INT8 cScreenMode,INT8 cDataFormat);
  722. void VIP_FlipQ_Destory(void);
  723. void VIP_FlipQ_SetFrame(INT8 cFrameNum);
  724. int VIP_FlipQ_GetFrameMemAddr(INT8 cFrameNum);
  725. VIP_InputResoution _VIP_CalcInputResolution(void);
  726. UINT8 _VIP_GetPreviewWndowStatus(void);
  727. UINT8 VIP_GetFlipMode(void);
  728. UINT8 VIP_GetFlipModeInMediaSrc(void);
  729. BOOL VIP_GetColorCrossEnable(void);
  730. UINT8 VIP_GetAspect(void);
  731. void VIP_Media_SetPlayStatus(UINT8 ucPlayStatus);
  732. UINT8 VIP_Media_GetPlayStatus(void);
  733. /**
  734. * @brief get the difference pixel number of previous frame and current frame
  735. *
  736. * This function count the different pixel of previous frmae and current frame, user can
  737. * distinguish recent frame is motion or static through this function
  738. *
  739. * @param n/a
  740. * @return unsigned integer data (0 ~ 1048576, )
  741. */
  742. UINT32 VIP_GetFieldDiff(void);
  743. /**
  744. * @brief get the status of 2:3 pull down
  745. *
  746. * This function report if current video processing by 2:3 pull down
  747. *
  748. * @param n/a
  749. * @return 1 as 2:3 pull down processing, 0 as regular processing
  750. */
  751. UINT8 VIP_Get23Pulldwon(void);
  752. void VIP_SetHVPosition(UINT8 ucMode, INT32 iValue);
  753. INT32 VIP_GetHVPosition(UINT8 ucMode);
  754. UINT32 VIP_GetInputFramerate(void);
  755. #ifdef CONFIG_SUPPORT_MONITOR_POWERSAVE
  756. INT32 vip_init_forwakeup(void);
  757. #endif
  758. int VIP_GetADIDataRValueMax(void);
  759. int VIP_GetADIDataGValueMax(void);
  760. int VIP_GetADIDataBValueMax(void);
  761. int VIP_GetADIDataRValueMin(void);
  762. int VIP_GetADIDataGValueMin(void);
  763. int VIP_GetADIDataBValueMin(void);
  764. BOOL VIP_ReturnFreeRunFlag(void);
  765. #endif