lcd_drv.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533
  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. {
  87. LCD_STATUS_OK = 0,
  88. LCD_STATUS_ERROR,
  89. } LCD_STATUS;
  90. typedef enum
  91. {
  92. LCD_STATE_IDLE = 0,
  93. LCD_STATE_BUSY,
  94. LCD_STATE_POWER_OFF,
  95. } LCD_STATE;
  96. typedef enum
  97. {
  98. LCD_IF_PARALLEL_0 = 0,
  99. LCD_IF_PARALLEL_1 = 1,
  100. LCD_IF_PARALLEL_2 = 2,
  101. LCD_IF_SERIAL_0 = 3,
  102. LCD_IF_SERIAL_1 = 4,
  103. LCD_IF_ALL = 0xFF,
  104. } LCD_IF_ID;
  105. typedef enum
  106. {
  107. LCD_IF_PARALLEL_8BITS = 0,
  108. LCD_IF_PARALLEL_9BITS = 1,
  109. LCD_IF_PARALLEL_16BITS = 2,
  110. LCD_IF_PARALLEL_18BITS = 3,
  111. LCD_IF_PARALLEL_24BITS = 4,
  112. } LCD_IF_PARALLEL_BITS;
  113. typedef enum
  114. {
  115. LCD_IF_SERIAL_8BITS = 0,
  116. LCD_IF_SERIAL_9BITS = 1,
  117. LCD_IF_SERIAL_16BITS = 2,
  118. LCD_IF_SERIAL_18BITS = 3,
  119. LCD_IF_SERIAL_24BITS = 4,
  120. LCD_IF_SERIAL_32BITS = 5,
  121. } LCD_IF_SERIAL_BITS;
  122. typedef enum
  123. {
  124. LCD_IF_PARALLEL_CLK_DIV_1 = 0,
  125. LCD_IF_PARALLEL_CLK_DIV_2,
  126. LCD_IF_PARALLEL_CLK_DIV_4,
  127. } LCD_IF_PARALLEL_CLK_DIV;
  128. /*
  129. typedef enum
  130. {
  131. LCD_IF_SERIAL_CLK_DIV_1 = 0,
  132. LCD_IF_SERIAL_CLK_DIV_2,
  133. LCD_IF_SERIAL_CLK_DIV_4,
  134. LCD_IF_SERIAL_CLK_DIV_8,
  135. LCD_IF_SERIAL_CLK_DIV_16,
  136. } LCD_IF_SERIAL_CLK_DIV;
  137. */
  138. typedef enum
  139. {
  140. LCD_IF_A0_LOW = 0,
  141. LCD_IF_A0_HIGH = 1,
  142. } LCD_IF_A0_MODE;
  143. typedef enum
  144. {
  145. LCD_IF_MCU_WRITE_8BIT = 8,
  146. LCD_IF_MCU_WRITE_16BIT = 16,
  147. LCD_IF_MCU_WRITE_32BIT = 32,
  148. } LCD_IF_MCU_WRITE_BITS;
  149. typedef enum
  150. {
  151. LCD_IF_FORMAT_RGB332 = 0,
  152. LCD_IF_FORMAT_RGB444 = 1,
  153. LCD_IF_FORMAT_RGB565 = 2,
  154. LCD_IF_FORMAT_RGB666 = 3,
  155. LCD_IF_FORMAT_RGB888 = 4,
  156. } LCD_IF_FORMAT;
  157. typedef enum
  158. {
  159. LCD_IF_WIDTH_8_BITS = 0,
  160. LCD_IF_WIDTH_9_BITS = 2,
  161. LCD_IF_WIDTH_16_BITS = 1,
  162. LCD_IF_WIDTH_18_BITS = 3,
  163. LCD_IF_WIDTH_24_BITS = 4,
  164. LCD_IF_WIDTH_32_BITS = 5,
  165. } LCD_IF_WIDTH;
  166. /*
  167. typedef enum
  168. {
  169. LCD_CMDQ_0 = 0,
  170. LCD_CMDQ_1 = 1,
  171. } LCD_CMDQ_ID;
  172. */
  173. typedef enum
  174. {
  175. LCD_FB_0 = 0,
  176. LCD_FB_1 = 1,
  177. LCD_FB_2 = 2,
  178. LCD_FB_NUM,
  179. } LCD_FB_ID;
  180. typedef enum
  181. {
  182. LCD_FB_FORMAT_RGB565 = 0,
  183. LCD_FB_FORMAT_RGB888 = 1,
  184. LCD_FB_FORMAT_ARGB8888 = 2,
  185. LCD_FB_FORMAT_NUM,
  186. } LCD_FB_FORMAT;
  187. typedef enum
  188. {
  189. LCD_OUTPUT_TO_LCM = (1 << 0),
  190. LCD_OUTPUT_TO_MEM = (1 << 1),
  191. LCD_OUTPUT_TO_TVROT = (1 << 2),
  192. } LCD_OUTPUT_MODE;
  193. typedef enum {
  194. LCD_LAYER_0 = 0,
  195. LCD_LAYER_1 = 1,
  196. LCD_LAYER_2 = 2,
  197. LCD_LAYER_3 = 3,
  198. LCD_LAYER_NUM,
  199. LCD_LAYER_ALL = 0xFFFFFFFF,
  200. } LCD_LAYER_ID;
  201. /* Layer Designation */
  202. #define ASSERT_LAYER (LCD_LAYER_3)
  203. #define FB_LAYER (LCD_LAYER_3)
  204. typedef enum {
  205. LCD_LAYER_FORMAT_RGB888 = 0,
  206. LCD_LAYER_FORMAT_RGB565 = 1,
  207. LCD_LAYER_FORMAT_ARGB8888 = 2,
  208. LCD_LAYER_FORMAT_PARGB8888 = 3,
  209. LCD_LAYER_FORMAT_xRGB8888 = 4,
  210. LCD_LAYER_FORMAT_YUYV422 = 8,
  211. LCD_LAYER_FORMAT_UYVY = 9,
  212. LCD_LAYER_FORMAT_YVYU = 10,
  213. LCD_LAYER_FORMAT_VYUY = 11,
  214. LCD_LAYER_FORMAT_YUV444 = 15,
  215. LCD_LAYER_FORMAT_NUM,
  216. } LCD_LAYER_FORMAT;
  217. typedef enum {
  218. LCD_LAYER_ROTATE_NONE = 0,
  219. LCD_LAYER_ROTATE_0 = 0,
  220. LCD_LAYER_ROTATE_90 = 1,
  221. LCD_LAYER_ROTATE_180 = 2,
  222. LCD_LAYER_ROTATE_270 = 3,
  223. LCD_LAYER_ROTATE_MIRROR_0 = 4,
  224. LCD_LAYER_ROTATE_MIRROR_90 = 5,
  225. LCD_LAYER_ROTATE_MIRROR_180 = 6,
  226. LCD_LAYER_ROTATE_MIRROR_270 = 7,
  227. } LCD_LAYER_ROTATION;
  228. typedef enum {
  229. LCD_SW_TRIGGER = 0,
  230. LCD_HW_TRIGGER_BUFFERING,
  231. LCD_HW_TRIGGER_DIRECT_COUPLE,
  232. } LCD_LAYER_TRIGGER_MODE;
  233. typedef enum {
  234. LCD_HW_TRIGGER_SRC_IRT1 = 0,
  235. LCD_HW_TRIGGER_SRC_IBW1 = 1,
  236. LCD_HW_TRIGGER_SRC_IBW2 = 3,
  237. } LCD_HW_TRIGGER_SRC;
  238. typedef enum {
  239. LCD_TE_MODE_VSYNC_ONLY = 0,
  240. LCD_TE_MODE_VSYNC_OR_HSYNC = 1,
  241. } LCD_TE_MODE;
  242. typedef enum
  243. {
  244. LCD_TE_VS_WIDTH_CNT_DIV_8 = 0,
  245. LCD_TE_VS_WIDTH_CNT_DIV_16 = 1,
  246. LCD_TE_VS_WIDTH_CNT_DIV_32 = 2,
  247. LCD_TE_VS_WIDTH_CNT_DIV_64 = 3,
  248. } LCD_TE_VS_WIDTH_CNT_DIV;
  249. typedef enum
  250. {
  251. LCD_IF_FMT_COLOR_ORDER_RGB = 0,
  252. LCD_IF_FMT_COLOR_ORDER_BGR = 1,
  253. } LCD_IF_FMT_COLOR_ORDER;
  254. typedef enum
  255. {
  256. LCD_IF_FMT_TRANS_SEQ_MSB_FIRST = 0,
  257. LCD_IF_FMT_TRANS_SEQ_LSB_FIRST = 1,
  258. } LCD_IF_FMT_TRANS_SEQ;
  259. typedef enum
  260. {
  261. LCD_IF_FMT_PADDING_ON_LSB = 0,
  262. LCD_IF_FMT_PADDING_ON_MSB = 1,
  263. } LCD_IF_FMT_PADDING;
  264. typedef enum
  265. {
  266. LCD_DSI_IF_FMT_COLOR_ORDER_RGB = 0,
  267. LCD_DSI_IF_FMT_COLOR_ORDER_BGR = 1,
  268. } LCD_DSI_IF_FMT_COLOR_ORDER;
  269. typedef enum
  270. {
  271. LCD_DSI_IF_FMT_TRANS_SEQ_MSB_FIRST = 0,
  272. LCD_DSI_IF_FMT_TRANS_SEQ_LSB_FIRST = 1,
  273. } LCD_DSI_IF_FMT_TRANS_SEQ;
  274. typedef enum
  275. {
  276. LCD_DSI_IF_FMT_PADDING_ON_LSB = 0,
  277. LCD_DSI_IF_FMT_PADDING_ON_MSB = 1,
  278. } LCD_DSI_IF_FMT_PADDING;
  279. typedef enum
  280. {
  281. LCD_DSI_IF_FORMAT_RGB565 = 0,
  282. LCD_DSI_IF_FORMAT_RGB666 = 1,
  283. LCD_DSI_IF_FORMAT_RGB888 = 2,
  284. } LCD_DSI_IF_FORMAT;
  285. // ---------------------------------------------------------------------------
  286. // Configurations
  287. LCD_STATUS LCD_Init(void);
  288. LCD_STATUS LCD_Deinit(void);
  289. LCD_STATUS LCD_Set_DrivingCurrent(LCM_PARAMS *lcm_params);
  290. LCD_STATUS LCD_PowerOn(void);
  291. LCD_STATUS LCD_PowerOff(void);
  292. LCD_STATUS LCD_M4UPowerOn(void);
  293. LCD_STATUS LCD_M4UPowerOff(void);
  294. LCD_STATUS LCD_WaitForNotBusy(void);
  295. LCD_STATUS LCD_EnableInterrupt(DISP_INTERRUPT_EVENTS eventID);
  296. LCD_STATUS LCD_SetInterruptCallback(void (*pCB)(DISP_INTERRUPT_EVENTS eventID));
  297. // LCD Controller Interface
  298. LCD_STATUS LCD_ConfigParallelIF(LCD_IF_ID id,
  299. LCD_IF_PARALLEL_BITS ifDataWidth,
  300. LCD_IF_PARALLEL_CLK_DIV clkDivisor,
  301. UINT32 writeSetup,
  302. UINT32 writeHold,
  303. UINT32 writeWait,
  304. UINT32 readSetup,
  305. UINT32 readHold,
  306. UINT32 readLatency,
  307. UINT32 waitPeriod,
  308. UINT32 chw);
  309. LCD_STATUS LCD_ConfigSerialIF(LCD_IF_ID id,
  310. LCD_IF_SERIAL_BITS bits,
  311. UINT32 three_wire,
  312. UINT32 sdi,
  313. BOOL first_pol,
  314. BOOL sck_def,
  315. UINT32 div2,
  316. UINT32 hw_cs,
  317. UINT32 css,
  318. UINT32 csh,
  319. UINT32 rd_1st,
  320. UINT32 rd_2nd,
  321. UINT32 wr_1st,
  322. UINT32 wr_2nd);
  323. LCD_STATUS LCD_ConfigIfFormat(LCD_IF_FMT_COLOR_ORDER order,
  324. LCD_IF_FMT_TRANS_SEQ transSeq,
  325. LCD_IF_FMT_PADDING padding,
  326. LCD_IF_FORMAT format,
  327. LCD_IF_WIDTH busWidth);
  328. LCD_STATUS LCD_SetResetSignal(BOOL high);
  329. LCD_STATUS LCD_ConfigDSIIfFormat(LCD_DSI_IF_FMT_COLOR_ORDER order,
  330. LCD_DSI_IF_FMT_TRANS_SEQ transSeq,
  331. LCD_DSI_IF_FMT_PADDING padding,
  332. LCD_DSI_IF_FORMAT format,
  333. UINT32 packet_size,
  334. BOOL DC_DSI);
  335. // LCD Command Queue
  336. LCD_STATUS LCD_CmdQueueEnable(BOOL enabled);
  337. LCD_STATUS LCD_CmdQueueWrite(UINT32 *cmds, UINT32 cmdCount);
  338. // Layer Configurations
  339. LCD_STATUS LCD_LayerEnable(LCD_LAYER_ID id, BOOL enable);
  340. BOOL LCD_IsLayerEnable(LCD_LAYER_ID id);
  341. LCD_STATUS LCD_LayerSetAddress(LCD_LAYER_ID id, UINT32 address);
  342. UINT32 LCD_LayerGetAddress(LCD_LAYER_ID id);
  343. LCD_STATUS LCD_LayerSetSize(LCD_LAYER_ID id, UINT32 width, UINT32 height);
  344. // 3D Layer Configurations
  345. LCD_STATUS LCD_Layer3D_Enable(LCD_LAYER_ID id, BOOL enable);
  346. LCD_STATUS LCD_Layer3D_R1st(LCD_LAYER_ID id, BOOL r_first);
  347. LCD_STATUS LCD_Layer3D_landscape(LCD_LAYER_ID id, BOOL landscape);
  348. LCD_STATUS LCD_LayerSet3D(LCD_LAYER_ID id, BOOL enable, BOOL r_first, BOOL landscape);
  349. BOOL LCD_Is3DEnabled(void);
  350. BOOL LCD_Is3DLandscapeMode(void);
  351. // MT6573 added
  352. LCD_STATUS LCD_LayerSetPitch(LCD_LAYER_ID id, UINT32 pitch);
  353. LCD_STATUS LCD_LayerSetOffset(LCD_LAYER_ID id, UINT32 x, UINT32 y);
  354. LCD_STATUS LCD_LayerSetWindowOffset(LCD_LAYER_ID id, UINT32 x, UINT32 y);
  355. LCD_STATUS LCD_LayerSetFormat(LCD_LAYER_ID id, LCD_LAYER_FORMAT format);
  356. LCD_STATUS LCD_LayerEnableByteSwap(LCD_LAYER_ID id, BOOL enable);
  357. LCD_STATUS LCD_LayerSetRotation(LCD_LAYER_ID id, LCD_LAYER_ROTATION rotation);
  358. LCD_STATUS LCD_LayerSetAlphaBlending(LCD_LAYER_ID id, BOOL enable, UINT8 alpha);
  359. LCD_STATUS LCD_LayerSetSourceColorKey(LCD_LAYER_ID id, BOOL enable, UINT32 colorKey);
  360. // HW Trigger Configurations
  361. LCD_STATUS LCD_LayerSetTriggerMode(LCD_LAYER_ID id, LCD_LAYER_TRIGGER_MODE mode);
  362. LCD_STATUS LCD_LayerSetHwTriggerSrc(LCD_LAYER_ID id, LCD_HW_TRIGGER_SRC src);
  363. LCD_STATUS LCD_EnableHwTrigger(BOOL enable);
  364. // ROI Window Configurations
  365. LCD_STATUS LCD_SetBackgroundColor(UINT32 bgColor);
  366. LCD_STATUS LCD_SetRoiWindow(UINT32 x, UINT32 y, UINT32 width, UINT32 height);
  367. // DSI Related Configurations
  368. LCD_STATUS LCD_EnableDCtoDsi(BOOL dc_dsi_en);
  369. // Output to Memory Configurations
  370. LCD_STATUS LCD_SetOutputMode(LCD_OUTPUT_MODE mode);
  371. LCD_STATUS LCD_WaitDPIIndication(BOOL enable);
  372. LCD_STATUS LCD_FBSetFormat(LCD_FB_FORMAT format);
  373. LCD_STATUS LCD_FBSetPitch(UINT32 pitchInByte);
  374. LCD_STATUS LCD_FBReset(void);
  375. LCD_STATUS LCD_FBEnable(LCD_FB_ID id, BOOL enable);
  376. LCD_STATUS LCD_FBSetAddress(LCD_FB_ID id, UINT32 address);
  377. LCD_STATUS LCD_FBSetStartCoord(UINT32 x, UINT32 y);
  378. // Color Matrix
  379. LCD_STATUS LCD_EnableColorMatrix(LCD_IF_ID id, BOOL enable);
  380. LCD_STATUS LCD_SetColorMatrix(const S2_8 mat[9]);
  381. // Tearing Control
  382. LCD_STATUS LCD_TE_Enable(BOOL enable);
  383. LCD_STATUS LCD_TE_SetMode(LCD_TE_MODE mode);
  384. LCD_STATUS LCD_TE_SetEdgePolarity(BOOL polarity);
  385. LCD_STATUS LCD_TE_ConfigVHSyncMode(UINT32 hsDelayCnt,
  386. UINT32 vsWidthCnt,
  387. LCD_TE_VS_WIDTH_CNT_DIV vsWidthCntDiv);
  388. // Operations
  389. LCD_STATUS LCD_SelectWriteIF(LCD_IF_ID id);
  390. LCD_STATUS LCD_WriteIF(LCD_IF_ID id, LCD_IF_A0_MODE a0, UINT32 value, LCD_IF_MCU_WRITE_BITS bits);
  391. LCD_STATUS LCD_ReadIF(LCD_IF_ID id, LCD_IF_A0_MODE a0, UINT32 *value, LCD_IF_MCU_WRITE_BITS bits);
  392. LCD_STATUS LCD_StartTransfer(BOOL blocking);
  393. // Retrieve Information
  394. LCD_STATE LCD_GetState(void);
  395. LCD_OUTPUT_MODE LCD_GetOutputMode(void);
  396. LCD_STATUS LCD_ConfigOVL(void);
  397. BOOL LCD_IsBusy(void);
  398. // Debug
  399. LCD_STATUS LCD_ConfigDither(int lrs, int lgs, int lbs, int dbr, int dbg, int dbb);
  400. LCD_STATUS LCD_LayerEnableDither(LCD_LAYER_ID id, UINT32 enable);
  401. LCD_STATUS LCD_SetOutputAlpha(unsigned int alpha);
  402. LCD_STATUS LCD_DumpRegisters(void);
  403. LCD_STATUS LCD_Capture_Framebuffer(unsigned int pvbuf, unsigned int bpp);
  404. LCD_STATUS LCD_Capture_Layerbuffer(unsigned int layer_id, unsigned int pvbuf, unsigned int bpp);
  405. LCD_STATUS LCD_Init_IO_pad(LCM_PARAMS *lcm_params);
  406. //FM De-sense
  407. LCD_STATUS LCD_FMDesense_Query(void);
  408. LCD_STATUS LCD_FM_Desense(LCD_IF_ID id, unsigned long freq);
  409. LCD_STATUS LCD_Get_Default_WriteCycle(LCD_IF_ID id, unsigned int *write_cycle);
  410. LCD_STATUS LCD_Get_Current_WriteCycle(LCD_IF_ID id, unsigned int *write_cycle);
  411. LCD_STATUS LCD_Change_WriteCycle(LCD_IF_ID id, unsigned int write_cycle);
  412. LCD_STATUS LCD_Reset_WriteCycle(LCD_IF_ID id);
  413. LCD_STATUS LCD_Get_VideoLayerSize(unsigned int id, unsigned int *width, unsigned int *height);
  414. LCD_STATUS LCD_Capture_Videobuffer(unsigned int pvbuf, unsigned int bpp, unsigned int video_rotation);
  415. LCD_STATUS LCD_InitM4U(void);
  416. LCD_STATUS LCD_AllocUIMva(unsigned int va, unsigned int *mva, unsigned int size);
  417. LCD_STATUS LCD_AllocOverlayMva(unsigned int va, unsigned int *mva, unsigned int size);
  418. LCD_STATUS LCD_DeallocMva(unsigned int va, unsigned int mva, unsigned int size);
  419. LCD_STATUS LCD_W2M_NeedLimiteSpeed(BOOL enable);
  420. LCD_STATUS LCD_W2TVR_NeedLimiteSpeed(BOOL enable);
  421. LCD_STATUS LCD_SetGMCThrottle(void);
  422. LCD_STATUS LCD_DumpM4U(void);
  423. LCD_STATUS LCD_M4U_On(BOOL enable);
  424. BOOL LCD_esd_check(void);
  425. void LCD_WaitTE(void);
  426. void LCD_InitVSYNC(unsigned int vsync_interval);
  427. void LCD_PauseVSYNC(BOOL enable);
  428. void LCD_GetVsyncCnt(void);
  429. // ---------------------------------------------------------------------------
  430. #ifdef __cplusplus
  431. }
  432. #endif
  433. #endif // __LCD_DRV_H__