lcd_drv.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512
  1. /* Copyright Statement:
  2. *
  3. * This software/firmware and related documentation ("MediaTek Software") are
  4. * protected under relevant copyright laws. The information contained herein
  5. * is confidential and proprietary to MediaTek Inc. and/or its licensors.
  6. * Without the prior written permission of MediaTek inc. and/or its licensors,
  7. * any reproduction, modification, use or disclosure of MediaTek Software,
  8. * and information contained herein, in whole or in part, shall be strictly prohibited.
  9. */
  10. /* MediaTek Inc. (C) 2010. All rights reserved.
  11. *
  12. * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  13. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  14. * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
  15. * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  16. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  17. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  18. * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  19. * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  20. * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
  21. * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
  22. * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
  23. * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
  24. * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  25. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
  26. * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  27. * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  28. * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
  29. * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  30. *
  31. * The following software/firmware and/or related documentation ("MediaTek Software")
  32. * have been modified by MediaTek Inc. All revisions are subject to any receiver's
  33. * applicable license agreements with MediaTek Inc.
  34. */
  35. /*****************************************************************************
  36. * Copyright Statement:
  37. * --------------------
  38. * This software is protected by Copyright and the information contained
  39. * herein is confidential. The software may not be copied and the information
  40. * contained herein may not be used or disclosed except with the written
  41. * permission of MediaTek Inc. (C) 2008
  42. *
  43. * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  44. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  45. * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  46. * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  47. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  48. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  49. * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  50. * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  51. * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  52. * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  53. * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  54. * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  55. *
  56. * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  57. * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  58. * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  59. * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  60. * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  61. *
  62. * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  63. * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  64. * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  65. * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  66. * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  67. *
  68. *****************************************************************************/
  69. #ifndef __LCD_DRV_H__
  70. #define __LCD_DRV_H__
  71. #include "disp_drv.h"
  72. #include "lcm_drv.h"
  73. #ifdef __cplusplus
  74. extern "C" {
  75. #endif
  76. // ---------------------------------------------------------------------------
  77. #define LCD_CHECK_RET(expr) \
  78. do { \
  79. LCD_STATUS ret = (expr); \
  80. ASSERT(LCD_STATUS_OK == ret); \
  81. } while (0)
  82. // ---------------------------------------------------------------------------
  83. typedef unsigned int S2_8;
  84. // ---------------------------------------------------------------------------
  85. typedef enum {
  86. LCD_STATUS_OK = 0,
  87. LCD_STATUS_ERROR,
  88. } LCD_STATUS;
  89. typedef enum {
  90. LCD_STATE_IDLE = 0,
  91. LCD_STATE_BUSY,
  92. LCD_STATE_POWER_OFF,
  93. } LCD_STATE;
  94. typedef enum {
  95. LCD_IF_PARALLEL_0 = 0,
  96. LCD_IF_PARALLEL_1 = 1,
  97. LCD_IF_PARALLEL_2 = 2,
  98. LCD_IF_SERIAL_0 = 3,
  99. LCD_IF_SERIAL_1 = 4,
  100. LCD_IF_ALL = 0xFF,
  101. } LCD_IF_ID;
  102. typedef enum {
  103. LCD_IF_PARALLEL_8BITS = 0,
  104. LCD_IF_PARALLEL_9BITS = 1,
  105. LCD_IF_PARALLEL_16BITS = 2,
  106. LCD_IF_PARALLEL_18BITS = 3,
  107. LCD_IF_PARALLEL_24BITS = 4,
  108. } LCD_IF_PARALLEL_BITS;
  109. typedef enum {
  110. LCD_IF_SERIAL_8BITS = 0,
  111. LCD_IF_SERIAL_9BITS = 1,
  112. LCD_IF_SERIAL_16BITS = 2,
  113. LCD_IF_SERIAL_18BITS = 3,
  114. LCD_IF_SERIAL_24BITS = 4,
  115. LCD_IF_SERIAL_32BITS = 5,
  116. } LCD_IF_SERIAL_BITS;
  117. typedef enum {
  118. LCD_IF_PARALLEL_CLK_DIV_1 = 0,
  119. LCD_IF_PARALLEL_CLK_DIV_2,
  120. LCD_IF_PARALLEL_CLK_DIV_4,
  121. } LCD_IF_PARALLEL_CLK_DIV;
  122. /*
  123. typedef enum
  124. {
  125. LCD_IF_SERIAL_CLK_DIV_1 = 0,
  126. LCD_IF_SERIAL_CLK_DIV_2,
  127. LCD_IF_SERIAL_CLK_DIV_4,
  128. LCD_IF_SERIAL_CLK_DIV_8,
  129. LCD_IF_SERIAL_CLK_DIV_16,
  130. } LCD_IF_SERIAL_CLK_DIV;
  131. */
  132. typedef enum {
  133. LCD_IF_A0_LOW = 0,
  134. LCD_IF_A0_HIGH = 1,
  135. } LCD_IF_A0_MODE;
  136. typedef enum {
  137. LCD_IF_MCU_WRITE_8BIT = 8,
  138. LCD_IF_MCU_WRITE_16BIT = 16,
  139. LCD_IF_MCU_WRITE_32BIT = 32,
  140. } LCD_IF_MCU_WRITE_BITS;
  141. typedef enum {
  142. LCD_IF_FORMAT_RGB332 = 0,
  143. LCD_IF_FORMAT_RGB444 = 1,
  144. LCD_IF_FORMAT_RGB565 = 2,
  145. LCD_IF_FORMAT_RGB666 = 3,
  146. LCD_IF_FORMAT_RGB888 = 4,
  147. } LCD_IF_FORMAT;
  148. typedef enum {
  149. LCD_IF_WIDTH_8_BITS = 0,
  150. LCD_IF_WIDTH_9_BITS = 2,
  151. LCD_IF_WIDTH_16_BITS = 1,
  152. LCD_IF_WIDTH_18_BITS = 3,
  153. LCD_IF_WIDTH_24_BITS = 4,
  154. LCD_IF_WIDTH_32_BITS = 5,
  155. } LCD_IF_WIDTH;
  156. /*
  157. typedef enum
  158. {
  159. LCD_CMDQ_0 = 0,
  160. LCD_CMDQ_1 = 1,
  161. } LCD_CMDQ_ID;
  162. */
  163. typedef enum {
  164. LCD_FB_0 = 0,
  165. LCD_FB_1 = 1,
  166. LCD_FB_2 = 2,
  167. LCD_FB_NUM,
  168. } LCD_FB_ID;
  169. typedef enum {
  170. LCD_FB_FORMAT_RGB565 = 0,
  171. LCD_FB_FORMAT_RGB888 = 1,
  172. LCD_FB_FORMAT_ARGB8888 = 2,
  173. LCD_FB_FORMAT_NUM,
  174. } LCD_FB_FORMAT;
  175. typedef enum {
  176. LCD_OUTPUT_TO_LCM = (1 << 0),
  177. LCD_OUTPUT_TO_MEM = (1 << 1),
  178. LCD_OUTPUT_TO_TVROT = (1 << 2),
  179. } LCD_OUTPUT_MODE;
  180. typedef enum {
  181. LCD_LAYER_0 = 0,
  182. LCD_LAYER_1 = 1,
  183. LCD_LAYER_2 = 2,
  184. LCD_LAYER_3 = 3,
  185. LCD_LAYER_NUM,
  186. LCD_LAYER_ALL = 0xFFFFFFFF,
  187. } LCD_LAYER_ID;
  188. /* Layer Designation */
  189. #define ASSERT_LAYER (LCD_LAYER_3)
  190. #define FB_LAYER (LCD_LAYER_3)
  191. typedef enum {
  192. LCD_LAYER_FORMAT_RGB888 = 0,
  193. LCD_LAYER_FORMAT_RGB565 = 1,
  194. LCD_LAYER_FORMAT_ARGB8888 = 2,
  195. LCD_LAYER_FORMAT_PARGB8888 = 3,
  196. LCD_LAYER_FORMAT_xRGB8888 = 4,
  197. LCD_LAYER_FORMAT_YUYV422 = 8,
  198. LCD_LAYER_FORMAT_UYVY = 9,
  199. LCD_LAYER_FORMAT_YVYU = 10,
  200. LCD_LAYER_FORMAT_VYUY = 11,
  201. LCD_LAYER_FORMAT_YUV444 = 15,
  202. LCD_LAYER_FORMAT_NUM,
  203. } LCD_LAYER_FORMAT;
  204. typedef enum {
  205. LCD_LAYER_ROTATE_NONE = 0,
  206. LCD_LAYER_ROTATE_0 = 0,
  207. LCD_LAYER_ROTATE_90 = 1,
  208. LCD_LAYER_ROTATE_180 = 2,
  209. LCD_LAYER_ROTATE_270 = 3,
  210. LCD_LAYER_ROTATE_MIRROR_0 = 4,
  211. LCD_LAYER_ROTATE_MIRROR_90 = 5,
  212. LCD_LAYER_ROTATE_MIRROR_180 = 6,
  213. LCD_LAYER_ROTATE_MIRROR_270 = 7,
  214. } LCD_LAYER_ROTATION;
  215. typedef enum {
  216. LCD_SW_TRIGGER = 0,
  217. LCD_HW_TRIGGER_BUFFERING,
  218. LCD_HW_TRIGGER_DIRECT_COUPLE,
  219. } LCD_LAYER_TRIGGER_MODE;
  220. typedef enum {
  221. LCD_HW_TRIGGER_SRC_IRT1 = 0,
  222. LCD_HW_TRIGGER_SRC_IBW1 = 1,
  223. LCD_HW_TRIGGER_SRC_IBW2 = 3,
  224. } LCD_HW_TRIGGER_SRC;
  225. typedef enum {
  226. LCD_TE_MODE_VSYNC_ONLY = 0,
  227. LCD_TE_MODE_VSYNC_OR_HSYNC = 1,
  228. } LCD_TE_MODE;
  229. typedef enum {
  230. LCD_TE_VS_WIDTH_CNT_DIV_8 = 0,
  231. LCD_TE_VS_WIDTH_CNT_DIV_16 = 1,
  232. LCD_TE_VS_WIDTH_CNT_DIV_32 = 2,
  233. LCD_TE_VS_WIDTH_CNT_DIV_64 = 3,
  234. } LCD_TE_VS_WIDTH_CNT_DIV;
  235. typedef enum {
  236. LCD_IF_FMT_COLOR_ORDER_RGB = 0,
  237. LCD_IF_FMT_COLOR_ORDER_BGR = 1,
  238. } LCD_IF_FMT_COLOR_ORDER;
  239. typedef enum {
  240. LCD_IF_FMT_TRANS_SEQ_MSB_FIRST = 0,
  241. LCD_IF_FMT_TRANS_SEQ_LSB_FIRST = 1,
  242. } LCD_IF_FMT_TRANS_SEQ;
  243. typedef enum {
  244. LCD_IF_FMT_PADDING_ON_LSB = 0,
  245. LCD_IF_FMT_PADDING_ON_MSB = 1,
  246. } LCD_IF_FMT_PADDING;
  247. typedef enum {
  248. LCD_DSI_IF_FMT_COLOR_ORDER_RGB = 0,
  249. LCD_DSI_IF_FMT_COLOR_ORDER_BGR = 1,
  250. } LCD_DSI_IF_FMT_COLOR_ORDER;
  251. typedef enum {
  252. LCD_DSI_IF_FMT_TRANS_SEQ_MSB_FIRST = 0,
  253. LCD_DSI_IF_FMT_TRANS_SEQ_LSB_FIRST = 1,
  254. } LCD_DSI_IF_FMT_TRANS_SEQ;
  255. typedef enum {
  256. LCD_DSI_IF_FMT_PADDING_ON_LSB = 0,
  257. LCD_DSI_IF_FMT_PADDING_ON_MSB = 1,
  258. } LCD_DSI_IF_FMT_PADDING;
  259. typedef enum {
  260. LCD_DSI_IF_FORMAT_RGB565 = 0,
  261. LCD_DSI_IF_FORMAT_RGB666 = 1,
  262. LCD_DSI_IF_FORMAT_RGB888 = 2,
  263. } LCD_DSI_IF_FORMAT;
  264. // ---------------------------------------------------------------------------
  265. // Configurations
  266. LCD_STATUS LCD_Init(void);
  267. LCD_STATUS LCD_Deinit(void);
  268. LCD_STATUS LCD_Set_DrivingCurrent(LCM_PARAMS *lcm_params);
  269. LCD_STATUS LCD_PowerOn(void);
  270. LCD_STATUS LCD_PowerOff(void);
  271. LCD_STATUS LCD_M4UPowerOn(void);
  272. LCD_STATUS LCD_M4UPowerOff(void);
  273. LCD_STATUS LCD_WaitForNotBusy(void);
  274. LCD_STATUS LCD_EnableInterrupt(DISP_INTERRUPT_EVENTS eventID);
  275. LCD_STATUS LCD_SetInterruptCallback(void (*pCB)(DISP_INTERRUPT_EVENTS eventID));
  276. // LCD Controller Interface
  277. LCD_STATUS LCD_ConfigParallelIF(LCD_IF_ID id,
  278. LCD_IF_PARALLEL_BITS ifDataWidth,
  279. LCD_IF_PARALLEL_CLK_DIV clkDivisor,
  280. UINT32 writeSetup,
  281. UINT32 writeHold,
  282. UINT32 writeWait,
  283. UINT32 readSetup,
  284. UINT32 readHold,
  285. UINT32 readLatency,
  286. UINT32 waitPeriod,
  287. UINT32 chw);
  288. LCD_STATUS LCD_ConfigSerialIF(LCD_IF_ID id,
  289. LCD_IF_SERIAL_BITS bits,
  290. UINT32 three_wire,
  291. UINT32 sdi,
  292. BOOL first_pol,
  293. BOOL sck_def,
  294. UINT32 div2,
  295. UINT32 hw_cs,
  296. UINT32 css,
  297. UINT32 csh,
  298. UINT32 rd_1st,
  299. UINT32 rd_2nd,
  300. UINT32 wr_1st,
  301. UINT32 wr_2nd);
  302. LCD_STATUS LCD_ConfigIfFormat(LCD_IF_FMT_COLOR_ORDER order,
  303. LCD_IF_FMT_TRANS_SEQ transSeq,
  304. LCD_IF_FMT_PADDING padding,
  305. LCD_IF_FORMAT format,
  306. LCD_IF_WIDTH busWidth);
  307. LCD_STATUS LCD_SetResetSignal(BOOL high);
  308. LCD_STATUS LCD_ConfigDSIIfFormat(LCD_DSI_IF_FMT_COLOR_ORDER order,
  309. LCD_DSI_IF_FMT_TRANS_SEQ transSeq,
  310. LCD_DSI_IF_FMT_PADDING padding,
  311. LCD_DSI_IF_FORMAT format,
  312. UINT32 packet_size,
  313. BOOL DC_DSI);
  314. // LCD Command Queue
  315. LCD_STATUS LCD_CmdQueueEnable(BOOL enabled);
  316. LCD_STATUS LCD_CmdQueueWrite(UINT32 *cmds, UINT32 cmdCount);
  317. // Layer Configurations
  318. LCD_STATUS LCD_LayerEnable(LCD_LAYER_ID id, BOOL enable);
  319. BOOL LCD_IsLayerEnable(LCD_LAYER_ID id);
  320. LCD_STATUS LCD_LayerSetAddress(LCD_LAYER_ID id, UINT32 address);
  321. UINT32 LCD_LayerGetAddress(LCD_LAYER_ID id);
  322. LCD_STATUS LCD_LayerSetSize(LCD_LAYER_ID id, UINT32 width, UINT32 height);
  323. // 3D Layer Configurations
  324. LCD_STATUS LCD_Layer3D_Enable(LCD_LAYER_ID id, BOOL enable);
  325. LCD_STATUS LCD_Layer3D_R1st(LCD_LAYER_ID id, BOOL r_first);
  326. LCD_STATUS LCD_Layer3D_landscape(LCD_LAYER_ID id, BOOL landscape);
  327. LCD_STATUS LCD_LayerSet3D(LCD_LAYER_ID id, BOOL enable, BOOL r_first, BOOL landscape);
  328. BOOL LCD_Is3DEnabled(void);
  329. BOOL LCD_Is3DLandscapeMode(void);
  330. // MT6573 added
  331. LCD_STATUS LCD_LayerSetPitch(LCD_LAYER_ID id, UINT32 pitch);
  332. LCD_STATUS LCD_LayerSetOffset(LCD_LAYER_ID id, UINT32 x, UINT32 y);
  333. LCD_STATUS LCD_LayerSetWindowOffset(LCD_LAYER_ID id, UINT32 x, UINT32 y);
  334. LCD_STATUS LCD_LayerSetFormat(LCD_LAYER_ID id, LCD_LAYER_FORMAT format);
  335. LCD_STATUS LCD_LayerEnableByteSwap(LCD_LAYER_ID id, BOOL enable);
  336. LCD_STATUS LCD_LayerSetRotation(LCD_LAYER_ID id, LCD_LAYER_ROTATION rotation);
  337. LCD_STATUS LCD_LayerSetAlphaBlending(LCD_LAYER_ID id, BOOL enable, UINT8 alpha);
  338. LCD_STATUS LCD_LayerSetSourceColorKey(LCD_LAYER_ID id, BOOL enable, UINT32 colorKey);
  339. // HW Trigger Configurations
  340. LCD_STATUS LCD_LayerSetTriggerMode(LCD_LAYER_ID id, LCD_LAYER_TRIGGER_MODE mode);
  341. LCD_STATUS LCD_LayerSetHwTriggerSrc(LCD_LAYER_ID id, LCD_HW_TRIGGER_SRC src);
  342. LCD_STATUS LCD_EnableHwTrigger(BOOL enable);
  343. // ROI Window Configurations
  344. LCD_STATUS LCD_SetBackgroundColor(UINT32 bgColor);
  345. LCD_STATUS LCD_SetRoiWindow(UINT32 x, UINT32 y, UINT32 width, UINT32 height);
  346. // DSI Related Configurations
  347. LCD_STATUS LCD_EnableDCtoDsi(BOOL dc_dsi_en);
  348. // Output to Memory Configurations
  349. LCD_STATUS LCD_SetOutputMode(LCD_OUTPUT_MODE mode);
  350. LCD_STATUS LCD_WaitDPIIndication(BOOL enable);
  351. LCD_STATUS LCD_FBSetFormat(LCD_FB_FORMAT format);
  352. LCD_STATUS LCD_FBSetPitch(UINT32 pitchInByte);
  353. LCD_STATUS LCD_FBReset(void);
  354. LCD_STATUS LCD_FBEnable(LCD_FB_ID id, BOOL enable);
  355. LCD_STATUS LCD_FBSetAddress(LCD_FB_ID id, UINT32 address);
  356. LCD_STATUS LCD_FBSetStartCoord(UINT32 x, UINT32 y);
  357. // Color Matrix
  358. LCD_STATUS LCD_EnableColorMatrix(LCD_IF_ID id, BOOL enable);
  359. LCD_STATUS LCD_SetColorMatrix(const S2_8 mat[9]);
  360. // Tearing Control
  361. LCD_STATUS LCD_TE_Enable(BOOL enable);
  362. LCD_STATUS LCD_TE_SetMode(LCD_TE_MODE mode);
  363. LCD_STATUS LCD_TE_SetEdgePolarity(BOOL polarity);
  364. LCD_STATUS LCD_TE_ConfigVHSyncMode(UINT32 hsDelayCnt,
  365. UINT32 vsWidthCnt,
  366. LCD_TE_VS_WIDTH_CNT_DIV vsWidthCntDiv);
  367. // Operations
  368. LCD_STATUS LCD_SelectWriteIF(LCD_IF_ID id);
  369. LCD_STATUS LCD_WriteIF(LCD_IF_ID id, LCD_IF_A0_MODE a0, UINT32 value, LCD_IF_MCU_WRITE_BITS bits);
  370. LCD_STATUS LCD_ReadIF(LCD_IF_ID id, LCD_IF_A0_MODE a0, UINT32 *value, LCD_IF_MCU_WRITE_BITS bits);
  371. LCD_STATUS LCD_StartTransfer(BOOL blocking);
  372. // Retrieve Information
  373. LCD_STATE LCD_GetState(void);
  374. LCD_OUTPUT_MODE LCD_GetOutputMode(void);
  375. LCD_STATUS LCD_ConfigOVL(void);
  376. BOOL LCD_IsBusy(void);
  377. // Debug
  378. LCD_STATUS LCD_ConfigDither(int lrs, int lgs, int lbs, int dbr, int dbg, int dbb);
  379. LCD_STATUS LCD_LayerEnableDither(LCD_LAYER_ID id, UINT32 enable);
  380. LCD_STATUS LCD_SetOutputAlpha(unsigned int alpha);
  381. LCD_STATUS LCD_DumpRegisters(void);
  382. LCD_STATUS LCD_Capture_Framebuffer(unsigned int pvbuf, unsigned int bpp);
  383. LCD_STATUS LCD_Capture_Layerbuffer(unsigned int layer_id, unsigned int pvbuf, unsigned int bpp);
  384. LCD_STATUS LCD_Init_IO_pad(LCM_PARAMS *lcm_params);
  385. //FM De-sense
  386. LCD_STATUS LCD_FMDesense_Query(void);
  387. LCD_STATUS LCD_FM_Desense(LCD_IF_ID id, unsigned long freq);
  388. LCD_STATUS LCD_Get_Default_WriteCycle(LCD_IF_ID id, unsigned int *write_cycle);
  389. LCD_STATUS LCD_Get_Current_WriteCycle(LCD_IF_ID id, unsigned int *write_cycle);
  390. LCD_STATUS LCD_Change_WriteCycle(LCD_IF_ID id, unsigned int write_cycle);
  391. LCD_STATUS LCD_Reset_WriteCycle(LCD_IF_ID id);
  392. LCD_STATUS LCD_Get_VideoLayerSize(unsigned int id, unsigned int *width, unsigned int *height);
  393. LCD_STATUS LCD_Capture_Videobuffer(unsigned int pvbuf, unsigned int bpp, unsigned int video_rotation);
  394. LCD_STATUS LCD_InitM4U(void);
  395. LCD_STATUS LCD_AllocUIMva(unsigned int va, unsigned int *mva, unsigned int size);
  396. LCD_STATUS LCD_AllocOverlayMva(unsigned int va, unsigned int *mva, unsigned int size);
  397. LCD_STATUS LCD_DeallocMva(unsigned int va, unsigned int mva, unsigned int size);
  398. LCD_STATUS LCD_W2M_NeedLimiteSpeed(BOOL enable);
  399. LCD_STATUS LCD_W2TVR_NeedLimiteSpeed(BOOL enable);
  400. LCD_STATUS LCD_SetGMCThrottle(void);
  401. LCD_STATUS LCD_DumpM4U(void);
  402. LCD_STATUS LCD_M4U_On(BOOL enable);
  403. BOOL LCD_esd_check(void);
  404. void LCD_WaitTE(void);
  405. void LCD_InitVSYNC(unsigned int vsync_interval);
  406. void LCD_PauseVSYNC(BOOL enable);
  407. void LCD_GetVsyncCnt(void);
  408. // ---------------------------------------------------------------------------
  409. #ifdef __cplusplus
  410. }
  411. #endif
  412. #endif // __LCD_DRV_H__