hv_drv_PQ.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  1. /**
  2. * @file hv_drv_DpuPQ.h
  3. * @brief Header file of mute module.
  4. *
  5. * @verbatim
  6. * ==============================================================================
  7. * ##### How to use #####
  8. * ==============================================================================
  9. *
  10. * @endverbatim
  11. *
  12. * @author HiView SoC Software Team
  13. * @version 1.0.0
  14. * @date 2022-08-22
  15. */
  16. #ifndef __HV_DRV_DPU_PQ_H__
  17. #define __HV_DRV_DPU_PQ_H__
  18. #include "hv_comm_DataType.h"
  19. //#include "HV_REGS_HT7315.h"
  20. #include "hv_vos_Comm.h"
  21. #include "hv_comm_Define.h"
  22. /**
  23. * @brief set config of PQ macro.
  24. * @param[in] ucFullLdc, config of HV_PROJECT_CONFIG_FULL_LOCALDIMMING
  25. * @param[in] ucFullLdc, config of 2d pixelgain
  26. * @return VOID
  27. */
  28. VOID Hv_Drv_PQSetMacroConfig(UCHAR8 ucFullLdc, UCHAR8 uc2DPixelGain);
  29. /**
  30. * @brief bypass all PQ Module.
  31. * @param[in] bBypass, status of PQ bypass
  32. * @return VOID
  33. */
  34. VOID Hv_Drv_PQPathBypass(BOOL bEn);
  35. /**
  36. * @brief PQ config Init.
  37. * @param[in] None
  38. * @return None.
  39. */
  40. VOID Hv_Drv_DpuPQ_ConfigInit(VOID);
  41. /**
  42. * @brief PQ common reg Init.
  43. * @param[in] puiBaseRegAddr:address of Init bin;
  44. * @param[in] uiLen:address of Init bin;
  45. * @return None.
  46. */
  47. VOID Hv_Drv_DpuPQ_CommonRegInit(const UINT32 *puiBaseRegAddr, UINT32 uiLen);
  48. /**
  49. * @brief CM reg Init.
  50. * @param[in] puiCmAddr:address of CM Init bin;
  51. * @param[in] uiLen:address of Init bin;
  52. * @return VOID
  53. */
  54. VOID Hv_Drv_PQ_CMInit(const UINT32 *puiCmAddr, UINT32 uiLen);
  55. /**
  56. * @brief CM Enable.
  57. * @param[in] bEn:status of CM enable;
  58. * @return VOID
  59. */
  60. VOID Hv_Drv_PQ_CMEnable(UCHAR8 ucCMEn);
  61. /**
  62. * @brief CM dma Enable.
  63. * @param[in] bEn:status of CM dma enable;
  64. * @return VOID
  65. */
  66. VOID Hv_Drv_PQ_CMVDMEn(UCHAR8 ucCMVDMEn);
  67. /**
  68. * @brief CM Lut Init.
  69. * @param[in] puiCmLutAddr:default address of CM lut;
  70. * @param[in] puiCmLutAddr2:current address of CM lut;
  71. * @return VOID
  72. */
  73. VOID Hv_Drv_PQ_CMLutInit(const UINT32 *puiCmLutAddr, UINT32 *puiCmLutAddr2);
  74. /**
  75. * @brief CM64(for CM debug by tool)setting hue.
  76. * @param[in] ucType:type of CM(hue,sat,lum);
  77. * @param[in] ucIndex:index of hue(0-63);
  78. * @param[in] ucOffset:value of hue setting;
  79. * @return VOID
  80. */
  81. VOID Hv_Drv_PQ_Cm64Axis(UCHAR8 ucType, UCHAR8 ucIndex, UCHAR8 ucShift);
  82. /**
  83. * @brief CM setting hue.
  84. * @param[in] ucColor:color of CM(R,G,B,C,M,Y);
  85. * @param[in] ucCmHue:value of hue setting;
  86. * @return VOID
  87. */
  88. VOID Hv_Drv_PQ_CMSetHue(UCHAR8 ucColor, UCHAR8 ucHue);
  89. /**
  90. * @brief CM setting sat.
  91. * @param[in] ucColor:color of CM(R,G,B,C,M,Y);
  92. * @param[in] ucSat:value of sat setting;
  93. * @return VOID
  94. */
  95. VOID Hv_Drv_PQ_CMSetSat(UCHAR8 ucColor, UCHAR8 ucSat);
  96. /**
  97. * @brief CM setting lum.
  98. * @param[in] ucColor:color of CM(R,G,B,C,M,Y);
  99. * @param[in] ucLum:value of lum setting;
  100. * @return VOID
  101. */
  102. VOID Hv_Drv_PQ_CMSetLum(UCHAR8 ucColor, UCHAR8 ucLum);
  103. /**
  104. * @brief gamma Lut Init.
  105. * @param[in] auiGammalut:default address of gamma lut;
  106. * @return VOID
  107. */
  108. VOID Hv_Drv_PQ_GammaLutInit(const UINT32 *puiGammalut);
  109. /**
  110. * @brief osd gamma Lut Init.
  111. * @param[in] puiOsdGmiAddr:default address of gamma lut;
  112. * @param[in] puiOsdGmdAddr:default address of gamma lut;
  113. * @return VOID
  114. */
  115. VOID Hv_Drv_PQ_OsdGammaLutInit(const UINT32 *puiOsdGmiAddr, const UINT32 *puiOsdGmdAddr);
  116. /**
  117. * @brief gamma Init.
  118. * @param[in] puiGammabin:address of gamma Init bin;
  119. * @param[in] uiLen:address of Init bin;
  120. * @return VOID
  121. */
  122. VOID Hv_Drv_PQ_GammaInit(const UINT32 *puiGammabin, UINT32 uiLen);
  123. /**
  124. * @brief Set different Gamma
  125. * @param[in] uiIndex: index of Gamma lut to be set
  126. * @return VOID
  127. */
  128. VOID Hv_Drv_PQ_SetGammaIndex(UCHAR8 uiIndex);
  129. /**
  130. * @brief Set different osd Gamma
  131. * @param[in] uiIndex: index of osd Gamma lut to be set
  132. * @return VOID
  133. */
  134. VOID Hv_Drv_PQ_SetOsdGammaIndex(UCHAR8 ucIndex);
  135. /**
  136. * @brief gamma dma Enable.
  137. * @param[in] ucGammaVDMEn:status of gamma dma enable;
  138. * @return VOID
  139. */
  140. VOID Hv_Drv_PQ_GammaVDMEn(UCHAR8 ucGammaVDMEn);
  141. /**
  142. * @brief osd gamma dma Enable.
  143. * @param[in] ucGammaVDMEn:status of osd gamma dma enable;
  144. * @return VOID
  145. */
  146. VOID Hv_Drv_PQ_OsdGammaVDMEn(UCHAR8 ucOsdGammaVDMEn);
  147. /**
  148. * @brief gamma Enable.
  149. * @param[in] ucGammaEn:status of gamma enable;
  150. * @return VOID
  151. */
  152. VOID Hv_Drv_PQ_GammaEnable(UCHAR8 ucGammaEn);
  153. /**
  154. * @brief Set gamma lut.
  155. * @param[in] pucGamma:address of gamma lut;
  156. * @param[in] usTableSize:size of gamma lut;
  157. * @return VOID
  158. */
  159. VOID Hv_Drv_PQ_SetGammaLut(UCHAR8 *pucGamma, USHORT16 usTableSize);
  160. /**
  161. * @brief sharpness Init.
  162. * @param[in] puiSharpnessbin:address of sharpness Init bin;
  163. * @param[in] uiLen:address of Init bin;
  164. * @param[in] puiSharpnessParam:address of sharpness cfg bin;
  165. * @return VOID
  166. */
  167. VOID Hv_Drv_PQ_SharpnessInit(const UINT32 *puiSharpnessbin, UINT32 uiLen, const UINT32 *puiSharpnessParam);
  168. /**
  169. * @brief Sharpness Setting
  170. * @param[in] ucSharpness value of Sharpness
  171. * @return VOID
  172. */
  173. VOID Hv_Drv_PQ_SetSharpness(UCHAR8 ucSharpness);
  174. /**
  175. * @brief sharpness Enable.
  176. * @param[in] ucSharpnessEn:status of sharpness enable;
  177. * @return VOID
  178. */
  179. VOID Hv_Drv_PQ_SharpnessEnable(UCHAR8 ucSharpnessEn);
  180. /**
  181. * @brief scaler dma Enable.
  182. * @param[in] ucScalerVDMEn:status of scaler dma enable;
  183. * @return VOID
  184. */
  185. VOID Hv_Drv_PQ_ScalerVDMEnable(UCHAR8 ucScalerVDMEn);
  186. /**
  187. * @brief global contrast Init.
  188. * @param[in] puiGcAddr:address of gc init bin;
  189. * @param[in] uiLen:length of gc init bin;
  190. * @return VOID
  191. */
  192. VOID Hv_Drv_PQ_GcInit(const UINT32 *puiGcAddr, UINT32 uiLen);
  193. /**
  194. * @brief global contrast Lut Init.
  195. * @param[in] puiGcLutAddr:default address of gc lut;
  196. * @param[in] puiGcLutAddr1:current address of gc lut;
  197. * @return VOID
  198. */
  199. VOID Hv_Drv_PQ_GcLutInit(const UINT32 *puiGcLutAddr, UINT32 *puiGcLutAddr1);
  200. /**
  201. * @brief global contrast mode setting.
  202. * @param[in] ucGcMode:gc mode;
  203. * @param[in] ucCurBlkSta:;
  204. * @return VOID
  205. */
  206. VOID Hv_Drv_PQ_GcModeSwitch(UCHAR8 ucGcMode, UCHAR8 ucCurBlkSta);
  207. /**
  208. * @brief gc dma Enable.
  209. * @param[in] ucGCVDMEn:status of gc dma enable;
  210. * @return VOID
  211. */
  212. VOID Hv_Drv_PQ_GCVDMEn(UCHAR8 ucGCVDMEn);
  213. /**
  214. * @brief gc Enable.
  215. * @param[in] ucGCEn:status of gc enable;
  216. * @return VOID
  217. */
  218. VOID Hv_Drv_PQ_GCEnable(UCHAR8 ucGCEn);
  219. /**
  220. * @brief set gc DarkStabilizer Direction.
  221. * @param[in] ucDir:direction of DarkStabilizer;
  222. * @return VOID
  223. */
  224. VOID Hv_Drv_PQ_GCSetDarkStaDir(UCHAR8 ucDir);
  225. /**
  226. * @brief local dimming Lut Init.
  227. * @param[in] puiLdcLutAddr:default address of ldc lut;
  228. * @param[in] puiBlAddr:address backlight;
  229. * @return VOID
  230. */
  231. VOID Hv_Drv_PQ_LdcLutInit(const UINT32 *puiLdcLutAddr, UINT32 *puiBlAddr);
  232. /**
  233. * @brief local dimming Init.
  234. * @param[in] puiLdcAddr:address of ldc Init bin;
  235. * @param[in] uiLen:address of Init bin;
  236. * @return VOID
  237. */
  238. VOID Hv_Drv_PQ_LdcInit(const UINT32 *puiLdcAddr, UINT32 uiLen);
  239. /**
  240. * @brief LocalDimming blend pwm
  241. * @param[in] uiPwmValue:value of pwm
  242. * @return VOID
  243. */
  244. VOID Hv_Drv_PQ_LdcPwmBlend(UINT32 uiPwmValue);
  245. /**
  246. * @brief set address of three mode lut
  247. * @param[in] pusLdcModeLutBaseAddr:default address of ldc mode lut;
  248. * @return VOID
  249. */
  250. VOID Hv_Drv_PQ_LdcSetModeLutAddr(const USHORT16 *pusLdcModeLutBaseAddr);
  251. /**
  252. * @brief LocalDimming setting mode
  253. * @param[in] ucLdcModeIndx:value of mode
  254. * @param[in] usMaxWeightVal max weight value
  255. * @return VOID
  256. */
  257. VOID Hv_Drv_PQ_LdcSetMode(UCHAR8 ucLdcModeIndex, USHORT16 usMaxWeightVal);
  258. /**
  259. * @brief ldc dma Enable.
  260. * @param[in] ucLdcVDMEn:status of ldc dma enable;
  261. * @return VOID
  262. */
  263. VOID Hv_Drv_PQ_LdcVDMEn(UCHAR8 ucLdcVDMEn);
  264. /**
  265. * @brief calculation dynamic backlight PWM
  266. * @param[in] None
  267. * @return value of PWM
  268. */
  269. USHORT16 Hv_Drv_PQ_LdcCalcPWM();
  270. /**
  271. * @brief get global average brightness
  272. * @param[in] None
  273. * @return value of average brightness
  274. */
  275. UINT32 Hv_Drv_PQ_LDCGetGlobalAvgBright(VOID);
  276. /**
  277. * @brief get global max brightness
  278. * @param[in] None
  279. * @return value of max brightness
  280. */
  281. UINT32 Hv_Drv_PQ_LDCGetGlobalMaxBright(VOID);
  282. /**
  283. * @brief LocalDimming bypass
  284. * @param[in] ucLdBypass:status of ldc bypass
  285. * @return VOID
  286. */
  287. VOID Hv_Drv_PQ_SetLdBypass(UCHAR8 ucLdBypass);
  288. /**
  289. * @brief Max Backlight setting
  290. * @param[in] value of Backlight
  291. * @return VOID
  292. */
  293. VOID Hv_Drv_PQ_SetMaxBl(UCHAR8 ucMaxBl);
  294. /**
  295. * @brief get ldim address of wdma
  296. * @param[in] ucBlBufId id of dma buffer
  297. * @return address of wdma.
  298. */
  299. UINT32 Hv_Drv_PQ_GetLdimBlBufAddr(UCHAR8 ucBlBufId);
  300. /**
  301. * @brief get Kspi address of rdma
  302. * @param[in] None
  303. * @return address of rdma.
  304. */
  305. UINT32 Hv_Drv_PQ_GetKspiRdmaAddr(VOID);
  306. /**
  307. * @brief set Kspi demo mode
  308. * @param[in] ucDemoMode demo mode of Kspi
  309. * @return VOID
  310. */
  311. VOID Hv_Drv_PQ_SetKspiDemoMode(UCHAR8 ucDemoMode);
  312. /**
  313. * @brief set Kspi demo data
  314. * @param[in] usDemoData demo data of Kspi
  315. * @return VOID
  316. */
  317. VOID Hv_Drv_PQ_SetKspiDemoData(USHORT16 usDemoData);
  318. /**
  319. * @brief set Kspi data length
  320. * @param[in] usDataLen length of Kspi data
  321. * @return VOID
  322. */
  323. VOID Hv_Drv_PQ_SetKspiDataLen(USHORT16 usDataLen);
  324. /**
  325. * @brief set Kspi header
  326. * @param[in] ucCh channel of spi
  327. * @param[in] ucHeaderNum number of header
  328. * @param[in] pusHeadrData point of head data
  329. * @return VOID
  330. */
  331. VOID Hv_Drv_PQ_SetKspiHeader(UCHAR8 ucCh, UCHAR8 ucHeaderNum, USHORT16 *pusHeadrData);
  332. /**
  333. * @brief set Kspi tail
  334. * @param[in] ucCh channel of spi
  335. * @param[in] ucTailNum number of tail
  336. * @param[in] pusTailData point of tail data
  337. * @return VOID
  338. */
  339. VOID Hv_Drv_PQ_SetKspiTail(UCHAR8 ucCh, UCHAR8 ucTailNum, USHORT16 *pusTailData);
  340. /**
  341. * @brief Kspi hard crc enable
  342. * @param[in] ucHardCrcEn enable of hard crc
  343. * @return VOID
  344. */
  345. VOID Hv_Drv_PQ_KspiHardCrcEn(UCHAR8 ucHardCrcEn);
  346. /**
  347. * @brief Kspi software mode enable
  348. * @param[in] ucSwModeEn enable of software mode
  349. * @return VOID
  350. */
  351. VOID Hv_Drv_PQ_KspiSwModeEn(UCHAR8 ucSwModeEn);
  352. /**
  353. * @brief Kspi enable
  354. * @param[in] ucKspiEn enable kspi
  355. * @return VOID
  356. */
  357. VOID Hv_Drv_PQ_KspiEn(UCHAR8 ucKspiEn);
  358. /**
  359. * @brief HDR Init.
  360. * @param[in] puiHdrAddr1:address of ldc init bin;
  361. * @param[in] ucHdrIdx:channel of HDR;
  362. * @return VOID
  363. */
  364. VOID Hv_Drv_PQ_HdrInit(const UINT32 *puiHdrAddr1, UCHAR8 ucHdrIdx);
  365. /**
  366. * @brief Get HDR Enable.
  367. * @param[in] ucCh:channel of HDR;
  368. * @return Hdr En Status
  369. */
  370. UCHAR8 Hv_Drv_PQ_GetHDREnable(UCHAR8 ucCh);
  371. /**
  372. * @brief HDR Enable.
  373. * @param[in] ucCh:channel of HDR;
  374. * @param[in] ucHDREn:status of HDR enable;
  375. * @return VOID
  376. */
  377. VOID Hv_Drv_PQ_HDREnable(UCHAR8 ucCh, UCHAR8 ucHDREn);
  378. /**
  379. * @brief set HDR mode.
  380. * @param[in] ucCh:channel of HDR;
  381. * @param[in] ucHdrModel:HDR mode;
  382. * @param[in] HDRParam* pstHdrParam
  383. * @return VOID
  384. */
  385. VOID Hv_Drv_PQ_SetHdrMode(UCHAR8 ucCh, UCHAR8 ucHdrModel, HDRParam* pstHdrParam);
  386. /**
  387. * @brief HDR dma Enable.
  388. * @param[in] ucCh:channel of HDR;
  389. * @param[in] ucHDRVDMEn:status of HDR dma enable;
  390. * @return VOID
  391. */
  392. VOID Hv_Drv_PQ_HDRVdmEnable(UCHAR8 ucCh, UCHAR8 ucHDRVDMEn);
  393. /**
  394. * @brief set HDR mode.
  395. * @param[in] ucPstX:position x;
  396. * @param[in] ucPstY:position x;
  397. * @param[in] pucRed:red info;
  398. * @param[in] pucGreen:green info;
  399. * @param[in] pucBlue:blue info;
  400. * @return VOID
  401. */
  402. VOID Hv_Drv_PQ_GetBlkAvg(USHORT16 usPstX, USHORT16 usPstY, UCHAR8* puiRed,UCHAR8* puiGreen, UCHAR8* puiBlue);
  403. /**
  404. * @brief wcg Init.
  405. * @param[in] puiWcgAddr:address of wcg init bin;
  406. * @param[in] uiLen:length of wcg init bin;
  407. * @return VOID
  408. */
  409. VOID Hv_Drv_PQ_WcgInit(const UINT32 *puiWcgAddr, UINT32 uiLen);
  410. /**
  411. * @brief wcg Lut Init.
  412. * @param[in] puiGmiAddr:default address of gmi lut;
  413. * @param[in] puiRgbAddr:current address of rgb lut;
  414. * @param[in] puiGmdAddr:default address of gmd lut;
  415. * @return VOID
  416. */
  417. VOID Hv_Drv_PQ_WcgLutInit(const UINT32 *puiGmiAddr, const UINT32 *puiRgbAddr, const UINT32 *puiGmdAddr);
  418. /**
  419. * @brief wcg Enable.
  420. * @param[in] ucWcgEn:status of wcg enable;
  421. * @return VOID
  422. */
  423. VOID Hv_Drv_PQ_WcgEnable(UCHAR8 ucWcgEn);
  424. /**
  425. * @brief WCG dma Enable.
  426. * @param[in] ucWCGVDMEn:status of ldc dma enable;
  427. * @return VOID
  428. */
  429. VOID Hv_Drv_PQ_WcgVdmEnable(UCHAR8 ucWCGVDMEn);
  430. /**
  431. * @brief update WCG rgb lut.
  432. * @param[in] ucWCGVDMEn:status of ldc dma enable;
  433. * @return VOID
  434. */
  435. VOID Hv_Drv_PQ_WCGUpdateRgbLut(VOID);
  436. /**
  437. * @brief set gamut.
  438. * @param[in] puiGamutAddr:address of gamut;
  439. * @param[in] ucGamut:id of gamut;
  440. * @return VOID
  441. */
  442. VOID Hv_Drv_PQ_SetGamut(const UINT32 *puiGamutAddr, UCHAR8 ucGamut);
  443. /**
  444. * @brief setting Gamut in factory mode
  445. * @param[in] stGamut paras of Gamut
  446. * @return VOID
  447. */
  448. VOID Hv_Drv_PQ_SetGamutFac(GamutSet *stGamut);
  449. /**
  450. * @brief setting OSD native Gamut
  451. * @param[in] None
  452. * @return VOID
  453. */
  454. VOID Hv_Drv_PQ_SetOsdGamutNative();
  455. /**
  456. * @brief setting OSD native Gamut
  457. * @param[in] None
  458. * @return VOID
  459. */
  460. VOID Hv_Drv_PQ_SetGamutNative();
  461. /**
  462. * @brief setting native Gamut
  463. * @param[in] None
  464. * @return VOID
  465. */
  466. VOID Hv_Drv_SetGamutEnable(VOID);
  467. /**
  468. * @brief Enable WCG cm func.
  469. * @param[in] None;
  470. * @return None.
  471. */
  472. VOID Hv_Drv_SetWCGLutEnable(VOID);
  473. /**
  474. * @brief Gamut settting
  475. * @param[in] psGamut paras of Gamut
  476. * @return None
  477. */
  478. VOID Hv_Drv_SetGamutParam(const GamutSet *psGamut);
  479. /**
  480. * @brief Gamut offset settting
  481. * @param[in] psGamut paras of Gamut
  482. * @return None
  483. */
  484. VOID Hv_Drv_PQ_SetGamutOffset(const GamutOffset *pstOffset);
  485. /**
  486. * @brief load wcg rgb Lut.
  487. * @param[in] puiRgbAddr:address of wcg rgb lut;
  488. * @return VOID
  489. */
  490. VOID Hv_Drv_LoadWCGLUT(const UINT32 *puiRgbAddr);
  491. /**
  492. * @brief CSC Init.
  493. * @param[in] puiCscAddr:address of Csc Init bin;
  494. * @param[in] uiLen:address of Init bin;
  495. * @return VOID
  496. */
  497. VOID Hv_Drv_PQ_CscInit(const UINT32 *puiCscAddr, UINT32 uiLen);
  498. /**
  499. * @brief CSC config address.
  500. * @param[in] puiMainCscHdb:address of Csc main config;
  501. * @param[in] puiSubCscHdb:address of Csc sub config;
  502. * @return VOID
  503. */
  504. VOID Hv_Drv_PQ_CscConfigAddr(const UINT32 *puiMainCscHdb, const UINT32 *puiSubCscHdb);
  505. /**
  506. * @brief Contrast set
  507. * @param[in] ucCh channel id
  508. * @param[in] uiContrast:value of contrast
  509. * @return VOID
  510. */
  511. VOID Hv_Drv_PQ_SetContrast(UCHAR8 ucCh, UINT32 uiContrast);
  512. /**
  513. * @brief RGB Gain settting
  514. * @param[in] ucCh channel id
  515. * @param[in] usRed value of R Gain
  516. * @param[in] usGreen value of G Gain
  517. * @param[in] usBlue value of B Gain
  518. * @return VOID
  519. */
  520. VOID Hv_Drv_PQ_SetRGBGain(UCHAR8 ucCh, USHORT16 usRed, USHORT16 usGreen, USHORT16 usBlue);
  521. /**
  522. * @brief RGB offset settting
  523. * @param[in] ucCh channel id
  524. * @param[in] usRed value of R offset
  525. * @param[in] usGreen value of G offset
  526. * @param[in] usBlue value of B offset
  527. * @return VOID
  528. */
  529. VOID Hv_Drv_PQ_SetRGBOffset(UCHAR8 ucCh, USHORT16 usRed, USHORT16 usGreen, USHORT16 usBlue);
  530. /**
  531. * @brief Black Level set
  532. * @param[in] ucCh channel id
  533. * @param[in] usBlackLevel value of BlackLevel
  534. * @return VOID
  535. */
  536. VOID Hv_Drv_PQ_SetBlackLevel(UCHAR8 ucCh, USHORT16 usBlackLevel);
  537. /**
  538. * @brief Saturation set
  539. * @param[in] ucCh channel id
  540. * @param[in] ucSaturation value of ucSaturation
  541. * @return VOID
  542. */
  543. VOID Hv_Drv_PQ_SetSaturation(UCHAR8 ucCh, UCHAR8 ucSaturation);
  544. /**
  545. * @brief Hue set
  546. * @param[in] ucCh channel id
  547. * @param[in] ucHue value of ucHue
  548. * @return VOID
  549. */
  550. VOID Hv_Drv_PQ_SetHue(UCHAR8 ucCh, UCHAR8 ucHue);
  551. /**
  552. * @brief BrightRange set
  553. * @param[in] ucCh channel id
  554. * @param[in] enRange value of BrightRange
  555. * @return VOID
  556. */
  557. VOID Hv_Drv_PQ_SetBrightRange(UCHAR8 ucCh, UCHAR8 ucRange);
  558. /**
  559. * @brief ColorSpace set
  560. * @param[in] ucCh channel id
  561. * @param[in] enColorSpace value of colorSpace
  562. * @return VOID
  563. */
  564. VOID Hv_Drv_PQ_SetColorSpace(UCHAR8 ucCh, UCHAR8 ucColorSpace);
  565. /**
  566. * @brief dither Init.
  567. * @param[in] puiDitherAddr:address of dither init bin;
  568. * @param[in] uiLen:length of puiDitherAddr;
  569. * @return VOID
  570. */
  571. VOID Hv_Drv_PQ_DitherInit(const UINT32 *puiDitherAddr, UINT32 uiLen);
  572. /**
  573. * @brief scaler Lut Init.
  574. * @param[in] puiScalerAddr:address of scaler lut;
  575. * @return VOID
  576. */
  577. VOID Hv_Drv_PQ_ScalerUpLutInit(const UINT32 *puiScalerAddr);
  578. /**
  579. * @brief Set different OSD Gamma
  580. * @param[in] uiIndex: index of Gamma lut to be set
  581. * @return VOID
  582. */
  583. VOID Hv_Drv_PQ_SetOsdGammaIndex(UCHAR8 ucIndex);
  584. /**
  585. * @brief enable dynamic backlight
  586. * @param[in] ucEn: enable status
  587. * @return VOID
  588. */
  589. VOID Hv_Drv_PQ_DynamicBLEn(UCHAR8 ucEn);
  590. /**
  591. * @brief get dynamic backlight status
  592. * @param[in] None
  593. * @return enable status.
  594. */
  595. UCHAR8 Hv_Drv_PQ_GetDynamicBLEn();
  596. /**
  597. * @brief set PQ dma latch mode (active when vsync isr)
  598. * @param[in] None
  599. * @return None.
  600. */
  601. VOID Hv_Drv_DpuPQ_DmaSetlatch(VOID);
  602. /**
  603. * @brief PQ dma workaround
  604. * @param[in] None
  605. * @return None.
  606. */
  607. VOID Hv_Drv_DpuPQ_DmaWorkaround(VOID);
  608. /**
  609. * @brief PQ table dma enable
  610. * @param[in] bEn enable
  611. * @return None.
  612. */
  613. VOID Hv_Drv_DpuPQ_DmaTableEnable(BOOL bEn);
  614. /**
  615. * @brief PQ dma enable(implementation)
  616. * @param[in] bEn enable
  617. * @return None.
  618. */
  619. VOID Hv_Drv_DpuPQ_DmaEnable(UCHAR8 ucEn);
  620. /**
  621. * @brief get HDR pattern information
  622. * @param[in] None
  623. * @return info of HDR pattern.
  624. */
  625. UCHAR8 Hv_Drv_DpuPQ_GetPattern();
  626. /**
  627. * @brief HDR pattern process
  628. * @param[in] None
  629. * @return None.
  630. */
  631. VOID Hv_Drv_DpuPQ_PatternDetProc();
  632. /**
  633. * @brief HDR pattern detect enable
  634. * @param[in] ucEn value of enable
  635. * @return VOID
  636. */
  637. VOID Hv_Drv_DpuPQ_PatternDetEn(UCHAR8 ucEn);
  638. /**
  639. * @brief ambilight init
  640. * @param[in] None
  641. * @return None.
  642. */
  643. VOID Hv_Drv_PQ_AmBilight_Init(VOID);
  644. /**
  645. * @brief ambilight enable
  646. * @param[in] bEnable value of enable
  647. * @return None.
  648. */
  649. VOID Hv_Drv_PQ_AmBilight_Enable(BOOL bEnable);
  650. /**
  651. * @brief ambilight seting cell information
  652. * @param[in] ucHNum horizon num
  653. * @param[in] ucVNum vertical num
  654. * @param[in] pusHSizeTbl horizon table
  655. * @param[in] pusVSizeTbl vertical table
  656. * @return None.
  657. */
  658. VOID Hv_Drv_PQ_AmBilight_SetCells(UCHAR8 ucHNum, UCHAR8 ucVNum, USHORT16 *pusHSizeTbl, USHORT16 *pusVSizeTbl);
  659. /**
  660. * @brief ambilight dma enable
  661. * @param[in] bEnable value of dma enable
  662. * @return None.
  663. */
  664. VOID Hv_Drv_PQ_AmBilight_DMAEnable(BOOL bEnable);
  665. /**
  666. * @brief setting ambilight dma address
  667. * @param[in] pucAddr address of dma
  668. * @return None.
  669. */
  670. VOID Hv_Drv_PQ_AmBilight_DMAWriterAddr(UINT32 *pucAddr);
  671. /**
  672. * @brief setting ambilight dma parameters
  673. * @param[in] ucHNum horizon number
  674. * @param[in] ucHNum vertical number
  675. * @param[in] ucBurstLen dma burst length
  676. * @return None.
  677. */
  678. VOID Hv_Drv_PQ_AmBilight_DMAWriteSetting(UCHAR8 ucHNum, UCHAR8 ucVNum, UCHAR8 ucBurstLen);
  679. /**
  680. * @brief setting brightness value
  681. * @param[in] pBrightnessConfigValue value of brightness
  682. * @return None.
  683. */
  684. VOID Hv_Drv_SetBrightnessConfigValue(const BrightnessOsdSet *pBrightnessConfigValue);
  685. /**
  686. * @brief CM64(for CM debug by tool)setting sat.
  687. * @param[in] ucIndex:index of sat(0-63);
  688. * @param[in] ucOffset:value of sat setting;
  689. * @return VOID
  690. */
  691. VOID Hv_Drv_PQ_CMFineTune_Sat(UCHAR8 ucIndex, UCHAR8 ucOffset);
  692. /**
  693. * @brief CM64(for CM debug by tool)setting hue.
  694. * @param[in] ucIndex:index of hue(0-63);
  695. * @param[in] ucOffset:value of hue setting;
  696. * @return VOID
  697. */
  698. VOID Hv_Drv_PQ_CMFineTune_Hue(UCHAR8 ucIndex, UCHAR8 ucOffset);
  699. /**
  700. * @brief CM64(for CM debug by tool)setting lum.
  701. * @param[in] ucIndex:index of lum(0-63);
  702. * @param[in] ucOffset:value of lum setting;
  703. * @return VOID
  704. */
  705. VOID Hv_Drv_PQ_CMFineTune_Lum(UCHAR8 ucIndex, UCHAR8 ucOffset);
  706. /**
  707. * @brief CM change Lut
  708. * @param[in] ucIndex:id of CM lut
  709. * @return VOID
  710. */
  711. VOID Hv_Drv_PQ_CMChangeLut(UINT32 ucLutAddr);
  712. /**
  713. * @brief inp pattern En
  714. * @param[in] ucEn
  715. * @return VOID
  716. */
  717. VOID Hv_Drv_PQ_SetInpPattEn(UCHAR8 ucEn);
  718. /**
  719. * @brief Inp pattern Color
  720. * @param[in] USHORT16 usRed, USHORT16 usGreen, USHORT16 usBlue
  721. * @return VOID
  722. */
  723. VOID Hv_Drv_PQ_SetInpPatColor(USHORT16 usRed, USHORT16 usGreen, USHORT16 usBlue);
  724. /**
  725. * @brief Kspi send data in software mode
  726. * @param[in] ucCh channel of spi
  727. * @param[in] puiData point of data
  728. * @param[in] uiLength length of 32bit data
  729. * @return None.
  730. */
  731. VOID Hv_Drv_PQ_KspiSwSendData(UCHAR8 ucCh, UINT32* puiData, UINT32 uiLength);
  732. /**
  733. * @brief Kspi send data init before copying data to sram
  734. * @param[in] None
  735. * @return None.
  736. */
  737. VOID Hv_Drv_PQ_KspiSwSendDataInit(VOID);
  738. /**
  739. * @brief start Kspi sendingin software mode
  740. * @param[in] none
  741. * @return None.
  742. */
  743. VOID Hv_Drv_PQ_KspiSwSendDataStart(VOID);
  744. /**
  745. * @brief Set ldc spf curve
  746. * @param[in] ucY0 value of y0
  747. * @param[in] ucY1 value of y1
  748. * @return None.
  749. */
  750. VOID Hv_Drv_PQ_LDC_SetCurveY(UCHAR8 ucY0, UCHAR8 ucY1);
  751. /**
  752. * @brief Hdr ToneMapping Init
  753. * @param[in] ucMapType:Map type
  754. * @param[in] uiMapLutAddr:Mapping lut Addr
  755. * @return None.
  756. */
  757. VOID Hv_Drv_PQ_HdrToneMappingInit(UCHAR8 ucMapType, UINT32 uiMapLutAddr);
  758. VOID Hv_Drv_PQ_HdrAuthProcess(const HDRParam* pstHdrParam);
  759. VOID Hv_Drv_PQ_PatDetInit(USHORT16 ** puiData, UCHAR8 ucPatNum, UCHAR8 ucPatW, UCHAR8 ucPatH);
  760. VOID Hv_Drv_PQ_GammaBypass(BOOL bEn);
  761. VOID Hv_Drv_PQ_LDCPrintPattern();
  762. VOID Hv_Drv_PQ_ColorBypass(BOOL bEn);
  763. VOID Hv_Drv_PQ_HDREnableFlag(UCHAR8 ucCh, UCHAR8 ucHDREn);
  764. VOID Hv_Drv_PQ_SetHSRXCursorEnable(BOOL bEn);
  765. VOID Hv_Drv_PQ_SetHSRXCursorWidth(UCHAR8 ucHwidth, UCHAR8 ucVwidth);
  766. VOID Hv_Drv_PQ_SetHSRXCursorPos(USHORT16 usHcnt, USHORT16 usVcnt);
  767. VOID Hv_Drv_PQ_GetHSRXCursorBdColor(UCHAR8 *pucR, UCHAR8 *pucG, UCHAR8 *pucB);
  768. VOID Hv_Drv_PQ_SetSrpCursorEnable(BOOL bEn);
  769. VOID Hv_Drv_PQ_SetSrpCursorWidth(UCHAR8 ucHwidth, UCHAR8 ucVwidth);
  770. VOID Hv_Drv_PQ_SetSrpCursorPos(USHORT16 usHcnt, USHORT16 usVcnt);
  771. VOID Hv_Drv_PQ_GetSrpCursorColor(UCHAR8 *pucR, UCHAR8 *pucG, UCHAR8 *pucB);
  772. VOID Hv_Drv_PQ_SetLdgCursorEnable(BOOL bEn);
  773. VOID Hv_Drv_PQ_SetLdgCursorWidth(UCHAR8 ucHwidth, UCHAR8 ucVwidth);
  774. VOID Hv_Drv_PQ_SetLdgCursorPos(USHORT16 usHcnt, USHORT16 usVcnt);
  775. VOID Hv_Drv_PQ_GetLdgCursorColor(UCHAR8 *pucR, UCHAR8 *pucG, UCHAR8 *pucB);
  776. VOID Hv_Drv_PQ_SetDispCtrlPreCursorEnable(BOOL bEn);
  777. VOID Hv_Drv_PQ_SetDispCtrlPreCursorWidth(UCHAR8 ucHwidth, UCHAR8 ucVwidth);
  778. VOID Hv_Drv_PQ_SetDispCtrlPreCursorPos(USHORT16 usHcnt, USHORT16 usVcnt);
  779. VOID Hv_Drv_PQ_GetDispCtrlPreCursorBdColor(UCHAR8 *pucR, UCHAR8 *pucG, UCHAR8 *pucB);
  780. VOID Hv_Drv_PQ_SetTXPostCursorEnable(BOOL bEn);
  781. VOID Hv_Drv_PQ_SetTXPostCursorWidth(UCHAR8 ucHwidth, UCHAR8 ucVwidth);
  782. VOID Hv_Drv_PQ_SetTXPostCursorPos(USHORT16 usHcnt, USHORT16 usVcnt);
  783. VOID Hv_Drv_PQ_GetTXPostCursorFdColor(UCHAR8 *pucR, UCHAR8 *pucG, UCHAR8 *pucB);
  784. VOID Hv_Drv_PQ_GetTXPostCursorBdColor(UCHAR8 *pucR, UCHAR8 *pucG, UCHAR8 *pucB);
  785. USHORT16 Hv_Drv_PQ_GetBlackLevel(UCHAR8 ucCh);
  786. USHORT16 Hv_Drv_PQ_GetContrast(UCHAR8 ucCh);
  787. VOID Hv_Drv_PQ_SetSharpnessReverse(UCHAR8 ucSharpness);
  788. VOID Hv_Drv_PQ_SetHdrGmiLut(UCHAR8 ucHdrIdx, UINT32 uiHdrGmiLutAddr);
  789. VOID Hv_Drv_PQ_LDCPrintSumDiff();
  790. VOID Hv_Drv_PQ_LDCSetPatThr(UINT32 uiThr);
  791. VOID Hv_Drv_PQ_ReconfigPQSize(const VideoConfigParams* pstVideoConfigParams);
  792. VOID Hv_Drv_PQ_DdcciGammaPrepare();
  793. VOID Hv_Drv_PQ_DdcciGammaFinish();
  794. VOID Hv_Drv_PQ_DdcciColorSpacePrepare();
  795. VOID Hv_Drv_PQ_DdcciWcgEnable(BOOL bEn);
  796. VOID Hv_Drv_PQ_DdcciWriteColorSpaceData(USHORT16* pusData);
  797. VOID Hv_Drv_PQ_DdcciColorSpaceFinish();
  798. VOID Hv_Drv_PQ_DdcciColorTempPrepare();
  799. VOID Hv_Drv_PQ_DdcciColorTempFinish();
  800. VOID Hv_Drv_PQ_DdcciPatternPrepare(VOID);
  801. VOID Hv_Drv_PQ_DdcciPatternFinish(VOID);
  802. VOID Hv_Drv_PQ_DdcciTrainingStart(VOID);
  803. VOID Hv_Drv_PQ_DdcciSetGamma(BOOL bEn);
  804. UCHAR8 Hv_Drv_PQ_DdcciGetGamma();
  805. VOID Hv_Drv_PQ_DdcciSetWcg(UCHAR8 ucData);
  806. UCHAR8 Hv_Drv_PQ_DdcciGetWcg();
  807. VOID Hv_Drv_PQ_DdcciSetLdg(UCHAR8 ucData);
  808. UCHAR8 Hv_Drv_PQ_DdcciGetLdg();
  809. UCHAR8 Hv_Drv_PQ_DdcciGetHdr();
  810. VOID Hv_Drv_PQ_DdcciSetHdr(UCHAR8 ucData);
  811. VOID Hv_Drv_PQ_MhiInit();
  812. VOID Hv_Drv_MhiSetPos(USHORT16 usStartX, USHORT16 usStartY, USHORT16 usWidth, USHORT16 usHeight);
  813. UINT32* Hv_Drv_PQ_GetMhi16();
  814. VOID Hv_Drv_PQ_PWM(VOID);
  815. #endif