dsi_drv.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  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 __DSI_DRV_H__
  70. #define __DSI_DRV_H__
  71. #include <platform/mt_typedefs.h>
  72. #include "lcm_drv.h"
  73. #ifdef __cplusplus
  74. extern "C" {
  75. #endif
  76. // ---------------------------------------------------------------------------
  77. #define DSI_CHECK_RET(expr) \
  78. do { \
  79. DSI_STATUS ret = (expr); \
  80. ASSERT(DSI_STATUS_OK == ret); \
  81. } while (0)
  82. // ---------------------------------------------------------------------------
  83. #define DSI_DCS_SHORT_PACKET_ID_0 0x05
  84. #define DSI_DCS_SHORT_PACKET_ID_1 0x15
  85. #define DSI_DCS_LONG_PACKET_ID 0x39
  86. #define DSI_DCS_READ_PACKET_ID 0x06
  87. #define DSI_GERNERIC_SHORT_PACKET_ID_1 0x13
  88. #define DSI_GERNERIC_SHORT_PACKET_ID_2 0x23
  89. #define DSI_GERNERIC_LONG_PACKET_ID 0x29
  90. #define DSI_GERNERIC_READ_LONG_PACKET_ID 0x14
  91. #define DSI_WMEM_CONTI (0x3C)
  92. #define DSI_RMEM_CONTI (0x3E)
  93. // ESD recovery method for video mode LCM
  94. #define METHOD_NONCONTINUOUS_CLK (0x1)
  95. #define METHOD_BUS_TURN_AROUND (0x2)
  96. // State of DSI engine
  97. #define DSI_VDO_VSA_VS_STATE (0x008)
  98. #define DSI_VDO_VSA_HS_STATE (0x010)
  99. #define DSI_VDO_VSA_VE_STATE (0x020)
  100. #define DSI_VDO_VBP_STATE (0x040)
  101. #define DSI_VDO_VACT_STATE (0x080)
  102. #define DSI_VDO_VFP_STATE (0x100)
  103. // ---------------------------------------------------------------------------
  104. typedef enum
  105. {
  106. DSI_STATUS_OK = 0,
  107. DSI_STATUS_ERROR,
  108. } DSI_STATUS;
  109. typedef enum
  110. {
  111. SHORT_PACKET_RW = 0,
  112. FB_WRITE = 1,
  113. LONG_PACKET_W = 2,
  114. FB_READ = 3,
  115. } DSI_INS_TYPE;
  116. typedef enum
  117. {
  118. DISABLE_BTA = 0,
  119. ENABLE_BTA = 1,
  120. } DSI_CMDQ_BTA;
  121. typedef enum
  122. {
  123. LOW_POWER = 0,
  124. HIGH_SPEED = 1,
  125. } DSI_CMDQ_HS;
  126. typedef enum
  127. {
  128. CL_8BITS = 0,
  129. CL_16BITS = 1,
  130. } DSI_CMDQ_CL;
  131. typedef enum
  132. {
  133. DISABLE_TE = 0,
  134. ENABLE_TE = 1,
  135. } DSI_CMDQ_TE;
  136. typedef enum
  137. {
  138. DISABLE_RPT = 0,
  139. ENABLE_RPT = 1,
  140. } DSI_CMDQ_RPT;
  141. typedef struct
  142. {
  143. unsigned type : 2;
  144. unsigned BTA : 1;
  145. unsigned HS : 1;
  146. unsigned CL : 1;
  147. unsigned TE : 1;
  148. unsigned Rsv : 1;
  149. unsigned RPT : 1;
  150. } DSI_CMDQ_CONFG, *PDSI_CMDQ_CONFIG;
  151. typedef struct
  152. {
  153. unsigned CONFG : 8;
  154. unsigned Data_ID : 8;
  155. unsigned Data0 : 8;
  156. unsigned Data1 : 8;
  157. } DSI_T0_INS, *PDSI_T0_INS;
  158. typedef struct
  159. {
  160. unsigned CONFG : 8;
  161. unsigned Data_ID : 8;
  162. unsigned mem_start0 : 8;
  163. unsigned mem_start1 : 8;
  164. } DSI_T1_INS, *PDSI_T1_INS;
  165. typedef struct
  166. {
  167. unsigned CONFG : 8;
  168. unsigned Data_ID : 8;
  169. unsigned WC16 : 16;
  170. unsigned int *pdata;
  171. } DSI_T2_INS, *PDSI_T2_INS;
  172. typedef struct
  173. {
  174. unsigned CONFG : 8;
  175. unsigned Data_ID : 8;
  176. unsigned mem_start0 : 8;
  177. unsigned mem_start1 : 8;
  178. } DSI_T3_INS, *PDSI_T3_INS;
  179. typedef struct
  180. {
  181. UINT8 TXDIV0;
  182. UINT8 TXDIV1;
  183. UINT32 SDM_PCW;
  184. UINT8 SSC_PH_INIT;
  185. UINT16 SSC_PRD;
  186. UINT16 SSC_DELTA1;
  187. UINT16 SSC_DELTA;
  188. }DSI_PLL_CONFIG;
  189. DSI_STATUS DSI_Init(BOOL isDsiPoweredOn);
  190. DSI_STATUS DSI_Deinit(void);
  191. DSI_STATUS DSI_PowerOn(void);
  192. DSI_STATUS DSI_PowerOff(void);
  193. DSI_STATUS DSI_WaitForNotBusy(void);
  194. DSI_STATUS DSI_StartTransfer(BOOL needStartDSI);
  195. unsigned int DSI_Detect_CLK_Glitch(void);
  196. DSI_STATUS DSI_Reset(void);
  197. DSI_STATUS DSI_LP_Reset(void);
  198. DSI_STATUS DSI_SetMode(unsigned int mode);
  199. DSI_STATUS DSI_EnableInterrupt(DISP_INTERRUPT_EVENTS eventID);
  200. DSI_STATUS DSI_SetInterruptCallback(void (*pCB)(DISP_INTERRUPT_EVENTS eventID));
  201. DSI_STATUS DSI_handle_TE(void);
  202. DSI_STATUS DSI_Write_T0_INS(DSI_T0_INS *t0);
  203. DSI_STATUS DSI_Write_T1_INS(DSI_T1_INS *t1);
  204. DSI_STATUS DSI_Write_T2_INS(DSI_T2_INS *t2);
  205. DSI_STATUS DSI_Write_T3_INS(DSI_T3_INS *t3);
  206. DSI_STATUS DSI_TXRX_Control(BOOL cksm_en,
  207. BOOL ecc_en,
  208. unsigned char lane_num,
  209. unsigned char vc_num,
  210. BOOL null_packet_en,
  211. BOOL err_correction_en,
  212. BOOL dis_eotp_en,
  213. BOOL hstx_cklp_en,
  214. unsigned int max_return_size);
  215. //#ifndef MT65XX_NEW_DISP
  216. #if 0
  217. DSI_STATUS DSI_PS_Control(unsigned int ps_type, unsigned int ps_wc);
  218. #else
  219. DSI_STATUS DSI_PS_Control(unsigned int ps_type, unsigned int vact_line, unsigned int ps_wc);
  220. #endif
  221. DSI_STATUS DSI_ConfigVDOTiming(unsigned int dsi_vsa_nl,
  222. unsigned int dsi_vbp_nl,
  223. unsigned int dsi_vfp_nl,
  224. unsigned int dsi_vact_nl,
  225. unsigned int dsi_line_nb,
  226. unsigned int dsi_hsa_nb,
  227. unsigned int dsi_hbp_nb,
  228. unsigned int dsi_hfp_nb,
  229. unsigned int dsi_rgb_nb,
  230. unsigned int dsi_hsa_wc,
  231. unsigned int dsi_hbp_wc,
  232. unsigned int dsi_hfp_wc);
  233. //void init_mipi_pll(void);
  234. void DSI_Config_VDO_Timing(LCM_PARAMS *lcm_params);
  235. //#ifndef MT65XX_NEW_DISP
  236. void DSI_PHY_clk_setting(LCM_PARAMS *lcm_params);
  237. //void DSI_PHY_clk_setting(unsigned int div1, unsigned int div2, unsigned int lane_no);
  238. //#endif
  239. void DSI_PHY_clk_switch(BOOL on);
  240. void DSI_PHY_TIMCONFIG(LCM_PARAMS *lcm_params);
  241. void DSI_clk_ULP_mode(BOOL enter);
  242. void DSI_clk_HS_mode(BOOL enter);
  243. BOOL DSI_clk_HS_state(void);
  244. void DSI_lane0_ULP_mode(BOOL enter);
  245. BOOL DSI_esd_check(void);
  246. void DSI_handle_esd_recovery(void);
  247. void DSI_set_int_TE(BOOL enable, unsigned int period);
  248. BOOL DSI_handle_int_TE(void);
  249. void DSI_set_noncont_clk(BOOL enable, unsigned int period);
  250. void DSI_handle_noncont_clk(void);
  251. void DSI_set_cmdq_V3(LCM_setting_table_V3 *para_tbl, unsigned int size, unsigned char force_update);
  252. void DSI_set_cmdq_V2(unsigned cmd, unsigned char count, unsigned char *para_list, unsigned char force_update);
  253. void DSI_set_cmdq(unsigned int *pdata, unsigned int queue_size, unsigned char force_update);
  254. void DSI_write_lcm_cmd(unsigned int cmd);
  255. void DSI_write_lcm_regs(unsigned int addr, unsigned int *para, unsigned int nums);
  256. UINT32 DSI_read_lcm_reg(void);
  257. UINT32 DSI_dcs_read_lcm_reg(unsigned char);
  258. UINT32 DSI_dcs_read_lcm_reg_v2(UINT8 cmd, UINT8 *buffer, UINT8 buffer_size);
  259. DSI_STATUS DSI_write_lcm_fb(unsigned int addr, BOOL long_length);
  260. DSI_STATUS DSI_read_lcm_fb(void);
  261. DSI_STATUS DSI_enable_MIPI_txio(BOOL en);
  262. BOOL Need_Wait_ULPS(void);
  263. DSI_STATUS Wait_ULPS_Mode(void);
  264. DSI_STATUS Wait_WakeUp(void);
  265. DSI_STATUS DSI_DumpRegisters(void);
  266. DSI_STATUS DSI_FMDesense_Query(void);
  267. DSI_STATUS DSI_FM_Desense(unsigned long freq);
  268. DSI_STATUS DSI_Reset_CLK(void);
  269. DSI_STATUS DSI_Get_Default_CLK(unsigned int *clk);
  270. DSI_STATUS DSI_Get_Current_CLK(unsigned int *clk);
  271. DSI_STATUS DSI_Change_CLK(unsigned int clk);
  272. void DSI_WaitBtaTE(void);
  273. DSI_STATUS DSI_WaitVsync(void);
  274. #ifdef __cplusplus
  275. }
  276. #endif
  277. #endif // __DPI_DRV_H__