dsi_drv.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  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. DSI_STATUS_OK = 0,
  106. DSI_STATUS_ERROR,
  107. } DSI_STATUS;
  108. typedef enum {
  109. SHORT_PACKET_RW = 0,
  110. FB_WRITE = 1,
  111. LONG_PACKET_W = 2,
  112. FB_READ = 3,
  113. } DSI_INS_TYPE;
  114. typedef enum {
  115. DISABLE_BTA = 0,
  116. ENABLE_BTA = 1,
  117. } DSI_CMDQ_BTA;
  118. typedef enum {
  119. LOW_POWER = 0,
  120. HIGH_SPEED = 1,
  121. } DSI_CMDQ_HS;
  122. typedef enum {
  123. CL_8BITS = 0,
  124. CL_16BITS = 1,
  125. } DSI_CMDQ_CL;
  126. typedef enum {
  127. DISABLE_TE = 0,
  128. ENABLE_TE = 1,
  129. } DSI_CMDQ_TE;
  130. typedef enum {
  131. DISABLE_RPT = 0,
  132. ENABLE_RPT = 1,
  133. } DSI_CMDQ_RPT;
  134. typedef struct {
  135. unsigned type : 2;
  136. unsigned BTA : 1;
  137. unsigned HS : 1;
  138. unsigned CL : 1;
  139. unsigned TE : 1;
  140. unsigned Rsv : 1;
  141. unsigned RPT : 1;
  142. } DSI_CMDQ_CONFG, *PDSI_CMDQ_CONFIG;
  143. typedef struct {
  144. unsigned CONFG : 8;
  145. unsigned Data_ID : 8;
  146. unsigned Data0 : 8;
  147. unsigned Data1 : 8;
  148. } DSI_T0_INS, *PDSI_T0_INS;
  149. typedef struct {
  150. unsigned CONFG : 8;
  151. unsigned Data_ID : 8;
  152. unsigned mem_start0 : 8;
  153. unsigned mem_start1 : 8;
  154. } DSI_T1_INS, *PDSI_T1_INS;
  155. typedef struct {
  156. unsigned CONFG : 8;
  157. unsigned Data_ID : 8;
  158. unsigned WC16 : 16;
  159. unsigned int *pdata;
  160. } DSI_T2_INS, *PDSI_T2_INS;
  161. typedef struct {
  162. unsigned CONFG : 8;
  163. unsigned Data_ID : 8;
  164. unsigned mem_start0 : 8;
  165. unsigned mem_start1 : 8;
  166. } DSI_T3_INS, *PDSI_T3_INS;
  167. typedef struct {
  168. UINT8 TXDIV0;
  169. UINT8 TXDIV1;
  170. UINT32 SDM_PCW;
  171. UINT8 SSC_PH_INIT;
  172. UINT16 SSC_PRD;
  173. UINT16 SSC_DELTA1;
  174. UINT16 SSC_DELTA;
  175. } DSI_PLL_CONFIG;
  176. DSI_STATUS DSI_Init(BOOL isDsiPoweredOn);
  177. DSI_STATUS DSI_Deinit(void);
  178. DSI_STATUS DSI_PowerOn(void);
  179. DSI_STATUS DSI_PowerOff(void);
  180. DSI_STATUS DSI_WaitForNotBusy(void);
  181. DSI_STATUS DSI_StartTransfer(BOOL needStartDSI);
  182. unsigned int DSI_Detect_CLK_Glitch(void);
  183. DSI_STATUS DSI_Reset(void);
  184. DSI_STATUS DSI_LP_Reset(void);
  185. DSI_STATUS DSI_SetMode(unsigned int mode);
  186. DSI_STATUS DSI_EnableInterrupt(DISP_INTERRUPT_EVENTS eventID);
  187. DSI_STATUS DSI_SetInterruptCallback(void (*pCB)(DISP_INTERRUPT_EVENTS eventID));
  188. DSI_STATUS DSI_handle_TE(void);
  189. DSI_STATUS DSI_Write_T0_INS(DSI_T0_INS *t0);
  190. DSI_STATUS DSI_Write_T1_INS(DSI_T1_INS *t1);
  191. DSI_STATUS DSI_Write_T2_INS(DSI_T2_INS *t2);
  192. DSI_STATUS DSI_Write_T3_INS(DSI_T3_INS *t3);
  193. DSI_STATUS DSI_TXRX_Control(BOOL cksm_en,
  194. BOOL ecc_en,
  195. unsigned char lane_num,
  196. unsigned char vc_num,
  197. BOOL null_packet_en,
  198. BOOL err_correction_en,
  199. BOOL dis_eotp_en,
  200. BOOL hstx_cklp_en,
  201. unsigned int max_return_size);
  202. //#ifndef MT65XX_NEW_DISP
  203. #if 0
  204. DSI_STATUS DSI_PS_Control(unsigned int ps_type, unsigned int ps_wc);
  205. #else
  206. DSI_STATUS DSI_PS_Control(unsigned int ps_type, unsigned int vact_line, unsigned int ps_wc);
  207. #endif
  208. DSI_STATUS DSI_ConfigVDOTiming(unsigned int dsi_vsa_nl,
  209. unsigned int dsi_vbp_nl,
  210. unsigned int dsi_vfp_nl,
  211. unsigned int dsi_vact_nl,
  212. unsigned int dsi_line_nb,
  213. unsigned int dsi_hsa_nb,
  214. unsigned int dsi_hbp_nb,
  215. unsigned int dsi_hfp_nb,
  216. unsigned int dsi_rgb_nb,
  217. unsigned int dsi_hsa_wc,
  218. unsigned int dsi_hbp_wc,
  219. unsigned int dsi_hfp_wc);
  220. //void init_mipi_pll(void);
  221. void DSI_Config_VDO_Timing(LCM_PARAMS *lcm_params);
  222. //#ifndef MT65XX_NEW_DISP
  223. void DSI_PHY_clk_setting(LCM_PARAMS *lcm_params);
  224. //void DSI_PHY_clk_setting(unsigned int div1, unsigned int div2, unsigned int lane_no);
  225. //#endif
  226. void DSI_PHY_clk_switch(BOOL on);
  227. void DSI_PHY_TIMCONFIG(LCM_PARAMS *lcm_params);
  228. void DSI_clk_ULP_mode(BOOL enter);
  229. void DSI_clk_HS_mode(BOOL enter);
  230. BOOL DSI_clk_HS_state(void);
  231. void DSI_lane0_ULP_mode(BOOL enter);
  232. BOOL DSI_esd_check(void);
  233. void DSI_handle_esd_recovery(void);
  234. void DSI_set_int_TE(BOOL enable, unsigned int period);
  235. BOOL DSI_handle_int_TE(void);
  236. void DSI_set_noncont_clk(BOOL enable, unsigned int period);
  237. void DSI_handle_noncont_clk(void);
  238. void DSI_set_cmdq_V3(LCM_setting_table_V3 *para_tbl, unsigned int size, unsigned char force_update);
  239. void DSI_set_cmdq_V2(unsigned cmd, unsigned char count, unsigned char *para_list, unsigned char force_update);
  240. void DSI_set_cmdq(unsigned int *pdata, unsigned int queue_size, unsigned char force_update);
  241. void DSI_write_lcm_cmd(unsigned int cmd);
  242. void DSI_write_lcm_regs(unsigned int addr, unsigned int *para, unsigned int nums);
  243. UINT32 DSI_read_lcm_reg(void);
  244. UINT32 DSI_dcs_read_lcm_reg(unsigned char);
  245. UINT32 DSI_dcs_read_lcm_reg_v2(UINT8 cmd, UINT8 *buffer, UINT8 buffer_size);
  246. DSI_STATUS DSI_write_lcm_fb(unsigned int addr, BOOL long_length);
  247. DSI_STATUS DSI_read_lcm_fb(void);
  248. DSI_STATUS DSI_enable_MIPI_txio(BOOL en);
  249. BOOL Need_Wait_ULPS(void);
  250. DSI_STATUS Wait_ULPS_Mode(void);
  251. DSI_STATUS Wait_WakeUp(void);
  252. //DSI_STATUS DSI_DumpRegisters(void);
  253. //enum DSI_STATUS DSI_DumpRegisters(DISP_MODULE_ENUM module, int level);
  254. //enum DSI_STATUS DSI_DumpRegisters(DISP_MODULE_ENUM module, void* cmdq, int level)
  255. DSI_STATUS DSI_FMDesense_Query(void);
  256. DSI_STATUS DSI_FM_Desense(unsigned long freq);
  257. DSI_STATUS DSI_Reset_CLK(void);
  258. DSI_STATUS DSI_Get_Default_CLK(unsigned int *clk);
  259. DSI_STATUS DSI_Get_Current_CLK(unsigned int *clk);
  260. DSI_STATUS DSI_Change_CLK(unsigned int clk);
  261. void DSI_WaitBtaTE(void);
  262. DSI_STATUS DSI_WaitVsync(void);
  263. #ifdef __cplusplus
  264. }
  265. #endif
  266. #endif // __DPI_DRV_H__