pq_hw.h 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362
  1. #ifndef _PQ_HW_H
  2. #define _PQ_HW_H
  3. /*******************************************************************************
  4. * Header include
  5. ******************************************************************************/
  6. #include <linux/spinlock_types.h>
  7. #include <drv_pq_internal.h>
  8. #include <drv_pq.h>
  9. #include "pq_tab.h"
  10. #include <project.h>
  11. #define PQ_GetRegisterEndBit(ulRegisterName) ((ulRegisterName >> 22) & 0x00000003F)
  12. #define GET_VALUE_BITS(ulRegisterName, ulValue) ((UINT32)(ulValue << (32 - PQ_GetRegisterEndBit(ulRegisterName)))) >> ((32 - PQ_GetRegisterEndBit(ulRegisterName)))
  13. #define PQ_GetStartAndEndBits(ulRegisterName) (ulRegisterName & 0x0FFF0000)
  14. #define PQ_GetRegisterStartBit(ulRegisterName) ((ulRegisterName >> 16) & 0x00000003F)
  15. #define ALL_BITS 0x08000000
  16. #define WIDTH_BIT_8 0x02000000
  17. #define REGISTER_ADDRESS_MASK 0x0000FFFF
  18. #define REGISTER_TYPE_MASK 0xF0000000
  19. #define REGISTER_ADDRESS_LVDS_MAPPING 0x0800C1B4 //0x0800C1B4[13:12] : lvds bit-per-pixel type
  20. #define COLOR_MATRIX_GAIN_BIT_SYSTEM 10
  21. #define REFCLK 24576
  22. #define NewTNRVer 0xabcdabcd
  23. /*330
  24. #if 0
  25. #define COLOR_MATRIX_GAIN_OSD_BIT_SYSTEM 7
  26. #else
  27. #define COLOR_MATRIX_GAIN_OSD_BIT_SYSTEM 6
  28. #endif
  29. */
  30. #define COLOR_MATRIX_GAIN_OSD_BIT_SYSTEM 10 //531
  31. #define BRIGHTNESS_OFFSET (2<<(COLOR_MATRIX_GAIN_OSD_BIT_SYSTEM-1))
  32. #define COLOR_MATRIX_GAIN_OSD_DIFFBIT (COLOR_MATRIX_GAIN_BIT_SYSTEM-COLOR_MATRIX_GAIN_OSD_BIT_SYSTEM)
  33. #define COLOR_MATRIX_BIAS_BIT_SYSTEM 8
  34. #define COLOR_MATRIX_BIAS_OSD_BIT_SYSTEM 8
  35. //#define COLOR_MATRIX_YPP_COMP_OFFSET (16<<(COLOR_MATRIX_BIAS_BIT_SYSTEM-8))
  36. #define COLOR_MATRIX_YPP_COMP_OFFSET 64*4
  37. #define OFF 0
  38. #define WEAK 1
  39. #define MEDIUM 2
  40. #define STRONG 3
  41. #define AUTO 4
  42. #define ERR_CNT 20
  43. #define PQ_DebugMsg_CustUserCurveInit 0x4
  44. #define PQ_DebugMsg_CustUserCurvePolling 0x8
  45. #define CSC_RGB 0
  46. #define CSC_601 1
  47. #define CSC_709 2
  48. #define PQ_CMDSET_GET_RGN_LUT 0
  49. #define PQ_CMDSET_SET_RGN_LUT 1
  50. #define PQ_CMDSET_GET_RGN_LUT_STR 2
  51. #define PQ_CMDSET_SET_RGN_LUT_STR 3
  52. #define PQ_CMDSET_GET_RGN_LUT_330C 4
  53. #define PQ_CMDSET_SET_RGN_LUT_330C 5
  54. #define PQ_CMDSET_GET_RGN_LUT_V3 6
  55. #define PQ_CMDSET_SET_RGN_LUT_V3 7
  56. #define PQ_CMDSET_GET_COLOR_MATRIX 10
  57. #define PQ_CMDSET_SET_COLOR_MATRIX 11
  58. #define PQ_CMDSET_GET_SW_DC_SCENE_DET_SLOPE 20
  59. #define PQ_CMDSET_SET_SW_DC_SCENE_DET_SLOPE 21
  60. #define PQ_CMDSET_GET_SW_DC_SCENE_DET_CHROMA 22
  61. #define PQ_CMDSET_SET_SW_DC_SCENE_DET_CHROMA 23
  62. #define PQ_CMDSET_GET_SW_DC_SCENE_DET_PARAM 24
  63. #define PQ_CMDSET_SET_SW_DC_SCENE_DET_PARAM 25
  64. #define PQ_CMDSET_GET_SW_DC_SCENE_DET_INFO 26
  65. #define PQ_CMDSET_GET_SW_DC_SCENE_DET_SOURCE 27
  66. #define PQ_CMDSET_SET_SW_DC_SCENE_DET_SOURCE 28
  67. #define PQ_CMDSET_GET_DRV_CURRENT_SOURCE 29
  68. #define PQ_CMDSET_SET_NR_ADJUST_STATUS 30
  69. #define PQ_CMDSET_GET_VIP_FLASH_INFO 60
  70. #define UNLOCK 0
  71. #define LOCK 1
  72. #define PQ_SAT_NO_OPERATION 0
  73. #define PQ_SAT_SET_VALUE 1
  74. #define PQ_SAT_INIT_VALUE 2
  75. #define PQ_SAT_WAIT_5SEC 3
  76. #define PQ_SAT_DETECT_SCENE 4
  77. #define PQ_SAT_RE_SET_VALUE 5
  78. #define SDNR_Gain_normal 100
  79. #define SDNR_Gain_Low 130
  80. #define SDNR_Gain_Mid 160
  81. #define SDNR_Gain_High 200
  82. #define DPY_EOF_EVENT 0x25
  83. #define MODE_DeinterlaceFilter 0
  84. #define VIP_TABLE_GROUPED_NUMBER 8 //for number of VIP table grouped setting
  85. #define SNR_MAP_GAIN_NUM 2
  86. /*******************************************************************************
  87. * Enum
  88. ******************************************************************************/
  89. //dynamic backlight change speed
  90. enum
  91. {
  92. BL_SLOW,
  93. BL_QUICK,
  94. };
  95. enum{
  96. USERCURVE_DETECT,
  97. USERCURVE_ENTERING,
  98. };
  99. enum{
  100. USERCURVE_OFF,
  101. USERCURVE_PQ,
  102. USERCURVE_HW,
  103. USERCURVE_HW_AUTO_TH,
  104. };
  105. enum {
  106. PQ_EVENT_NONWAITE,
  107. PQ_EVENT_WAITE
  108. };
  109. /*
  110. @ note : need sync with LUT source define in tool(ColorLUTvxDlg.h)
  111. */
  112. typedef enum
  113. {
  114. SRC_INDEX_ATV_NTSC=0,
  115. SRC_INDEX_ATV_PAL,
  116. SRC_INDEX_AV_NTSC,
  117. SRC_INDEX_AV_PAL,
  118. SRC_INDEX_SVideo_NTSC,
  119. SRC_INDEX_SVideo_PAL,
  120. SRC_INDEX_Component_SD,
  121. SRC_INDEX_Component_HD,
  122. SRC_INDEX_HDMI_SD,
  123. SRC_INDEX_HDMI_HD,
  124. SRC_INDEX_DTV_SD,
  125. SRC_INDEX_DTV_HD,
  126. SRC_INDEX_JPEG ,
  127. SRC_INDEX_PC,
  128. SRC_INDEX_DVI,
  129. SRC_INDEX_SCART_RGB,
  130. SRC_INDEX_DVD,
  131. SRC_INDEX_UNKNOWN
  132. } PQ_LUT_SRC;
  133. typedef enum
  134. {
  135. ATV_IN,
  136. DTV_IN,
  137. DTV_HD_IN,
  138. AV_IN,
  139. SV_IN,
  140. COMP_IN,
  141. COMP_HD_IN,
  142. SCART_IN,
  143. HDMI_IN,
  144. HDMI_HD_IN,
  145. PC_IN,
  146. DVD_IN,
  147. DVD_HD_IN,
  148. END_IN,
  149. END_IN_EXT
  150. }PQ_DLC_SRC;
  151. typedef enum {
  152. PQ_ITEM_LUMA_TNR_CORING,
  153. PQ_ITEM_LUMA_TNR_STRENGTH,
  154. PQ_ITEM_CHROMA_TNR_CORING,
  155. PQ_ITEM_CHROMA_TNR_STRENGTH,
  156. PQ_ITEM_LUMA_SNR1_CORING,
  157. PQ_ITEM_LUMA_SNR1_STRENGTH,
  158. PQ_ITEM_LUMA_SNR2_CORING,
  159. PQ_ITEM_LUMA_SNR2_STRENGTH,
  160. PQ_ITEM_CHROMA_SNR_CORING,
  161. PQ_ITEM_CHROMA_SNR_STRENGTH,
  162. PQ_ITEM_BLOCK_NR_CORING,
  163. PQ_ITEM_BLOCK_NR_STRENGTH,
  164. PQ_ITEM_MOSQUITO_NR_CORING,
  165. PQ_ITEM_MOSQUITO_NR_STRENGTH,
  166. PQ_ITEM_TNR_ULTRA_LOW,
  167. PQ_ITEM_SNR1_ULTRA_LOW,
  168. PQ_ITEM_SNR2_ULTRA_LOW,
  169. } PQ_ITEM;
  170. typedef enum
  171. {
  172. PQ_STANDARD_DEFINITION,
  173. PQ_HIGH_DEFINITION,
  174. } PQ_Definition;
  175. typedef enum
  176. {
  177. NR_BLOCK_ALPHA_TNR,
  178. NR_BLOCK_ALPHA_TNR_SNR,
  179. NR_BLOCK_ALPHA_TNR_C,
  180. NR_BLOCK_ALPHA_TNRZ,
  181. NR_BLOCK_ALPHA_TNRZ_C,
  182. NR_BLOCK_ALPHA_END // 5
  183. }PQ_NR_BLOCKALPHA_TYPE;
  184. enum{
  185. PQ_SHARPNESS_0PERCENT,
  186. PQ_SHARPNESS_50PERCENT,
  187. PQ_SHARPNESS_100PERCENT,
  188. PQ_SHARPNESS_PERCENT_END
  189. };
  190. /*******************************************************************************
  191. * Structure
  192. ******************************************************************************/
  193. typedef struct _ST_PQ_CMDSET_CLR_MATRIX
  194. {
  195. CSC_SETTING curMatrix; // before contrast, brightness, ColorTemp, Hue, Sat, Ypp_en compensation
  196. INT32 iMatrixC[3];
  197. INT32 iContrast;
  198. INT32 iBrightness;
  199. INT32 iCTRGBGain[3]; // R:0, G:1, B:2
  200. INT32 iCTRGBBias[3]; // R:0, G:1, B:2
  201. INT32 iHue;
  202. INT32 iSaturation;
  203. } ST_PQ_CMDSET_CLR_MATRIX;
  204. typedef struct _ST_PQ_CMDSET_CLR_MATRIX_EX
  205. {
  206. CSC_SETTING curMatrix; // before contrast, brightness, ColorTemp, Hue, Sat, Ypp_en compensation
  207. INT32 iMatrixC[3];
  208. INT32 iContrast;
  209. INT32 iBrightness;
  210. INT32 iCTRGBGain[3]; // R:0, G:1, B:2
  211. INT32 iCTRGBBias[3]; // R:0, G:1, B:2
  212. INT32 iHue;
  213. INT32 iSaturation;
  214. INT32 iOSDGainBit;
  215. INT32 iOSDBiasBit;
  216. } ST_PQ_CMDSET_CLR_MATRIX_EX;
  217. typedef struct _SAT_INFO //saturation
  218. {
  219. UINT8 ucOperation; //0: none 1:wait 5 sec to enter detecting 2:scene detect every 1 sec
  220. UINT8 ucSat;
  221. UINT8 ucDiff;
  222. UINT8 ucDiff_min;
  223. UINT8 ucDiff_max;
  224. BOOL bCeneChange;
  225. UINT16 nTimeout;
  226. spinlock_t SpinLock;
  227. } SAT_INFO;
  228. typedef struct _COLOR_MATRIX_COMP_INT
  229. {
  230. INT32 iValue:12;
  231. }COLOR_MATRIX_COMP_INT;
  232. typedef struct _FL_SETTING
  233. {
  234. INT32 detect_en;
  235. INT32 angle_max;
  236. INT32 angle_min;
  237. INT32 rot_angle;
  238. INT32 sin;
  239. INT32 cos;
  240. INT32 lrange;
  241. INT32 hrange;
  242. INT32 sat;
  243. INT32 sat_max;
  244. INT32 calc_bypass;
  245. INT32 q_left;
  246. INT32 q_right;
  247. INT32 q1;
  248. } FL_SETTING;
  249. typedef struct _RG_SETTING
  250. {
  251. INT32 detect_en;
  252. INT32 angle_max;
  253. INT32 angle_min;
  254. INT32 rot_angle;
  255. INT32 sin;
  256. INT32 cos;
  257. INT32 lrange;
  258. INT32 hrange;
  259. INT32 mult;
  260. INT32 mult_max;
  261. INT32 calc_bypass;
  262. INT32 q;
  263. INT32 q1;
  264. } RG_SETTING;
  265. typedef struct _GAMMA_OPT
  266. {
  267. INT32 pc_no_gamma;
  268. } GAMMA_OPT;
  269. typedef struct CR_MSETTING
  270. {
  271. INT32 fl_mrange;
  272. INT32 reg0_mrange;
  273. INT32 reg1_mrange;
  274. INT32 reg2_mrange;
  275. INT32 reg3_mrange;
  276. INT32 reg4_mrange;
  277. INT32 reg5_mrange;
  278. }CR_MSETTING;
  279. typedef struct _DS_SHARP_RATIO
  280. {
  281. INT32 ratio[6];
  282. } DS_SHARP_RATIO;
  283. typedef struct _SAT_GAIN_CURVE
  284. {
  285. UINT8 mSatGainCurveSource[20];
  286. UINT8 sat_gb[8][16];
  287. } SAT_GAIN_CURVE;
  288. typedef struct _PQ_PATCH
  289. {
  290. UINT8 Post2DPatch;
  291. }PQ_PATCH;
  292. typedef struct _PQ_MENU_VALUE
  293. {
  294. INT32 iBrightness,iContrast,iSharpness,iSaturation,iHue;
  295. INT32 iColorTemp[3];
  296. INT32 iColorBias[3];
  297. UINT8 ucDCLevel;
  298. UINT8 ucCWLevel;
  299. INT8 cSGOffset;
  300. UINT8 ucNRLevel;
  301. UINT8 ucMPEGNRLevel;
  302. BOOL bNoGamma;
  303. UINT8 ucColorStyle;
  304. UINT8 ucColorProcess;
  305. } PQ_MENU_VALUE;
  306. typedef struct _SHARP_INFO
  307. {
  308. //INT32 x1,m1,x2,m2,smooth,sharp;
  309. INT32 m1,m2,smooth,sharp;
  310. union {
  311. INT32 ilimit; // for initial fake
  312. UINT8 limit[4]; //0:sd or all(before V34) 1:md 2:hd 3:enable_flag
  313. };
  314. INT32 pivotx,pivoty;
  315. } SHARP_INFO;
  316. typedef struct _STRENGTH_DEFINE
  317. {
  318. INT32 Degree[3]; //weak, medium, strong
  319. } STRENGTH_DEFINE;
  320. typedef struct _PEAKING_SETTING
  321. {
  322. INT32 filter_y_h1;
  323. INT32 filter_y_h2;
  324. INT32 filter_y_h3;
  325. INT32 filter_y_h4;
  326. } PEAKING_SETTING;
  327. typedef struct _REG_RANGE
  328. {
  329. INT32 min;
  330. INT32 max;
  331. INT32 middle;
  332. } REG_RANGE;
  333. typedef struct _DS_SHARP_INFO
  334. {
  335. INT32 fac0,fac1,fac2,th0,th1,slope0,slope1;
  336. union {
  337. INT32 ioversht; // for initial fake
  338. UINT8 oversht[4]; //0:sd or all(before V34) 1:md 2:hd 3:enable_flag
  339. };
  340. union {
  341. INT32 iundersht; // for initial fake
  342. UINT8 undersht[4]; //0:sd or all(before V34) 1:md 2:hd 3:enable_flag
  343. };
  344. } DS_SHARP_INFO;
  345. typedef struct _DC_STRENGTH_DEFINE//dynamic contrast for v25
  346. {
  347. UINT32 Degree[3]; //weak, medium, strong
  348. } DC_STRENGTH_DEFINE;
  349. typedef struct _DARK_SHARP_INFO
  350. {
  351. UINT16 th[4];
  352. UINT16 fac[4];
  353. UINT8 slope[5];
  354. UINT8 reserve[2];
  355. UINT8 enable;
  356. } DARK_SHARP_INFO;
  357. typedef struct _REG_RANGE_EXT
  358. {
  359. INT32 midleft;
  360. INT32 midright;
  361. } REG_RANGE_EXT;
  362. typedef struct _USER_CURVE_INFO
  363. {
  364. const USER_BIN_SET* pStaticGamma;
  365. const USER_BIN_SET* pBlackLevelExtension;
  366. const USER_BIN_SET* pWhiteLevelExtension;
  367. } USER_CURVE_INFO;
  368. typedef struct
  369. {
  370. UINT32 TableOffset;
  371. UINT32 TableSize;
  372. UINT32 XorCRC;
  373. UINT32 TableFlag;
  374. } LUTTableInfo;
  375. typedef struct HeadStruct
  376. {
  377. UINT8 LUTID[3];
  378. UINT8 Version;
  379. UINT32 FileSize;
  380. UINT16 IndexOffset;
  381. UINT16 HeadLength;
  382. UINT8 TableCount;
  383. UINT8 SrcCount;
  384. UINT8 HueScale;
  385. UINT8 Empty;
  386. UINT8 SrcIndex[32];
  387. UINT8 Reserved1[16];
  388. UINT8 Tag[32];
  389. LUTTableInfo TblInfo[8];
  390. }LUTHead;
  391. typedef struct LUTStruct
  392. {
  393. UINT8 LUTID[3];
  394. UINT8 Version;
  395. UINT32 FileSize;
  396. UINT16 IndexOffset;
  397. UINT16 HeadLength;
  398. UINT8 TableCount;
  399. UINT8 SrcCount;
  400. UINT8 HueScale;
  401. UINT8 SatScale;
  402. UINT8 SrcIndex[32];
  403. UINT8 Reserved1[16];
  404. UINT8 Tag[32];
  405. LUTTableInfo TblInfo[8];
  406. UINT32 Pivot0[512];
  407. UINT16 PivotStrength0[512];
  408. UINT32 Pivot1[512];
  409. UINT16 PivotStrength1[512];
  410. UINT32 Pivot2[512];
  411. UINT16 PivotStrength2[512];
  412. UINT32 Pivot3[512];
  413. UINT16 PivotStrength3[512];
  414. UINT32 Pivot4[512];
  415. UINT16 PivotStrength4[512];
  416. UINT32 Pivot5[512];
  417. UINT16 PivotStrength5[512];
  418. UINT32 Pivot6[512];
  419. UINT16 PivotStrength6[512];
  420. UINT32 Pivot7[512];
  421. UINT16 PivotStrength7[512];
  422. UINT8 Reserved2[12];
  423. UINT16 FileXorCRC;
  424. } LUTTable, *PLUTTable;
  425. typedef struct _COLOR_LUT_330C_6BIT_INT
  426. {
  427. INT32 iCb:6;
  428. INT32 iCr:6;
  429. INT32 iY:6;
  430. }COLOR_LUT_330C_6BIT_INT;
  431. typedef struct _NR_BLOCKALPHA_DEFINE
  432. {
  433. UINT32 mmap_en;
  434. STRENGTH_DEFINE mthr[5];
  435. STRENGTH_DEFINE mslp[6];
  436. STRENGTH_DEFINE mfac[6];
  437. } NR_BLOCKALPHA_DEFINE;
  438. typedef struct NR_Setting_BY_Group_Idx
  439. {
  440. STRENGTH_DEFINE LumaTnrCoring;
  441. STRENGTH_DEFINE LumaTnrStrength;
  442. STRENGTH_DEFINE ChromaTnrCoring;
  443. STRENGTH_DEFINE ChromaTnrStrength;
  444. STRENGTH_DEFINE LumaSnr1Coring;
  445. STRENGTH_DEFINE LumaSnr1Strength;
  446. STRENGTH_DEFINE LumaSnr2Coring;
  447. STRENGTH_DEFINE LumaSnr2Strength;
  448. STRENGTH_DEFINE ChromaSnrCoring;
  449. STRENGTH_DEFINE ChromaSnrStrength;
  450. STRENGTH_DEFINE BlockNrCoring;
  451. STRENGTH_DEFINE BlockNrStrength;
  452. STRENGTH_DEFINE MosquitoNrCoring;
  453. STRENGTH_DEFINE MosquitoNrStrength;
  454. INT32 TnrUltraLowCtl; //v23 //bit[0]:weak bit[1]:medium bit[2]:strong
  455. INT32 SnrUltraLowCtl;
  456. NR_BLOCKALPHA_DEFINE NRBlockAlpha[NR_BLOCK_ALPHA_END];
  457. }NR_Setting_BY_Group_Idx;
  458. typedef struct _NR_Setting
  459. {
  460. UINT8 mNRSourceGroupedIndex[20];
  461. NR_Setting_BY_Group_Idx mNRSetting_byGroupIdx[VIP_TABLE_GROUPED_NUMBER];
  462. }NR_Setting;
  463. typedef struct _UV_Coring_BY_Group_Idx
  464. {
  465. INT32 iUVCoring_en;
  466. INT32 iUVCoring;
  467. }UV_Coring_BY_Group_Idx;
  468. typedef struct _UV_Coring
  469. {
  470. UINT8 mUV_CoringGroupedIndex[20];
  471. UV_Coring_BY_Group_Idx UV_Coring_BY_Group_Idx[VIP_TABLE_GROUPED_NUMBER];
  472. }UV_Coring;
  473. //=== new sharpness PREDCTI
  474. typedef struct _SHARP_PREDCTI_DATA
  475. {
  476. INT32 iPreDCTIEnable;
  477. INT32 iPreChromaFilterEnable;
  478. INT32 iPostChromaFilterEnable;
  479. INT32 iPreChromaFilterLevel;
  480. INT32 icoef[3];
  481. INT32 iScale[PQ_SHARPNESS_PERCENT_END];
  482. INT32 iGainTap[PQ_SHARPNESS_PERCENT_END];
  483. INT32 iShootTap[PQ_SHARPNESS_PERCENT_END];
  484. INT32 iGain0[PQ_SHARPNESS_PERCENT_END];
  485. INT32 iGain1[PQ_SHARPNESS_PERCENT_END];
  486. INT32 iGain2[PQ_SHARPNESS_PERCENT_END];
  487. INT32 iTh0[PQ_SHARPNESS_PERCENT_END];
  488. INT32 iTh1[PQ_SHARPNESS_PERCENT_END];
  489. INT32 iSlope0[PQ_SHARPNESS_PERCENT_END];
  490. INT32 iSlope1[PQ_SHARPNESS_PERCENT_END];
  491. }SHARP_PREDCTI_DATA;
  492. typedef struct _SHARP_PREDCTI
  493. {
  494. UINT8 mGroupedIndex[20];
  495. SHARP_PREDCTI_DATA mPreDCTIData[VIP_TABLE_GROUPED_NUMBER];
  496. }SHARP_PREDCTI;
  497. //=== new sharpness POSTDCTI
  498. typedef struct _SHARP_POSTDCTI_DATA
  499. {
  500. INT32 iPostDCTIEnable;
  501. INT32 iPostChromaFilterEnable;
  502. INT32 iPreChromaFilterEnable;
  503. INT32 iPostChromaFilterLevel;
  504. INT32 icoef[6];
  505. INT32 iScale[PQ_SHARPNESS_PERCENT_END];
  506. INT32 iGainTap[PQ_SHARPNESS_PERCENT_END];
  507. INT32 iShootTap[PQ_SHARPNESS_PERCENT_END];
  508. INT32 iGain0[PQ_SHARPNESS_PERCENT_END];
  509. INT32 iGain1[PQ_SHARPNESS_PERCENT_END];
  510. INT32 iGain2[PQ_SHARPNESS_PERCENT_END];
  511. INT32 iTh0[PQ_SHARPNESS_PERCENT_END];
  512. INT32 iTh1[PQ_SHARPNESS_PERCENT_END];
  513. INT32 iSlope0[PQ_SHARPNESS_PERCENT_END];
  514. INT32 iSlope1[PQ_SHARPNESS_PERCENT_END];
  515. }SHARP_POSTDCTI_DATA;
  516. typedef struct _SHARP_POSTDCTI
  517. {
  518. UINT8 mGroupedIndex[20];
  519. SHARP_POSTDCTI_DATA mPostDCTIData[VIP_TABLE_GROUPED_NUMBER];
  520. }SHARP_POSTDCTI;
  521. //=== new sharpness POSTDLTI
  522. typedef struct _SHARP_POSTDLTI_DATA
  523. {
  524. INT32 iPostDLTIEnable;
  525. INT32 iDynamicClipEnable;
  526. INT32 icoef[6];
  527. INT32 iDnamicClipMode[PQ_SHARPNESS_PERCENT_END];
  528. INT32 iDnamicClipOverShoot[PQ_SHARPNESS_PERCENT_END];
  529. INT32 iDnamicClipUnderShoot[PQ_SHARPNESS_PERCENT_END];
  530. INT32 iDnamicClipOverShootfac[PQ_SHARPNESS_PERCENT_END];
  531. INT32 iDnamicClipUnderShootfac[PQ_SHARPNESS_PERCENT_END];
  532. INT32 iScale[PQ_SHARPNESS_PERCENT_END];
  533. INT32 iGainTap[PQ_SHARPNESS_PERCENT_END];
  534. INT32 iShootTap[PQ_SHARPNESS_PERCENT_END];
  535. INT32 iNormalOverShoot[PQ_SHARPNESS_PERCENT_END];
  536. INT32 iNormalUnderShoot[PQ_SHARPNESS_PERCENT_END];
  537. INT32 iGain0[PQ_SHARPNESS_PERCENT_END];
  538. INT32 iGain1[PQ_SHARPNESS_PERCENT_END];
  539. INT32 iGain2[PQ_SHARPNESS_PERCENT_END];
  540. INT32 iTh0[PQ_SHARPNESS_PERCENT_END];
  541. INT32 iTh1[PQ_SHARPNESS_PERCENT_END];
  542. INT32 iSlope0[PQ_SHARPNESS_PERCENT_END];
  543. INT32 iSlope1[PQ_SHARPNESS_PERCENT_END];
  544. }SHARP_POSTDLTI_DATA;
  545. typedef struct _SHARP_POSTDLTI
  546. {
  547. UINT8 mGroupedIndex[20];
  548. SHARP_POSTDLTI_DATA mPostDLTIData[VIP_TABLE_GROUPED_NUMBER];
  549. }SHARP_POSTDLTI;
  550. //=== new sharpness POST2DSHARPNESS
  551. typedef struct _SHARP_POST2DSHARPNESS_DATA
  552. {
  553. INT32 iPost2DSharpEnable;
  554. INT32 iGain0_Luma[PQ_SHARPNESS_PERCENT_END];
  555. INT32 iGain1_Luma[PQ_SHARPNESS_PERCENT_END];
  556. INT32 iGain2_Luma[PQ_SHARPNESS_PERCENT_END];
  557. INT32 iTh0_Luma[PQ_SHARPNESS_PERCENT_END];
  558. INT32 iTh1_Luma[PQ_SHARPNESS_PERCENT_END];
  559. INT32 iSlope0_Luma[PQ_SHARPNESS_PERCENT_END];
  560. INT32 iSlope1_Luma[PQ_SHARPNESS_PERCENT_END];
  561. INT32 iFilterMode_Luma[PQ_SHARPNESS_PERCENT_END];
  562. INT32 iScale_Luma[PQ_SHARPNESS_PERCENT_END];
  563. INT32 iGainTap_Luma[PQ_SHARPNESS_PERCENT_END];
  564. INT32 iShootTap_Luma[PQ_SHARPNESS_PERCENT_END];
  565. INT32 iNormalOverShoot[PQ_SHARPNESS_PERCENT_END];
  566. INT32 iNormalUnderShoot[PQ_SHARPNESS_PERCENT_END];
  567. INT32 iOverShootFactor[PQ_SHARPNESS_PERCENT_END];
  568. INT32 iUnderShootFactor[PQ_SHARPNESS_PERCENT_END];
  569. INT32 iGain0_Chroma[PQ_SHARPNESS_PERCENT_END];
  570. INT32 iGain1_Chroma[PQ_SHARPNESS_PERCENT_END];
  571. INT32 iGain2_Chroma[PQ_SHARPNESS_PERCENT_END];
  572. INT32 iTh0_Chroma[PQ_SHARPNESS_PERCENT_END];
  573. INT32 iTh1_Chroma[PQ_SHARPNESS_PERCENT_END];
  574. INT32 iSlope0_Chroma[PQ_SHARPNESS_PERCENT_END];
  575. INT32 iSlope1_Chroma[PQ_SHARPNESS_PERCENT_END];
  576. INT32 iFilterMode_Chroma[PQ_SHARPNESS_PERCENT_END];
  577. INT32 iScale_Chroma[PQ_SHARPNESS_PERCENT_END];
  578. INT32 iGainTap_Chroma[PQ_SHARPNESS_PERCENT_END];
  579. INT32 iShootTap_Chroma[PQ_SHARPNESS_PERCENT_END];
  580. }SHARP_POST2DSHARPNESS_DATA;
  581. typedef struct _SHARP_POST2DSHARPNESS
  582. {
  583. UINT8 mGroupedIndex[20];
  584. SHARP_POST2DSHARPNESS_DATA mPost2DSharpData[VIP_TABLE_GROUPED_NUMBER];
  585. }SHARP_POST2DSHARPNESS;
  586. typedef struct _SAT_GAIN_CURVE_V2_DATA
  587. {
  588. INT32 iDpySatEn;
  589. INT32 iDpySatOpt;
  590. INT32 iDpySatAll;
  591. INT32 iDpySatHue;
  592. INT32 iSat_Gain[17];
  593. }SAT_GAIN_CURVE_V2I_DATA;
  594. typedef struct _SAT_GAIN_CURVE_V2
  595. {
  596. UINT8 mGroupedIndex[20];
  597. SAT_GAIN_CURVE_V2I_DATA mSatGainCurve_V2_Data[VIP_TABLE_GROUPED_NUMBER];
  598. }SAT_GAIN_CURVE_V2;
  599. //=== DS Sharpness
  600. typedef struct _DS_SHARPNESS_DATA
  601. {
  602. STRENGTH_DEFINE SlrSharpRatio;
  603. DS_SHARP_INFO DSSharpWeak[2]; // y/c
  604. DS_SHARP_INFO DSSharpNormal[2];
  605. DS_SHARP_INFO DSSharpStrong[2];
  606. UINT32 DS_Sharp_Angle; //bit[0~1]:SD bit[2~3]angle bit[8~9]:MD bit[10~11]:angle bit[16~17]:HD bit[18~19]:angle
  607. DARK_SHARP_INFO DSSharpDark;
  608. }DS_SHARPNESS_DATA;
  609. typedef struct _DS_SHARPNESS
  610. {
  611. UINT8 mGroupedIndex[20];
  612. DS_SHARPNESS_DATA mDS_Sharpness_Data[VIP_TABLE_GROUPED_NUMBER];
  613. }DS_SHARPNESS;
  614. //=== HOR Sharpness
  615. typedef struct _HOR_SHARPNESS_DATA
  616. {
  617. DS_SHARP_INFO HorSharpWeak[2]; //v32 y/c
  618. DS_SHARP_INFO HorSharpNormal[2];
  619. DS_SHARP_INFO HorSharpStrong[2];
  620. DARK_SHARP_INFO HorSharpDark;
  621. }HOR_SHARPNESS_DATA;
  622. typedef struct _HOR_SHARPNESS
  623. {
  624. UINT8 mGroupedIndex[20];
  625. HOR_SHARPNESS_DATA mHOR_Sharpness_Data[VIP_TABLE_GROUPED_NUMBER];
  626. }HOR_SHARPNESS;
  627. //=== Sharpness
  628. typedef struct _SHARPNESS_DATA
  629. {
  630. SHARP_INFO sharp_strong[4];
  631. SHARP_INFO sharp_normal[4];
  632. SHARP_INFO sharp_weak[4];
  633. }SHARPNESS_DATA;
  634. typedef struct _SHARPNESS
  635. {
  636. UINT8 mGroupedIndex[20];
  637. SHARPNESS_DATA mSharpness_Data[VIP_TABLE_GROUPED_NUMBER];
  638. }SHARPNESS;
  639. //=== Peaking
  640. typedef struct _PEAKING_DATA
  641. {
  642. PEAKING_SETTING Peaking[3]; //sd,md,hd
  643. }PEAKING_DATA;
  644. typedef struct _PEAKING
  645. {
  646. UINT8 mGroupedIndex[20];
  647. PEAKING_DATA mPeaking_Data[VIP_TABLE_GROUPED_NUMBER];
  648. }PEAKING;
  649. //=== Range
  650. typedef struct _RANGE_DATA
  651. {
  652. REG_RANGE BrightnessRange;
  653. REG_RANGE ContrastRange;
  654. REG_RANGE ColorTempGainRange;
  655. REG_RANGE ColorTempOffsetRange;
  656. REG_RANGE SaturationRange;
  657. REG_RANGE HueRange;
  658. REG_RANGE_EXT BrightnessRangeExt;
  659. REG_RANGE_EXT ContrastRangeExt;
  660. REG_RANGE_EXT SaturationRangeExt;
  661. }RANGE_DATA;
  662. typedef struct _RANGE
  663. {
  664. UINT8 mGroupedIndex[20];
  665. RANGE_DATA mRange_Data[VIP_TABLE_GROUPED_NUMBER];
  666. }RANGE;
  667. //=== DINTERLACE FILTER
  668. typedef struct _DEIN_FILTER_DATA
  669. {
  670. INT32 sd_vdi_mad_hlp_en;
  671. INT32 sd_slr_mix_ach;
  672. INT32 sd_slr_mix_bch;
  673. INT32 md_vdi_mad_hlp_en;
  674. INT32 md_slr_mix_ach;
  675. INT32 md_slr_mix_bch;
  676. INT32 hd_vdi_mad_hlp_en;
  677. INT32 hd_slr_mix_ach;
  678. INT32 hd_slr_mix_bch;
  679. } DEIN_FILTER_DATA;
  680. typedef struct _DEIN_FILTER
  681. {
  682. UINT8 mGroupedIndex[20];
  683. DEIN_FILTER_DATA mDeIN_Fil_Data[VIP_TABLE_GROUPED_NUMBER];
  684. }DEIN_FILTER;
  685. //=== COLOR MATRIX
  686. typedef struct _COLOR_MATRIX_DATA
  687. {
  688. CSC_SETTING mSrcColorMatrix[2];
  689. } COLOR_MATRIX_DATA;
  690. typedef struct _COLOR_MATRIX
  691. {
  692. UINT8 mGroupedIndex[20];
  693. COLOR_MATRIX_DATA mSrcColorMatrix[VIP_TABLE_GROUPED_NUMBER];
  694. }COLOR_MATRIX;
  695. //=== Dynamic Contrast
  696. typedef struct _DLC_SET_CURVE_PARAM
  697. {
  698. ST_SWDC_Slope dlc_luma_slope;
  699. ST_SWDC_Chroma dlc_chroma_slope;
  700. INT32 dlc_En;
  701. INT32 dlc_Var_Cond_En;
  702. INT32 dlc_Ratio[6];
  703. INT32 dlc_Factor[5];
  704. INT32 dlc_Alpha;
  705. INT32 dlc_Static_Alpha[4];
  706. INT32 dlc_YLevel;
  707. INT32 dlc_CLevel;
  708. } DLC_SET_CURVE_PARAM;
  709. typedef struct _DynamicContrast
  710. {
  711. UINT8 mGroupedIndex[20];
  712. DLC_SET_CURVE_PARAM mDLC_Table[VIP_TABLE_GROUPED_NUMBER];
  713. }DynamicContrast;
  714. typedef enum
  715. {
  716. NR_SNR_BEFORE_SCALER,
  717. NR_SNR_AFTER_SCALER,
  718. NR_SNR_END ,
  719. }PQ_NR_SNR_TYPE;
  720. typedef struct _SNR_DATA
  721. {
  722. STRENGTH_DEFINE SNR_Sel;
  723. STRENGTH_DEFINE SNR_Chk_Middle_Pxl;
  724. STRENGTH_DEFINE SNR_th;
  725. STRENGTH_DEFINE SNR_Gain[SNR_MAP_GAIN_NUM];
  726. STRENGTH_DEFINE SNR_Slope;
  727. }SNR_DATA;
  728. typedef struct _SNR_Setting
  729. {
  730. int SNR_MapByPass;
  731. SNR_DATA SNR_Luma;
  732. SNR_DATA SNR_Chroma;
  733. }SNR_Setting;
  734. //becareful! never change order or data type.
  735. typedef struct _VTAB_CMN_VALUE_DEFINE
  736. {
  737. int MagicNumber1;
  738. CSC_SETTING mColorSpaceConversionTable[3]; //v17// only 601 709 RGB
  739. int MagicNumber2;
  740. GAMMA_OPT mGmaOpt; //v18
  741. int MagicNumber3;
  742. INT32 ucLoadScartRGBTab; //v21
  743. int MagicNumber4;
  744. DS_SHARP_RATIO mSharpRatio[2]; //v22 //y/c
  745. int MagicNumber5;
  746. INT32 iSharpRatio6; //v27
  747. int MagicNumber6;
  748. INT32 iSharpRatio6_c; //v27
  749. int MagicNumber7;
  750. SAT_GAIN_CURVE mSatGainCurve; //v33
  751. int MagicNumber8;
  752. DynamicContrast mDynContrast;
  753. UINT32 MagicNumber9;
  754. NR_Setting mNRSetting;
  755. int MagicNumber10;
  756. UV_Coring mUV_Coring;
  757. int MagicNumber11;
  758. SHARP_PREDCTI mSharpness_PreDCTI;
  759. int MagicNumber12;
  760. SHARP_POSTDCTI mSharpness_PostDCTI;
  761. int MagicNumber13;
  762. SHARP_POSTDLTI mSharpness_PostDLTI;
  763. int MagicNumber14;
  764. SHARP_POST2DSHARPNESS mSharpness_Post2DSharpness;
  765. int MagicNumber15;
  766. SAT_GAIN_CURVE_V2 mSatGainCurve_V2;
  767. int MagicNumber16;
  768. DS_SHARPNESS mDS_Sharpenss;
  769. int MagicNumber17;
  770. HOR_SHARPNESS mHOR_Sharpenss;
  771. int MagicNumber18;
  772. PEAKING mPeaking;
  773. int MagicNumber19;
  774. RANGE mRange;
  775. int MagicNumber20;
  776. DEIN_FILTER mDeinterlaceFilter;
  777. int MagicNumber21;
  778. COLOR_MATRIX mColorMatrix;
  779. int MagicNumber22;
  780. SHARPNESS mSharpenss;
  781. int MagicNumber23;
  782. UINT32 SlrLowAngleOrMBWDisable;
  783. int MagicNumber24;
  784. SNR_Setting mSNR1Setting[VIP_TABLE_GROUPED_NUMBER]; // only work at 331 chip
  785. SNR_Setting mSNR2Setting[VIP_TABLE_GROUPED_NUMBER]; // only work at 331 chip
  786. int MagicNumber25;
  787. } VTAB_CMN_VALUE_DEFINE;
  788. typedef struct _VTAB_SRC_VALUE_DEFINE
  789. {
  790. INT32 iReserve1,iReserve2;
  791. //v18
  792. INT32 ColorRegionSrcCtl[4]; //v19 //bit[0~5]:region[0~5] bit[6]:flesh tone bit[7]:source control enable
  793. //[0]:601 ctl, [1]:709 ctl, [2]:pal ctl, [3]:xvYcc
  794. //v20 // only 601 709
  795. //v28 //bit[0]:slr_low_dis_rgn1_en bit[1]:slr_low_dis_rgn2_en bit[2]:slr_low_dis_rgn3_en bit[3]:slr_mbw_dis_rgn1_en bit[4]:slr_mbw_dis_rgn2_en bit[5]:slr_mbw_dis_rgn3_en
  796. } VTAB_SRC_VALUE_DEFINE;
  797. #ifdef DYNAMIC_BACKLIGHT
  798. typedef struct _DYNAMIC_BACKLIGHT_PARAM
  799. {
  800. UINT32 dwTableMin; //min and max of baclight in panel set table
  801. UINT32 dwTableMid;
  802. UINT32 dwTableMax;
  803. UINT32 dwTableNormal;
  804. UINT32 dwLightMin; //min and max of baclight in certain rate(cause by light sensor or energy saving)
  805. UINT32 dwLightMid;
  806. UINT32 dwLightMax;
  807. UINT32 dwLightQuot;
  808. UINT32 dwLightNormal;
  809. UINT32 dwLightTarget;
  810. INT32 iAdd;
  811. UINT32 dwWhiteLevel;
  812. UINT8 nBound1,nBound2,nBound3,nBound4; //boundaries in gray level: 0~255
  813. UINT16 wDetectFrameCount;
  814. UINT8 ucLevel;
  815. UINT8 ucLevelTarget;
  816. UINT8 ucOrder; //1: much setting value has less backlight
  817. UINT8 bLightSensor:1;
  818. UINT8 bLSChangeBacklight;
  819. INT32 iLSADD;
  820. UINT32 dwLSTarge;
  821. UINT32 dwBackLightRate;
  822. UINT8 ucAllBlackStatus;
  823. struct semaphore sem;
  824. UINT32 BacklightTab[15];
  825. UINT8 ucTop, ucBot, ucTh_low, ucTh_High, ucbase; //0~100%
  826. UINT8 ucHistMinPercentage;
  827. UINT8 ucDynamicBLType;
  828. UINT8 ucDBLContrastHi;
  829. UINT8 ucDBLContrastLow;
  830. UINT16 PWMDutyMax;
  831. UINT16 PWMDutyMin;
  832. Electity_PWM_Mapping_Table* pElectricity_PWM_table;
  833. UINT32 Electricity_PWM_table_Size;
  834. } DYNAMIC_BACKLIGHT_PARAM;
  835. #endif //#ifdef DYNAMIC_BACKLIGHT
  836. typedef struct _SHARP_PREDCTI_RESERVE
  837. {
  838. INT32 iTagetFac0;
  839. INT32 iTagetFac1;
  840. INT32 iTagetFac2;
  841. INT32 iTagetTh0;
  842. INT32 iTagetTh1;
  843. INT32 iTagetSlp0;
  844. INT32 iTagetSlp1;
  845. INT32 iTargetScale;
  846. INT32 iTargetGainTap;
  847. INT32 iTargetShootTap;
  848. }SHARP_PREDCTI_RESERVE;
  849. typedef struct _SHARP_POSTDCTI_RESERVE
  850. {
  851. INT32 iTagetFac0;
  852. INT32 iTagetFac1;
  853. INT32 iTagetFac2;
  854. INT32 iTagetTh0;
  855. INT32 iTagetTh1;
  856. INT32 iTagetSlp0;
  857. INT32 iTagetSlp1;
  858. INT32 iTargetScale;
  859. INT32 iTargetGainTap;
  860. INT32 iTargetShootTap;
  861. }SHARP_POSTDCTI_RESERVE;
  862. typedef struct _SHARP_POSTDLTI_RESERVE
  863. {
  864. INT32 iTagetFac0;
  865. INT32 iTagetFac1;
  866. INT32 iTagetFac2;
  867. INT32 iTagetTh0;
  868. INT32 iTagetTh1;
  869. INT32 iTagetSlp0;
  870. INT32 iTagetSlp1;
  871. INT32 iTargetScale;
  872. INT32 iTargetGainTap;
  873. INT32 iTargetShootTap;
  874. INT32 iTargetDCMode;
  875. INT32 iTargetDCOverShoot;
  876. INT32 iTargetDCUnderShoot;
  877. INT32 iTargetDCOverShootfac;
  878. INT32 iTargetDCUnderShootfac;
  879. INT32 iTargetNorOverShoot;
  880. INT32 iTargetNorlUnderShoot;
  881. }SHARP_POSTDLTI_RESERVE;
  882. typedef struct _SHARP_POST2D_RESERVE
  883. {
  884. INT32 iTagetFac0_L;
  885. INT32 iTagetFac1_L;
  886. INT32 iTagetFac2_L;
  887. INT32 iTagetTh0_L;
  888. INT32 iTagetTh1_L;
  889. INT32 iTagetSlp0_L;
  890. INT32 iTagetSlp1_L;
  891. INT32 iTargetFM_L;
  892. INT32 iTargetScale_L;
  893. INT32 iTargetGainTap_L;
  894. INT32 iTargetShootTap_L;
  895. INT32 iTargetNorOverShoot;
  896. INT32 iTargetNorlUnderShoot;
  897. INT32 iTargetOverShootfac;
  898. INT32 iTargetUnderShootfac;
  899. INT32 iTagetFac0_C;
  900. INT32 iTagetFac1_C;
  901. INT32 iTagetFac2_C;
  902. INT32 iTagetTh0_C;
  903. INT32 iTagetTh1_C;
  904. INT32 iTagetSlp0_C;
  905. INT32 iTagetSlp1_C;
  906. INT32 iTargetFM_C;
  907. INT32 iTargetScale_C;
  908. INT32 iTargetGainTap_C;
  909. INT32 iTargetShootTap_C;
  910. }SHARP_POST2D_RESERVE;
  911. typedef struct _PQHW_CONTEXT
  912. {
  913. PQ_MENU_VALUE MenuValue;
  914. UINT8 ucLocationMode; //0:home mode 1:sotre mode
  915. UINT8 GammaIndex;
  916. UINT8 GammaEnable;
  917. UINT8 GammaCount;
  918. UINT32 wGamaTable[1024];
  919. UINT8 ucNRUserMax;
  920. UINT8 ucNRUserMin;
  921. INT32 iColorMatrixC1;
  922. INT32 iColorMatrixC2;
  923. INT32 iColorMatrixC3;
  924. UINT8 ucMPEGNRUserMax;
  925. UINT8 CVD2_store_nr_setting;
  926. CSC_SETTING* CurColorMatrix;
  927. //SAT_INFO SatInfo; //joshua: nobody use
  928. VTAB_CMN_VALUE_DEFINE VtabCmnValue;
  929. VTAB_SRC_VALUE_DEFINE* pCurVtabSrcValue;
  930. INT32 iCurrContrastValue; //backup current contrast value for fade in/out
  931. SAT_INFO SatInfo;
  932. USER_CURVE_INFO UserCurveInfo;
  933. VTAB_SRC_VALUE_DEFINE VtabSrcValue[VTAB_MAX_SOURCE];
  934. unsigned nNRLevel;//:2; //Noise Reduction Level: {Off, Weak, Medium, Strong}
  935. unsigned nMPEGNRLevel;//:2; //Noise Reduction Level of MPEG format: {Off, Weak, Medium, Strong}
  936. unsigned nColorSpaceMode:2; // {Off, Auto, Normal, Wide}
  937. unsigned bDynamicSaturation:2; //{Off, On}
  938. unsigned bEnableColorProcess:1;
  939. UINT8 ucMPEGNRUserMin;
  940. UINT8 Degree;
  941. INT8 hl_sharp;
  942. INT8 hc_sharp;
  943. INT8 hl_smooth;
  944. INT8 hc_smooth;
  945. UINT8 hl_menu_sharp;
  946. UINT8 hc_menu_sharp;
  947. BOOL bSceneChg;
  948. INT32 store_hl_limit;
  949. INT32 store_vl_limit;
  950. UINT8 UserCurveInit;
  951. UINT8 LoadPQTable;
  952. UINT8 ucDynamicBacklightMode;
  953. UINT8 ucDynamicContrastLevel;
  954. spinlock_t Spin_PresetContrast;
  955. UINT8 UserCurveSetup;
  956. // SOFTWARE_COLOR_MATRIX
  957. INT32 iBrightness;
  958. INT32 iRBias;
  959. INT32 iGBias;
  960. INT32 iBBias;
  961. INT32 iContrast;
  962. INT32 iRGain;
  963. INT32 iGGain;
  964. INT32 iBGain;
  965. INT32 iHue;
  966. INT32 iSaturation;
  967. UINT8 menu_sharpness;
  968. UINT8 ucMatrixbypassCtl;
  969. INT32 iAdjustNRCounter;
  970. BOOL bFadeEn;
  971. UINT8 ucFadeStartValue;
  972. UINT8 ucFadeEndValue;
  973. UINT8 ucFadeIncValue;
  974. UINT8 ucYuvDataFormat;
  975. //#ifdef VIP_SW_DC
  976. #if 1
  977. INT32 ulCurveSlop[16];
  978. UINT16 ulHistCaseCur;
  979. #endif
  980. BOOL bPWMOff; // for tunr off PWM, not set PWM any more
  981. SHARP_PREDCTI_RESERVE mSharp_PREDCTI_Reserve;
  982. SHARP_POSTDCTI_RESERVE mSharp_POSTDCTI_Reserve;
  983. SHARP_POSTDLTI_RESERVE mSharp_POSTDLTI_Reserve;
  984. SHARP_POST2D_RESERVE mSharp_POST2D_Reserve;
  985. BOOL bNR_Reset_by_changeSrc;
  986. PQ_PATCH PqPatch;
  987. }PQHW_CONTEXT;
  988. enum{
  989. POST_2D_SHARPNESS_JPEG_THUMBNAIL_PATCH,
  990. POST_2D_SHARPNESS_DEFAULT, //default
  991. };
  992. typedef struct _COLORLUT_VALUE_INT6
  993. {
  994. INT32 x:6;
  995. INT32 y:6;
  996. INT32 z:6;
  997. }COLORLUT_VALUE_INT6;
  998. typedef struct _COLOR_MATRIX_INT
  999. {
  1000. INT32 iValue:14;
  1001. }COLOR_MATRIX_INT;
  1002. typedef struct _LUT_OFFSET
  1003. {
  1004. int Hoffset;
  1005. int Soffset;
  1006. int Yoffset;
  1007. } LUT_OFFSET;
  1008. typedef struct _COLORLUT_BUF
  1009. {
  1010. LUT_OFFSET lutOffset[16][11][32];
  1011. }COLORLUT_BUF;
  1012. void PQ_ColorLUT_SetRegion(INT32 iRegionIdx, INT32 iSatGain, INT32 iYGain, INT32 iRotAngle, INT32 iRotGain, INT32 bEnable, BOOL bSet);
  1013. /*******************************************************************************
  1014. * Program
  1015. ******************************************************************************/
  1016. //========================register read/write function========================
  1017. UINT32 PQ_GetRegisterType(UINT32 ulRegisterType);
  1018. void PQ_RegisterWrite(UINT32 ulRegisterName, UINT32 ulValue);
  1019. UINT32 PQ_RegisterRead(UINT32 ulRegisterName );
  1020. UINT8 PQ_CheckSpecialRegister(UINT32 ulReg);
  1021. //========================pq main flow setting function========================
  1022. //============================local func.=================================
  1023. void PQ_ColorMatrixComp(UINT8 bReset);
  1024. void PQ_ColorMatrixSetup(UINT8 bReset, UINT8 ucNum);
  1025. void PQ_FleshTone_Init(void);
  1026. void PQ_NR_Init(void);
  1027. void PQ_SetupStrength(PQ_ITEM ucItemID, UINT8 ucDegree);
  1028. UINT32 PQ_ChromaBinPercentage(UINT8 ucBin);
  1029. BOOL PQ_SWDTColorBar(void);
  1030. void PQ_PCColorBar_SharpnessPatch(void); //eric
  1031. void PQ_ColorBarDetect(void); //sharlene
  1032. void PQ_AdjustNr(void);
  1033. void PQ_LoadSettingValue(UINT8*, UINT8 ucTableIndex);
  1034. void PQ_ColorSpaceMode(UINT8 ucMode, UINT8 ucInputSource);
  1035. void PQ_InitVtabValue(void);
  1036. void PQ_Sharpness_PREDCTI(BOOL bReset,UINT8 ucValue);
  1037. void PQ_Sharpness_POSTDCTI(BOOL bReset,UINT8 ucValue);
  1038. void PQ_Sharpness_POSTDLTI(BOOL bReset,UINT8 ucValue);
  1039. void PQ_Sharpness_POST_2D(BOOL bReset,UINT8 ucValue);
  1040. void PQ_HorSharpness(BOOL bReset,UINT8 ucValue);
  1041. void PQ_DSSharpness(BOOL bReset,UINT8 ucValue);
  1042. void PQ_DPYSharpness(BOOL bReset,UINT8 ucValue);
  1043. void PQ_CalcPivotxy(SHARP_INFO* sharp_info);
  1044. void PQ_NRLevel(UINT32 nr_level, UINT32 vdi_total);
  1045. void PQ_MPEGNRLevel(UINT32 nr_level, UINT32 vdi_total);
  1046. BOOL PQ_AccessColorMatrix(UINT32 *pulData, INT32 AccessMode, UINT32 dwDataSize);
  1047. BOOL PQ_AccessColorLUT(UINT32 *pulAddr, INT32 AcessMode, BOOL bNew, INT32 LUTBlockIndex);
  1048. BOOL PQ_SetColorLUTStr(UINT16 *pwAddr);
  1049. BOOL PQ_GetColorLUTStr(UINT16 *pwAddr);
  1050. void PQ_ConditionSetting(UINT8 ucMode);
  1051. void PQ_VDeblockFilterEnable(void);
  1052. BOOL PQ_NtscPalDetect(void);
  1053. void PQ_DS_Init(void);
  1054. void PQ_DSSetting(void);
  1055. void PQ_SLR_ColorBarDetailSet(void);
  1056. void PQ_DeinterlaceFilter(void);
  1057. VTAB_SRC_VALUE_DEFINE* PQ_GetSourceVTab(UINT8 ucSource, UINT8 ucSubSource);
  1058. void PQ_DeblockFilterAndDetect(BOOL bDemoMode, UINT32 vdi_hsize_i, UINT32 vdi_vsize);
  1059. void PQ_HmeSetup(UINT32 vdi_hsize_i, UINT32 vdi_vsize);
  1060. void PQ_HmeControl(void);
  1061. void PQ_GmeSetup(void);
  1062. void PQ_MADSetup(UINT32 vdi_hsize_i, UINT32 vdi_vsize, UINT32 vdi_total);
  1063. void PQ_2232DetSetup(UINT32 vdi_total);
  1064. void PQ_NERegion(BOOL bDemoMode, UINT32 vdi_hsize_i, UINT32 vdi_vsize);
  1065. BOOL PQ_CheckTableCheckSum(UINT8*);
  1066. void PQ_LoadSettingTable(UINT8*, UINT8 ucTableIndex);
  1067. void PQ_RegisterWrite_user_curve(UINT32 ulRegister,UINT32 ulValue);
  1068. UINT8 check_usr_curve_setup_ok(void);
  1069. void PQ_GetHistBin(UINT32 *Y_Hist);
  1070. void PQ_SetHistBinindex(UINT8 index);
  1071. //==========================local func. end================================
  1072. BOOL PQ_SetGammaTable(UINT32 *pulAddr);
  1073. UINT32 PQ_LoadGammaTable(UINT32 *pulAddr);
  1074. void PQ_SetLocationMode(UINT8 ucMode);
  1075. void PQ_SetCurrContrastValue(INT32 iValue);
  1076. INT32 PQ_GetCurrContrastValue(void);
  1077. INT32 PQ_GetMenuColorBias(UINT8 index);
  1078. BOOL PQ_GetColorProcessor(void);
  1079. void PQ_SetupColorSpaceConversionTable(void);
  1080. void PQ_PureColorControl(INT16 ucPure, INT8 ucPicture);
  1081. void PQ_ColorTempBias(PQ_COLOR_TEMP_BIAS ucType, INT32 iValue);
  1082. void PQ_SetColorMatrix(UINT8 ucEnable);
  1083. void PQ_FilterSetup(UINT8 ucSource, UINT8 ucSubSource);
  1084. void PQ_LowAngleSetting(void);
  1085. void PQ_PeakingFilterSetup(void);
  1086. void PQ_InitialTable(void);
  1087. void PQ_DefaultSetting(void);
  1088. void PQ_ColorProcesserDisable(void);
  1089. void PQ_ColorProcesser(UINT8 ucEnable);
  1090. BOOL PQ_ParsePQCmdSet(UINT32 *pulAddr);
  1091. void PQ_GetYavg(UINT32 *Y_AVG);
  1092. UINT8 PQ_GetAvgY_Value(void);
  1093. void PQ_GammaCorrect(UINT8);
  1094. void PQ_Hue(UINT8 ucIndex);
  1095. void PQ_ColorStyleSaturation(UINT8 ucType);
  1096. void PQ_Saturation(INT32 iValue);
  1097. void PQ_Brightness(UINT8 bReset, INT32 iValue);
  1098. void PQ_Sharpness(BOOL bReset,UINT8 ucValue);
  1099. void PQ_DemoModeWidth(void);
  1100. void PQ_Contrast(UINT8 bReset, INT32 iValue);
  1101. void PQ_EnablePrint(UINT8 ucEnable);
  1102. void PQ_GetVtabHwRange(UINT8 ucFunID, INT32* pMin, INT32* pMax, INT32* pMiddle);
  1103. void PQ_GetVtabHwRangeExt(UINT8 ucFunID, INT32* pMidLeft, INT32* pMidRight);
  1104. void PQ_VDISize(void);
  1105. INT32 PQ_WatchDemo_Get_AvgY(void);
  1106. void PQ_ColorTempGain(PQ_COLOR_TEMP_GAIN ucType, INT32 iValue);
  1107. void PQ_3DNoiseReductoin(UINT8 ucMode,UINT8 iUserMin, UINT8 iUserMax);
  1108. void PQ_Set_NR_BlockAlpha(UINT8 NRBlockAlphaType);
  1109. void PQ_Set_NR_SLR_SNR(UINT8 ucSLR_SNR_TYPE);
  1110. void PQ_MPEGNoiseReductoin(UINT8 ucLevel,UINT8 iUserMin, UINT8 iUserMax);
  1111. void PQ_SetupGammaTable(UINT8 ucEnable, UINT8 ucTableIndex);
  1112. void PQ_DemoModeEnable(UINT8 demo_enable);
  1113. void PQ_DPYDemoModeEnable(UINT8 demo_enable);
  1114. void PQ_StaticGammaSetup(INT8 cOffset);
  1115. void PQ_SetDithering(UINT8 ucStatus);
  1116. void PQ_DitheringLevel(UINT8 ucLevel);
  1117. void PQ_DitheringAlgo(UINT8 ucAlgo);
  1118. void PQ_SourceSetting(UINT8 ucSource, UINT8 ucSubSource);
  1119. void PQ_SourceSelect(UINT8 ucUserInputSource);
  1120. void PQ_SetMenuValue(UINT8 ucFunID, INT32 iValue);
  1121. void PQ_DPYSetup(UINT8 ucUserSource,UINT8 ucSubSource);
  1122. void PQ_HWDestroyWorkqueue(void);
  1123. INT32 PQ_GetMenuHueValue(void);
  1124. UINT8 PQ_GetGammaEnableSt(void);
  1125. void PQ_GetRegInfo(PQ_RegInfo* pRegInfo);
  1126. //#ifdef VIP_SW_DC
  1127. #if 1
  1128. void PQ_GetSWDCParameter(void);
  1129. void PQ_SW_DynamicContrast_UserCurveAdjust(void);
  1130. void PQ_GetSWDCParamCmd(ST_SWDC_Param *param);
  1131. void PQ_SetSWDCParamCmd(ST_SWDC_Param *param);
  1132. void PQ_GetSWDCSlopeCmd(ST_SWDC_Slope *pstSlope);
  1133. void PQ_SetSWDCSlopeCmd(ST_SWDC_Slope *pstSlope);
  1134. void PQ_GetSWDCChromaCmd(ST_SWDC_Chroma*pstChroma);
  1135. void PQ_SetSWDCChromaCmd(ST_SWDC_Chroma*pstChroma);
  1136. void PQ_GetSWDCInfoCmd(ST_SWDC_Info *info);
  1137. void PQ_GetSWDCSourceCmd(UINT8 *param);
  1138. void PQ_SetSWDCSourceCmd(UINT8 *param);
  1139. void PQ_GetDrvCurrentSourceCmd(UINT8 *param);
  1140. void PQ_SW_DynamicContrast_UserCurveAdjust(void);
  1141. void PQ_SW_DynamicContrast_Param(UINT8 ucSource);
  1142. void PQ_SW_DynamicContrast_Enable(UINT8 wValue);
  1143. void PQ_SW_DynamicContrast_Y_Level(UINT16 wValue);
  1144. void PQ_SW_DynamicContrast_C_Level(UINT16 wValue);
  1145. void PQ_SW_DynamicContrast_Alpha_Mode(UINT8 bMode ,UINT8 bValue);
  1146. #endif
  1147. UINT8 VIP_Get_PQ_Source(UINT8 ucSource, UINT8 ucSubSource);
  1148. //330
  1149. UINT8 PQ_Get_Source_Grouped_Index(void);
  1150. void PQ_Default_Color_Lut_Setting(void);
  1151. BOOL PQ_SetupLUTTable(UINT8 ucEnable);
  1152. void PQ_SetupSaturationGainCurve(BOOL bEnable);
  1153. BOOL PQ_IsFadeEn(void);
  1154. void PQ_SetFadeValue(BOOL bFadeEn, UINT8 ucStartValue, UINT8 ucEndValue, UINT8 ucIncValue);
  1155. void PQ_SetFadeInOut(void);
  1156. void PQ_Set_UV_Coring(void);
  1157. void PQ_regionLumaAverage(UINT8 bRegionIndex,UINT8 bTotalHnum,UINT8 bTotalVnum);
  1158. void PQ_GetRegionLumaAverage(UINT16* bRegionYaverage);
  1159. #ifdef DYNAMIC_BACKLIGHT
  1160. UINT8 PQ_GETAllBlackStatus(void);
  1161. UINT32 PQ_GetBackLight(void);
  1162. void PQ_SetBackLight(UINT32 dwValue);
  1163. UINT32 PQ_GetRealBackLight(void);
  1164. void PQ_SetRealBackLight(UINT32 dwValue);
  1165. UINT32 PQ_GetHomeModeValue(UINT32 *pValue);
  1166. void PQ_GetLightSensorInfo(UINT8 ucLSensorEn,UINT8 ucIndex, UINT32 dwLight);
  1167. void PQ_SetBacklightParameter(UINT8 ucTop,UINT8 ucBot,UINT8 ucTh_low,UINT8 ucTh_High);
  1168. void PQ_LightSensorChange(void);
  1169. void PQ_InitDynamicBackLight(void);
  1170. void PQ_DynamicBackLightAP(UINT8 ucLevel, UINT32 dwMap);
  1171. void PQ_EnableDynamicBackLight(UINT8 ucLevel, UINT32 dwLightUser);
  1172. UINT32 PQ_BackLightTarget(UINT8 nDBLStatus, UINT8 nWhiteCondition, UINT32 dwCur);
  1173. BOOL PQ_ColorSearchAutoDet(UINT8 ucPath, UINT8 ucColorType ,UINT32 *pulMaxValue, UINT32*pulMinValue);
  1174. UINT8 PQ_AllBlackDetect(void);
  1175. void PQ_LEDBackLightDetect(BOOL bReset);
  1176. void PQ_FormalBackLightDetect(BOOL bReset);
  1177. UINT32 PQ_EEBackLightTarget(UINT8 nDBLStatus, UINT32 dwWhiteLevel, UINT32 dwCur);
  1178. void PQ_EEBackLightDetect(BOOL bReset);
  1179. void PQ_PresetContrast(BOOL bReset, INT32 iValue, INT32 nSpeed);
  1180. void PQ_PresetBackLight(BOOL bReset, UINT32 dwLightTarget, INT32 nSpeed);
  1181. void PQ_SISPresetContrast(UINT8 ucValue, INT32 nSpeed);
  1182. void PQ_SetDynamicBacklightMode(UINT8 ucMode);
  1183. void PQ_SetBacklightLevel(UINT8 ucLevel);
  1184. void PQ_SetBacklightHistMin(UINT8 ucValue);
  1185. void PQ_SetDynamicBLType(UINT8 ucType);
  1186. UINT8 PQ_GetDynamicBLType(void);
  1187. UINT8 PQ_GetOrderedBackLight(UINT32 *pLight);
  1188. void PQ_SetMaxPWM(UINT32 ucValue);
  1189. void PQ_FlDetLevel(UINT8 ucLevel);
  1190. UINT8 PQ_GetDefinitionIndex(void);
  1191. #endif
  1192. void PQ_HW_Initial(void);
  1193. UINT8 _VIP_InputWidthEnlargeRate(void);
  1194. UINT32 PQ_Get_VDI_VSize(void);
  1195. #endif //#ifndef _PQ_HW_H