3 #include <platform/disp_drv_platform.h>
5 #include <linux/delay.h>
6 #include <mach/mt_gpio.h>
8 #include <cust_gpio_usage.h>
9 //used to identify float ID PIN status
10 #define LCD_HW_ID_STATUS_LOW 0
11 #define LCD_HW_ID_STATUS_HIGH 1
12 #define LCD_HW_ID_STATUS_FLOAT 0x02
13 #define LCD_HW_ID_STATUS_ERROR 0x03
16 #define LCD_DEBUG(fmt) dprintf(CRITICAL,fmt)
18 #define LCD_DEBUG(fmt) printk(fmt)
20 extern LCM_DRIVER otm1282a_hd720_dsi_vdo_lcm_drv
;
21 extern LCM_DRIVER r63319_wqhd_dsi_vdo_truly_lcm_drv
;
22 extern LCM_DRIVER nt35598_wqhd_dsi_vdo_truly_lcm_drv
;
23 extern LCM_DRIVER lp079x01_lcm_drv
;
24 extern LCM_DRIVER hx8369_lcm_drv
;
25 extern LCM_DRIVER hx8369_6575_lcm_drv
;
26 extern LCM_DRIVER hx8363_6575_dsi_lcm_drv
;
27 extern LCM_DRIVER hx8363_6575_dsi_hvga_lcm_drv
;
28 extern LCM_DRIVER hx8363_6575_dsi_qvga_lcm_drv
;
29 extern LCM_DRIVER hx8363b_wvga_dsi_cmd_drv
;
30 extern LCM_DRIVER bm8578_lcm_drv
;
31 extern LCM_DRIVER nt35582_mcu_lcm_drv
;
32 extern LCM_DRIVER nt35582_mcu_6575_lcm_drv
;
33 extern LCM_DRIVER nt35582_rgb_6575_lcm_drv
;
34 extern LCM_DRIVER hx8357b_lcm_drv
;
35 extern LCM_DRIVER hx8357c_hvga_dsi_cmd_drv
;
36 extern LCM_DRIVER hx8369_dsi_lcm_drv
;
37 extern LCM_DRIVER hx8369_dsi_6575_lcm_drv
;
38 extern LCM_DRIVER hx8369_dsi_6575_hvga_lcm_drv
;
39 extern LCM_DRIVER hx8369_dsi_6575_qvga_lcm_drv
;
40 extern LCM_DRIVER hx8369_dsi_vdo_lcm_drv
;
41 extern LCM_DRIVER hx8369b_dsi_vdo_lcm_drv
;
42 extern LCM_DRIVER hx8369b_wvga_dsi_vdo_drv
;
43 extern LCM_DRIVER hx8389b_qhd_dsi_vdo_drv
;
44 extern LCM_DRIVER hx8369_hvga_lcm_drv
;
45 extern LCM_DRIVER ili9481_lcm_drv
;
46 extern LCM_DRIVER nt35582_lcm_drv
;
47 extern LCM_DRIVER s6d0170_lcm_drv
;
48 extern LCM_DRIVER spfd5461a_lcm_drv
;
49 extern LCM_DRIVER ta7601_lcm_drv
;
50 extern LCM_DRIVER tft1p3037_lcm_drv
;
51 extern LCM_DRIVER ha5266_lcm_drv
;
52 extern LCM_DRIVER hsd070idw1_lcm_drv
;
53 extern LCM_DRIVER lg4571_lcm_drv
;
54 extern LCM_DRIVER lg4573b_wvga_dsi_vdo_lh430mv1_drv
;
55 extern LCM_DRIVER lvds_wsvga_lcm_drv
;
56 extern LCM_DRIVER lvds_wsvga_ti_lcm_drv
;
57 extern LCM_DRIVER lvds_wsvga_ti_n_lcm_drv
;
58 extern LCM_DRIVER nt35565_3d_lcm_drv
;
59 extern LCM_DRIVER tm070ddh03_lcm_drv
;
60 extern LCM_DRIVER r61408_lcm_drv
;
61 extern LCM_DRIVER r61408_wvga_dsi_cmd_drv
;
62 extern LCM_DRIVER nt35510_lcm_drv
;
63 extern LCM_DRIVER nt35510_dpi_lcm_drv
;
64 extern LCM_DRIVER nt35510_hvga_lcm_drv
;
65 extern LCM_DRIVER nt35510_qvga_lcm_drv
;
66 extern LCM_DRIVER nt35510_wvga_dsi_cmd_drv
;
67 extern LCM_DRIVER nt35510_6517_lcm_drv
;
68 extern LCM_DRIVER nt35510_dsi_cmd_6572_drv
;
69 extern LCM_DRIVER nt35510_dsi_cmd_6572_hvga_drv
;
70 extern LCM_DRIVER nt35510_dsi_cmd_6572_fwvga_drv
;
71 extern LCM_DRIVER nt35510_dsi_cmd_6572_qvga_drv
;
72 extern LCM_DRIVER nt35510_dsi_vdo_6572_drv
;
73 extern LCM_DRIVER nt35510_dpi_6572_lcm_drv
;
74 extern LCM_DRIVER nt35510_mcu_6572_lcm_drv
;
75 extern LCM_DRIVER nt51012_hd720_dsi_vdo_lcm_drv
;
76 extern LCM_DRIVER r63303_idisplay_lcm_drv
;
77 extern LCM_DRIVER hj080ia_lcm_drv
;
78 extern LCM_DRIVER hj101na02a_lcm_drv
;
79 extern LCM_DRIVER hj101na02a_8135_lcm_drv
;
80 extern LCM_DRIVER hsd070pfw3_lcm_drv
;
81 extern LCM_DRIVER hsd070pfw3_8135_lcm_drv
;
82 extern LCM_DRIVER cm_n070ice_dsi_vdo_lcm_drv
;
83 extern LCM_DRIVER ej101ia_lcm_drv
;
84 extern LCM_DRIVER scf0700m48ggu02_lcm_drv
;
85 extern LCM_DRIVER nt35510_fwvga_lcm_drv
;
86 #if defined(GN_SSD2825_SMD_S6E8AA)
87 extern LCM_DRIVER gn_ssd2825_smd_s6e8aa
;
89 extern LCM_DRIVER nt35517_dsi_vdo_lcm_drv
;
90 extern LCM_DRIVER hx8369_dsi_bld_lcm_drv
;
91 extern LCM_DRIVER hx8369_dsi_tm_lcm_drv
;
92 extern LCM_DRIVER otm1280a_hd720_dsi_cmd_drv
;
93 extern LCM_DRIVER otm8018b_dsi_vdo_lcm_drv
;
94 extern LCM_DRIVER otm8018b_dsi_vdo_txd_fwvga_lcm_drv
;
95 extern LCM_DRIVER nt35512_dsi_vdo_lcm_drv
;
96 extern LCM_DRIVER nt35512_wvga_dsi_vdo_boe_drv
;
97 extern LCM_DRIVER hx8369_rgb_6585_fpga_lcm_drv
;
98 extern LCM_DRIVER hx8369_rgb_6572_fpga_lcm_drv
;
99 extern LCM_DRIVER hx8369_mcu_6572_lcm_drv
;
100 extern LCM_DRIVER hx8369a_wvga_dsi_cmd_drv
;
101 extern LCM_DRIVER hx8369a_wvga_dsi_vdo_drv
;
102 extern LCM_DRIVER hx8392a_dsi_cmd_lcm_drv
;
103 extern LCM_DRIVER nt35590_hd720_dsi_vdo_truly_lcm_drv
;
104 extern LCM_DRIVER ssd2075_hd720_dsi_vdo_truly_lcm_drv
;
105 extern LCM_DRIVER nt35590_hd720_dsi_cmd_drv
;
106 extern LCM_DRIVER nt35590_hd720_dsi_cmd_auo_lcm_drv
;
107 extern LCM_DRIVER nt35590_hd720_dsi_cmd_auo_fwvga_lcm_drv
;
108 extern LCM_DRIVER nt35590_hd720_dsi_cmd_auo_wvga_lcm_drv
;
109 extern LCM_DRIVER nt35590_hd720_dsi_cmd_auo_qhd_lcm_drv
;
110 extern LCM_DRIVER nt35590_hd720_dsi_cmd_cmi_lcm_drv
;
111 extern LCM_DRIVER nt35516_qhd_dsi_cmd_ipsboe_lcm_drv
;
112 extern LCM_DRIVER nt35516_qhd_dsi_cmd_ipsboe_wvga_lcm_drv
;
113 extern LCM_DRIVER nt35516_qhd_dsi_cmd_ipsboe_fwvga_lcm_drv
;
114 extern LCM_DRIVER nt35516_qhd_dsi_cmd_ips9k1431_drv
;
115 extern LCM_DRIVER nt35516_qhd_dsi_cmd_tft9k1342_drv
;
116 extern LCM_DRIVER bp070ws1_lcm_drv
;
117 extern LCM_DRIVER bp101wx1_lcm_drv
;
118 extern LCM_DRIVER bp101wx1_n_lcm_drv
;
119 extern LCM_DRIVER nt35516_qhd_rav4_lcm_drv
;
120 extern LCM_DRIVER r63311_fhd_dsi_vdo_sharp_lcm_drv
;
121 extern LCM_DRIVER r81592_hvga_dsi_cmd_drv
;
122 extern LCM_DRIVER rm68190_dsi_vdo_lcm_drv
;
123 extern LCM_DRIVER nt35596_fhd_dsi_vdo_truly_lcm_drv
;
124 extern LCM_DRIVER nt35595_fhd_dsi_vdo_truly_lcm_drv
;
125 extern LCM_DRIVER nt35595_fhd_dsi_cmd_truly_lcm_drv
;
126 extern LCM_DRIVER nt35595_fhd_dsi_cmd_truly_tps65132_lcm_drv
;
127 extern LCM_DRIVER nt35595_fhd_dsi_cmd_truly_tps65132_720p_lcm_drv
;
128 extern LCM_DRIVER nt35596_fhd_dsi_vdo_yassy_lcm_drv
;
129 extern LCM_DRIVER nt35590_hd720_dsi_cmd_truly2_lcm_drv
;
130 extern LCM_DRIVER otm9608_wvga_dsi_cmd_drv
;
131 extern LCM_DRIVER nt35510_dbi_18bit_gionee_lcm_drv
;
132 extern LCM_DRIVER otm8009a_fwvga_dsi_cmd_tianma_lcm_drv
;
133 extern LCM_DRIVER otm8009a_fwvga_dsi_vdo_tianma_lcm_drv
;
134 extern LCM_DRIVER hx8389b_qhd_dsi_vdo_tianma_lcm_drv
;
135 extern LCM_DRIVER cm_otc3108bhv161_dsi_vdo_lcm_drv
;
136 extern LCM_DRIVER auo_b079xat02_dsi_vdo_lcm_drv
;
137 extern LCM_DRIVER hx8389b_qhd_dsi_vdo_tianma055xdhp_lcm_drv
;
138 extern LCM_DRIVER cpt_claa101fp01_dsi_vdo_lcm_drv
;
139 extern LCM_DRIVER h070d_18dm_lcm_drv
;
140 extern LCM_DRIVER hx8394a_hd720_dsi_vdo_tianma_lcm_drv
;
141 extern LCM_DRIVER cpt_clap070wp03xg_sn65dsi83_lcm_drv
;
142 extern LCM_DRIVER nt35520_hd720_tm_lcm_drv
;
143 extern LCM_DRIVER nt35520_hd720_boe_lcm_drv
;
144 extern LCM_DRIVER nt35521_hd720_dsi_vdo_boe_lcm_drv
;
145 extern LCM_DRIVER nt35521_hd720_tm_lcm_drv
;
146 extern LCM_DRIVER r69429_wuxga_dsi_vdo_lcm_drv
;
147 extern LCM_DRIVER r69429_wuxga_dsi_cmd_lcm_drv
;
148 extern LCM_DRIVER rm68210_hd720_dsi_ufoe_cmd_lcm_drv
;
149 extern LCM_DRIVER r63311_fhd_dsi_vedio_lcm_drv
;
150 extern LCM_DRIVER cpt_clap070wp03xg_lvds_lcm_drv
;
151 extern LCM_DRIVER otm8018b_dsi_vdo_lcsh72_lcm_drv
;
152 extern LCM_DRIVER hx8369_dsi_cmd_6571_lcm_drv
;
153 extern LCM_DRIVER hx8369_dsi_vdo_6571_lcm_drv
;
154 extern LCM_DRIVER hx8369_dbi_6571_lcm_drv
;
155 extern LCM_DRIVER hx8369_dpi_6571_lcm_drv
;
156 extern LCM_DRIVER nt35510_dsi_cmd_6571_lcm_drv
;
157 extern LCM_DRIVER nt35510_dsi_cmd_6571_hvga_lcm_drv
;
158 extern LCM_DRIVER nt35510_dsi_cmd_6571_qvga_lcm_drv
;
159 extern LCM_DRIVER nt35510_dsi_vdo_6571_lcm_drv
;
160 extern LCM_DRIVER nt35510_dbi_6571_lcm_drv
;
161 extern LCM_DRIVER nt35510_dpi_6571_lcm_drv
;
162 extern LCM_DRIVER nt35590_dsi_cmd_6571_fwvga_lcm_drv
;
163 extern LCM_DRIVER nt35590_dsi_cmd_6571_qhd_lcm_drv
;
164 extern LCM_DRIVER it6151_edp_dsi_video_sharp_lcm_drv
;
165 extern LCM_DRIVER nt35517_qhd_dsi_vdo_lcm_drv
;
166 extern LCM_DRIVER hx8389b_qhd_dsi_vdo_lgd_lcm_drv
;
167 extern LCM_DRIVER it6151_fhd_edp_dsi_video_auo_lcm_drv
;
168 extern LCM_DRIVER tf070mc_rgb_v18_mt6571_lcm_drv
;
169 extern LCM_DRIVER zs070ih5015b3h6_mt6571_lcm_drv
;
170 extern LCM_DRIVER a080ean01_dsi_vdo_lcm_drv
;
171 LCM_DRIVER
* lcm_driver_list
[] =
173 #if defined(OTM8018B_DSI_VDO_TXD_FWVGA)
174 &otm8018b_dsi_vdo_txd_fwvga_lcm_drv
,
177 #if defined(TF070MC_RGB_V18_MT6571)
178 &tf070mc_rgb_v18_mt6571_lcm_drv
,
181 #if defined(ZS070IH5015B3H6_RGB_MT6571)
182 &zs070ih5015b3h6_mt6571_lcm_drv
,
185 #if defined(OTM1282A_HD720_DSI_VDO)
186 &otm1282a_hd720_dsi_vdo_lcm_drv
,
189 #if defined(R63311_FHD_DSI_VDO)
190 &r63311_fhd_dsi_vedio_lcm_drv
,
192 #if defined(NT35517_QHD_DSI_VDO)
193 &nt35517_dsi_vdo_lcm_drv
,
197 #if defined(LP079X01)
205 #if defined(HX8369_6575)
206 &hx8369_6575_lcm_drv
,
213 #if defined(NT35582_MCU)
214 &nt35582_mcu_lcm_drv
,
217 #if defined(NT35582_MCU_6575)
218 &nt35582_mcu_6575_lcm_drv
,
221 #if defined(NT35590_HD720_DSI_CMD_TRULY2)
222 &nt35590_hd720_dsi_cmd_truly2_lcm_drv
,
225 #if defined(NT35590_HD720_DSI_VDO_TRULY)
226 &nt35590_hd720_dsi_vdo_truly_lcm_drv
,
229 #if defined(SSD2075_HD720_DSI_VDO_TRULY)
230 &ssd2075_hd720_dsi_vdo_truly_lcm_drv
,
233 #if defined(NT35590_HD720_DSI_CMD)
234 &nt35590_hd720_dsi_cmd_drv
,
237 #if defined(NT35590_HD720_DSI_CMD_AUO)
238 &nt35590_hd720_dsi_cmd_auo_lcm_drv
,
241 #if defined(NT35590_HD720_DSI_CMD_AUO_WVGA)
242 &nt35590_hd720_dsi_cmd_auo_wvga_lcm_drv
,
245 #if defined(NT35590_HD720_DSI_CMD_AUO_QHD)
246 &nt35590_hd720_dsi_cmd_auo_qhd_lcm_drv
,
249 #if defined(NT35590_HD720_DSI_CMD_AUO_FWVGA)
250 &nt35590_hd720_dsi_cmd_auo_fwvga_lcm_drv
,
253 #if defined(NT35590_HD720_DSI_CMD_CMI)
254 &nt35590_hd720_dsi_cmd_cmi_lcm_drv
,
257 #if defined(NT35582_RGB_6575)
258 &nt35582_rgb_6575_lcm_drv
,
261 #if defined(NT51012_HD720_DSI_VDO)
262 &nt51012_hd720_dsi_vdo_lcm_drv
,
265 #if defined(HX8369_RGB_6585_FPGA)
266 &hx8369_rgb_6585_fpga_lcm_drv
,
269 #if defined(HX8369_RGB_6572_FPGA)
270 &hx8369_rgb_6572_fpga_lcm_drv
,
273 #if defined(HX8369_MCU_6572)
274 &hx8369_mcu_6572_lcm_drv
,
277 #if defined(HX8369A_WVGA_DSI_CMD)
278 &hx8369a_wvga_dsi_cmd_drv
,
281 #if defined(HX8369A_WVGA_DSI_VDO)
282 &hx8369a_wvga_dsi_vdo_drv
,
289 #if defined(HX8357C_HVGA_DSI_CMD)
290 &hx8357c_hvga_dsi_cmd_drv
,
297 #if defined(R61408_WVGA_DSI_CMD)
298 &r61408_wvga_dsi_cmd_drv
,
301 #if defined(HX8369_DSI_VDO)
302 &hx8369_dsi_vdo_lcm_drv
,
305 #if defined(HX8369_DSI)
309 #if defined(HX8369_6575_DSI)
310 &hx8369_dsi_6575_lcm_drv
,
313 #if defined(HX8369_6575_DSI_NFC_ZTE)
314 &hx8369_dsi_6575_lcm_drv
,
317 #if defined(HX8369_6575_DSI_HVGA)
318 &hx8369_dsi_6575_hvga_lcm_drv
,
321 #if defined(HX8369_6575_DSI_QVGA)
322 &hx8369_dsi_6575_qvga_lcm_drv
,
325 #if defined(HX8369_HVGA)
326 &hx8369_hvga_lcm_drv
,
333 #if defined(NT35510_RGB_6575)
334 &nt35510_dpi_lcm_drv
,
337 #if defined(NT35510_HVGA)
338 &nt35510_hvga_lcm_drv
,
341 #if defined(NT35510_QVGA)
342 &nt35510_qvga_lcm_drv
,
345 #if defined(NT35510_WVGA_DSI_CMD)
346 &nt35510_wvga_dsi_cmd_drv
,
349 #if defined(NT35510_6517)
350 &nt35510_6517_lcm_drv
,
353 #if defined(NT35510_DSI_CMD_6572)
354 &nt35510_dsi_cmd_6572_drv
,
357 #if defined(NT35510_DSI_CMD_6572_HVGA)
358 &nt35510_dsi_cmd_6572_hvga_drv
,
361 #if defined(NT35510_DSI_CMD_6572_FWVGA)
362 &nt35510_dsi_cmd_6572_fwvga_drv
,
365 #if defined(NT35510_DSI_CMD_6572_QVGA)
366 &nt35510_dsi_cmd_6572_qvga_drv
,
369 #if defined(NT35510_DSI_VDO_6572)
370 &nt35510_dsi_vdo_6572_drv
,
373 #if defined(NT35510_DPI_6572)
374 &nt35510_dpi_6572_lcm_drv
,
377 #if defined(NT35510_MCU_6572)
378 &nt35510_mcu_6572_lcm_drv
,
393 #if defined(SPFD5461A)
401 #if defined(TFT1P3037)
409 #if defined(HSD070IDW1)
413 #if defined(HX8363_6575_DSI)
414 &hx8363_6575_dsi_lcm_drv
,
417 #if defined(HX8363_6575_DSI_HVGA)
418 &hx8363_6575_dsi_hvga_lcm_drv
,
421 #if defined(HX8363B_WVGA_DSI_CMD)
422 &hx8363b_wvga_dsi_cmd_drv
,
429 #if defined(LG4573B_WVGA_DSI_VDO_LH430MV1)
430 &lg4573b_wvga_dsi_vdo_lh430mv1_drv
,
433 #if defined(LVDS_WSVGA)
437 #if defined(LVDS_WSVGA_TI)
438 &lvds_wsvga_ti_lcm_drv
,
441 #if defined(LVDS_WSVGA_TI_N)
442 &lvds_wsvga_ti_n_lcm_drv
,
445 #if defined(NT35565_3D)
449 #if defined(TM070DDH03)
452 #if defined(R63303_IDISPLAY)
453 &r63303_idisplay_lcm_drv
,
456 #if defined(HX8369B_DSI_VDO)
457 &hx8369b_dsi_vdo_lcm_drv
,
460 #if defined(HX8369B_WVGA_DSI_VDO)
461 &hx8369b_wvga_dsi_vdo_drv
,
464 #if defined(HX8369B_QHD_DSI_VDO)
465 &hx8389b_qhd_dsi_vdo_drv
,
468 #if defined(GN_SSD2825_SMD_S6E8AA)
469 &gn_ssd2825_smd_s6e8aa
,
471 #if defined(HX8369_TM_DSI)
472 &hx8369_dsi_tm_lcm_drv
,
475 #if defined(HX8369_BLD_DSI)
476 &hx8369_dsi_bld_lcm_drv
,
483 #if defined(HJ101NA02A)
487 #if defined(HJ101NA02A_8135)
488 &hj101na02a_8135_lcm_drv
,
491 #if defined(HSD070PFW3)
495 #if defined(HSD070PFW3_8135)
496 &hsd070pfw3_8135_lcm_drv
,
503 #if defined(SCF0700M48GGU02)
504 &scf0700m48ggu02_lcm_drv
,
507 #if defined(OTM1280A_HD720_DSI_CMD)
508 &otm1280a_hd720_dsi_cmd_drv
,
511 #if defined(OTM8018B_DSI_VDO)
512 &otm8018b_dsi_vdo_lcm_drv
,
515 #if defined(NT35512_DSI_VDO)
516 &nt35512_dsi_vdo_lcm_drv
,
519 #if defined(NT35512_WVGA_DSI_VDO_BOE)
520 &nt35512_wvga_dsi_vdo_boe_drv
,
523 #if defined(HX8392A_DSI_CMD)
524 &hx8392a_dsi_cmd_lcm_drv
,
527 #if defined(NT35516_QHD_DSI_CMD_IPSBOE)
528 &nt35516_qhd_dsi_cmd_ipsboe_lcm_drv
,
531 #if defined(NT35516_QHD_DSI_CMD_IPSBOE_WVGA)
532 &nt35516_qhd_dsi_cmd_ipsboe_wvga_lcm_drv
,
535 #if defined(NT35516_QHD_DSI_CMD_IPSBOE_FWVGA)
536 &nt35516_qhd_dsi_cmd_ipsboe_fwvga_lcm_drv
,
539 #if defined(NT35516_QHD_DSI_CMD_IPS9K1431)
540 &nt35516_qhd_dsi_cmd_ips9k1431_drv
,
543 #if defined(NT35516_QHD_DSI_CMD_TFT9K1342)
544 &nt35516_qhd_dsi_cmd_tft9k1342_drv
,
547 #if defined(NT35516_QHD_DSI_VEDIO)
548 &nt35516_qhd_rav4_lcm_drv
,
551 #if defined(BP070WS1)
555 #if defined(BP101WX1)
559 #if defined(BP101WX1_N)
563 #if defined(CM_N070ICE_DSI_VDO)
564 &cm_n070ice_dsi_vdo_lcm_drv
,
567 #if defined(CM_OTC3108BH161_DSI_VDO)
568 &cm_otc3108bhv161_dsi_vdo_lcm_drv
,
570 #if defined(NT35510_FWVGA)
571 &nt35510_fwvga_lcm_drv
,
574 #if defined(R63311_FHD_DSI_VDO_SHARP)
575 &r63311_fhd_dsi_vdo_sharp_lcm_drv
,
578 #if defined(R81592_HVGA_DSI_CMD)
579 &r81592_hvga_dsi_cmd_drv
,
582 #if defined(RM68190_QHD_DSI_VDO)
583 &rm68190_dsi_vdo_lcm_drv
,
586 #if defined(NT35596_FHD_DSI_VDO_TRULY)
587 &nt35596_fhd_dsi_vdo_truly_lcm_drv
,
590 #if defined(NT35595_FHD_DSI_VDO_TRULY)
591 &nt35595_fhd_dsi_vdo_truly_lcm_drv
,
594 #if defined(R63319_WQHD_DSI_VDO_TRULY)
595 &r63319_wqhd_dsi_vdo_truly_lcm_drv
,
599 #if defined(NT35598_WQHD_DSI_VDO_TRULY)
600 &nt35598_wqhd_dsi_vdo_truly_lcm_drv
,
603 #if defined(NT35595_FHD_DSI_CMD_TRULY_TPS65132)
604 &nt35595_fhd_dsi_cmd_truly_tps65132_lcm_drv
,
607 #if defined(NT35595_FHD_DSI_CMD_TRULY_TPS65132_720P)
608 &nt35595_fhd_dsi_cmd_truly_tps65132_720p_lcm_drv
,
611 #if defined(NT35595_FHD_DSI_CMD_TRULY)
612 &nt35595_fhd_dsi_cmd_truly_lcm_drv
,
616 #if defined(NT35596_FHD_DSI_VDO_YASSY)
617 &nt35596_fhd_dsi_vdo_yassy_lcm_drv
,
620 #if defined(AUO_B079XAT02_DSI_VDO)
621 &auo_b079xat02_dsi_vdo_lcm_drv
,
623 #if defined(OTM9608_WVGA_DSI_CMD)
624 &otm9608_wvga_dsi_cmd_drv
,
627 #if defined(NT35510_DBI_18BIT_GIONEE)
628 &nt35510_dbi_18bit_gionee_lcm_drv
,
631 #if defined(OTM8009A_FWVGA_DSI_CMD_TIANMA)
632 &otm8009a_fwvga_dsi_cmd_tianma_lcm_drv
,
635 #if defined(OTM8009A_FWVGA_DSI_VDO_TIANMA)
636 &otm8009a_fwvga_dsi_vdo_tianma_lcm_drv
,
639 #if defined(HX8389B_QHD_DSI_VDO_TIANMA)
640 &hx8389b_qhd_dsi_vdo_tianma_lcm_drv
,
642 #if defined(HX8389B_QHD_DSI_VDO_TIANMA055XDHP)
643 &hx8389b_qhd_dsi_vdo_tianma055xdhp_lcm_drv
,
646 #if defined(CPT_CLAA101FP01_DSI_VDO)
647 &cpt_claa101fp01_dsi_vdo_lcm_drv
,
650 #if defined(IT6151_EDP_DSI_VIDEO_SHARP)
651 &it6151_edp_dsi_video_sharp_lcm_drv
,
654 #if defined(CPT_CLAP070WP03XG_SN65DSI83)
655 &cpt_clap070wp03xg_sn65dsi83_lcm_drv
,
657 #if defined(NT35520_HD720_DSI_CMD_TM)
658 &nt35520_hd720_tm_lcm_drv
,
660 #if defined(NT35520_HD720_DSI_CMD_BOE)
661 &nt35520_hd720_boe_lcm_drv
,
663 #if defined(NT35521_HD720_DSI_VDO_BOE)
664 &nt35521_hd720_dsi_vdo_boe_lcm_drv
,
666 #if defined(NT35521_HD720_DSI_VIDEO_TM)
667 &nt35521_hd720_tm_lcm_drv
,
669 #if defined(H070D_18DM)
672 #if defined(R69429_WUXGA_DSI_VDO)
673 &r69429_wuxga_dsi_vdo_lcm_drv
,
677 #if defined(HX8394A_HD720_DSI_VDO_TIANMA)
678 &hx8394a_hd720_dsi_vdo_tianma_lcm_drv
,
681 #if defined(R69429_WUXGA_DSI_CMD)
682 &r69429_wuxga_dsi_cmd_lcm_drv
,
685 #if defined(RM68210_HD720_DSI_UFOE_CMD)
686 &rm68210_hd720_dsi_ufoe_cmd_lcm_drv
,
689 #if defined(CPT_CLAP070WP03XG_LVDS)
690 &cpt_clap070wp03xg_lvds_lcm_drv
,
693 #if defined(OTM8018B_DSI_VDO_LCSH72)
694 &otm8018b_dsi_vdo_lcsh72_lcm_drv
,
697 #if defined(HX8369_DSI_CMD_6571)
698 &hx8369_dsi_cmd_6571_lcm_drv
,
701 #if defined(HX8369_DSI_VDO_6571)
702 &hx8369_dsi_vdo_6571_lcm_drv
,
705 #if defined(HX8369_DBI_6571)
706 &hx8369_dbi_6571_lcm_drv
,
709 #if defined(HX8369_DPI_6571)
710 &hx8369_dpi_6571_lcm_drv
,
713 #if defined(HX8389B_QHD_DSI_VDO_LGD)
714 &hx8389b_qhd_dsi_vdo_lgd_lcm_drv
,
717 #if defined(NT35510_DSI_CMD_6571)
718 &nt35510_dsi_cmd_6571_lcm_drv
,
721 #if defined(NT35510_DSI_CMD_6571_HVGA)
722 &nt35510_dsi_cmd_6571_hvga_lcm_drv
,
725 #if defined(NT35510_DSI_CMD_6571_QVGA)
726 &nt35510_dsi_cmd_6571_qvga_lcm_drv
,
729 #if defined(NT35510_DSI_VDO_6571)
730 &nt35510_dsi_vdo_6571_lcm_drv
,
733 #if defined(NT35510_DBI_6571)
734 &nt35510_dbi_6571_lcm_drv
,
737 #if defined(NT35510_DPI_6571)
738 &nt35510_dpi_6571_lcm_drv
,
741 #if defined(NT35590_DSI_CMD_6571_FWVGA)
742 &nt35590_dsi_cmd_6571_fwvga_lcm_drv
,
745 #if defined(NT35590_DSI_CMD_6571_QHD)
746 &nt35590_dsi_cmd_6571_qhd_lcm_drv
,
749 #if defined(NT35517_QHD_DSI_VIDEO)
750 &nt35517_qhd_dsi_vdo_lcm_drv
,
753 #if defined(IT6151_FHD_EDP_DSI_VIDEO_AUO)
754 &it6151_fhd_edp_dsi_video_auo_lcm_drv
,
757 #if defined(A080EAN01_DSI_VDO)
758 &a080ean01_dsi_vdo_lcm_drv
,
762 #define LCM_COMPILE_ASSERT(condition) LCM_COMPILE_ASSERT_X(condition, __LINE__)
763 #define LCM_COMPILE_ASSERT_X(condition, line) LCM_COMPILE_ASSERT_XX(condition, line)
764 #define LCM_COMPILE_ASSERT_XX(condition, line) char assertion_failed_at_line_##line[(condition)?1:-1]
766 unsigned int lcm_count
= sizeof(lcm_driver_list
)/sizeof(LCM_DRIVER
*);
767 /*LCM_COMPILE_ASSERT(0 != sizeof(lcm_driver_list)/sizeof(LCM_DRIVER*));*/
768 #if defined(NT35520_HD720_DSI_CMD_TM) | defined(NT35520_HD720_DSI_CMD_BOE) | defined(NT35521_HD720_DSI_VDO_BOE) | defined(NT35521_HD720_DSI_VIDEO_TM)
770 extern void mdelay(unsigned long msec
);
772 static unsigned char lcd_id_pins_value
= 0xFF;
775 /******************************************************************************
776 Function: which_lcd_module_triple
777 Description: read LCD ID PIN status,could identify three status:high¡¢low¡¢float
780 Return: LCD ID1|ID0 value
782 ******************************************************************************/
783 unsigned char which_lcd_module_triple(void)
785 unsigned char high_read0
= 0;
786 unsigned char low_read0
= 0;
787 unsigned char high_read1
= 0;
788 unsigned char low_read1
= 0;
789 unsigned char lcd_id0
= 0;
790 unsigned char lcd_id1
= 0;
791 unsigned char lcd_id
= 0;
792 //Solve Coverity scan warning : check return value
793 unsigned int ret
= 0;
794 //only recognise once
795 if(0xFF != lcd_id_pins_value
)
797 return lcd_id_pins_value
;
799 //Solve Coverity scan warning : check return value
800 ret
= mt_set_gpio_mode(GPIO_DISP_ID0_PIN
, GPIO_MODE_00
);
803 LCD_DEBUG("ID0 mt_set_gpio_mode fail\n");
805 ret
= mt_set_gpio_dir(GPIO_DISP_ID0_PIN
, GPIO_DIR_IN
);
808 LCD_DEBUG("ID0 mt_set_gpio_dir fail\n");
810 ret
= mt_set_gpio_pull_enable(GPIO_DISP_ID0_PIN
, GPIO_PULL_ENABLE
);
813 LCD_DEBUG("ID0 mt_set_gpio_pull_enable fail\n");
815 ret
= mt_set_gpio_mode(GPIO_DISP_ID1_PIN
, GPIO_MODE_00
);
818 LCD_DEBUG("ID1 mt_set_gpio_mode fail\n");
820 ret
= mt_set_gpio_dir(GPIO_DISP_ID1_PIN
, GPIO_DIR_IN
);
823 LCD_DEBUG("ID1 mt_set_gpio_dir fail\n");
825 ret
= mt_set_gpio_pull_enable(GPIO_DISP_ID1_PIN
, GPIO_PULL_ENABLE
);
828 LCD_DEBUG("ID1 mt_set_gpio_pull_enable fail\n");
830 //pull down ID0 ID1 PIN
831 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID0_PIN
,GPIO_PULL_DOWN
);
834 LCD_DEBUG("ID0 mt_set_gpio_pull_select->Down fail\n");
836 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID1_PIN
,GPIO_PULL_DOWN
);
839 LCD_DEBUG("ID1 mt_set_gpio_pull_select->Down fail\n");
841 //delay 100ms , for discharging capacitance
844 low_read0
= mt_get_gpio_in(GPIO_DISP_ID0_PIN
);
845 low_read1
= mt_get_gpio_in(GPIO_DISP_ID1_PIN
);
846 //pull up ID0 ID1 PIN
847 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID0_PIN
,GPIO_PULL_UP
);
850 LCD_DEBUG("ID0 mt_set_gpio_pull_select->UP fail\n");
852 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID1_PIN
,GPIO_PULL_UP
);
855 LCD_DEBUG("ID1 mt_set_gpio_pull_select->UP fail\n");
857 //delay 100ms , for charging capacitance
860 high_read0
= mt_get_gpio_in(GPIO_DISP_ID0_PIN
);
861 high_read1
= mt_get_gpio_in(GPIO_DISP_ID1_PIN
);
863 if( low_read0
!= high_read0
)
865 /*float status , pull down ID0 ,to prevent electric leakage*/
866 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID0_PIN
,GPIO_PULL_DOWN
);
869 LCD_DEBUG("ID0 mt_set_gpio_pull_select->Down fail\n");
871 lcd_id0
= LCD_HW_ID_STATUS_FLOAT
;
873 else if((LCD_HW_ID_STATUS_LOW
== low_read0
) && (LCD_HW_ID_STATUS_LOW
== high_read0
))
875 /*low status , pull down ID0 ,to prevent electric leakage*/
876 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID0_PIN
,GPIO_PULL_DOWN
);
879 LCD_DEBUG("ID0 mt_set_gpio_pull_select->Down fail\n");
881 lcd_id0
= LCD_HW_ID_STATUS_LOW
;
883 else if((LCD_HW_ID_STATUS_HIGH
== low_read0
) && (LCD_HW_ID_STATUS_HIGH
== high_read0
))
885 /*high status , pull up ID0 ,to prevent electric leakage*/
886 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID0_PIN
,GPIO_PULL_UP
);
889 LCD_DEBUG("ID0 mt_set_gpio_pull_select->UP fail\n");
891 lcd_id0
= LCD_HW_ID_STATUS_HIGH
;
895 LCD_DEBUG(" Read LCD_id0 error\n");
896 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID0_PIN
,GPIO_PULL_DISABLE
);
899 LCD_DEBUG("ID0 mt_set_gpio_pull_select->Disbale fail\n");
901 lcd_id0
= LCD_HW_ID_STATUS_ERROR
;
905 if( low_read1
!= high_read1
)
907 /*float status , pull down ID1 ,to prevent electric leakage*/
908 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID1_PIN
,GPIO_PULL_DOWN
);
911 LCD_DEBUG("ID1 mt_set_gpio_pull_select->Down fail\n");
913 lcd_id1
= LCD_HW_ID_STATUS_FLOAT
;
915 else if((LCD_HW_ID_STATUS_LOW
== low_read1
) && (LCD_HW_ID_STATUS_LOW
== high_read1
))
917 /*low status , pull down ID1 ,to prevent electric leakage*/
918 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID1_PIN
,GPIO_PULL_DOWN
);
921 LCD_DEBUG("ID1 mt_set_gpio_pull_select->Down fail\n");
923 lcd_id1
= LCD_HW_ID_STATUS_LOW
;
925 else if((LCD_HW_ID_STATUS_HIGH
== low_read1
) && (LCD_HW_ID_STATUS_HIGH
== high_read1
))
927 /*high status , pull up ID1 ,to prevent electric leakage*/
928 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID1_PIN
,GPIO_PULL_UP
);
931 LCD_DEBUG("ID1 mt_set_gpio_pull_select->UP fail\n");
933 lcd_id1
= LCD_HW_ID_STATUS_HIGH
;
938 LCD_DEBUG(" Read LCD_id1 error\n");
939 ret
= mt_set_gpio_pull_select(GPIO_DISP_ID1_PIN
,GPIO_PULL_DISABLE
);
942 LCD_DEBUG("ID1 mt_set_gpio_pull_select->Disable fail\n");
944 lcd_id1
= LCD_HW_ID_STATUS_ERROR
;
947 dprintf(CRITICAL
,"which_lcd_module_triple,lcd_id0:%d\n",lcd_id0
);
948 dprintf(CRITICAL
,"which_lcd_module_triple,lcd_id1:%d\n",lcd_id1
);
950 printk("which_lcd_module_triple,lcd_id0:%d\n",lcd_id0
);
951 printk("which_lcd_module_triple,lcd_id1:%d\n",lcd_id1
);
953 lcd_id
= lcd_id0
| (lcd_id1
<< 2);
956 dprintf(CRITICAL
,"which_lcd_module_triple,lcd_id:%d\n",lcd_id
);
958 printk("which_lcd_module_triple,lcd_id:%d\n",lcd_id
);
961 lcd_id_pins_value
= lcd_id
;