blob: d2aeccc73dd427a62f83b9e98152a9c15f805dc6 [file] [log] [blame]
Dhaval Patelb95039c2015-03-16 11:14:06 -07001/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions
5 * are met:
6 * * Redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer.
8 * * Redistributions in binary form must reproduce the above copyright
9 * notice, this list of conditions and the following disclaimer in
10 * the documentation and/or other materials provided with the
11 * distribution.
12 * * Neither the name of The Linux Foundation nor the names of its
13 * contributors may be used to endorse or promote products derived
14 * from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
19 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
20 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
22 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
23 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
26 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
30#include <debug.h>
31#include <string.h>
32#include <err.h>
33#include <smem.h>
34#include <msm_panel.h>
35#include <board.h>
36#include <mipi_dsi.h>
37#include <qtimer.h>
38#include <platform.h>
39
40#include "include/panel.h"
41#include "target/display.h"
42#include "panel_display.h"
43#include <mipi_dsi.h>
Kuogee Hsieh0b492c92015-07-08 13:02:36 -070044#include <mdp5.h>
Dhaval Patelb95039c2015-03-16 11:14:06 -070045
46/*---------------------------------------------------------------------------*/
47/* GCDB Panel Database */
48/*---------------------------------------------------------------------------*/
Dhaval Patel989d4fc2015-04-01 19:04:46 -070049#include "include/panel_nt35597_wqxga_dualdsi_video.h"
Kuogee Hsieh9d7e7142015-06-16 10:36:19 -070050#include "include/panel_nt35597_wqxga_dualdsi_cmd.h"
Kuogee Hsieh0b492c92015-07-08 13:02:36 -070051#include "include/panel_nt35597_wqxga_dsc_video.h"
52#include "include/panel_nt35597_wqxga_dsc_cmd.h"
Dhaval Patelb95039c2015-03-16 11:14:06 -070053#include "include/panel_sharp_wqxga_dualdsi_video.h"
54#include "include/panel_jdi_qhd_dualdsi_video.h"
55#include "include/panel_jdi_qhd_dualdsi_cmd.h"
feifanz76fe6482015-09-02 15:25:16 +080056#include "include/panel_r69007_wqxga_cmd.h"
Kuogee Hsiehb976dfc2015-08-28 13:21:30 -070057#include "include/panel_jdi_4k_dualdsi_video_nofbc.h"
Dhaval Patelb95039c2015-03-16 11:14:06 -070058
59/*---------------------------------------------------------------------------*/
60/* static panel selection variable */
61/*---------------------------------------------------------------------------*/
62enum {
Kuogee Hsieh0b492c92015-07-08 13:02:36 -070063 SHARP_WQXGA_DUALDSI_VIDEO_PANEL,
Dhaval Patel989d4fc2015-04-01 19:04:46 -070064 NT35597_WQXGA_DUALDSI_VIDEO_PANEL,
Kuogee Hsieh9d7e7142015-06-16 10:36:19 -070065 NT35597_WQXGA_DUALDSI_CMD_PANEL,
Kuogee Hsieh0b492c92015-07-08 13:02:36 -070066 NT35597_WQXGA_DSC_VIDEO_PANEL,
67 NT35597_WQXGA_DSC_CMD_PANEL,
Dhaval Patelb95039c2015-03-16 11:14:06 -070068 JDI_QHD_DUALDSI_VIDEO_PANEL,
69 JDI_QHD_DUALDSI_CMD_PANEL,
feifanz76fe6482015-09-02 15:25:16 +080070 R69007_WQXGA_CMD_PANEL,
Kuogee Hsiehb976dfc2015-08-28 13:21:30 -070071 JDI_4K_DUALDSI_VIDEO_NOFBC_PANEL,
Dhaval Patelb95039c2015-03-16 11:14:06 -070072 UNKNOWN_PANEL
73};
74
75/*
76 * The list of panels that are supported on this target.
77 * Any panel in this list can be selected using fastboot oem command.
78 */
79static struct panel_list supp_panels[] = {
Kuogee Hsieh0b492c92015-07-08 13:02:36 -070080 {"sharp_wqxga_dualdsi_video", SHARP_WQXGA_DUALDSI_VIDEO_PANEL},
Dhaval Patel989d4fc2015-04-01 19:04:46 -070081 {"nt35597_wqxga_dualdsi_video", NT35597_WQXGA_DUALDSI_VIDEO_PANEL},
Kuogee Hsieh9d7e7142015-06-16 10:36:19 -070082 {"nt35597_wqxga_dualdsi_cmd", NT35597_WQXGA_DUALDSI_CMD_PANEL},
Kuogee Hsieh0b492c92015-07-08 13:02:36 -070083 {"nt35597_wqxga_dsc_video", NT35597_WQXGA_DSC_VIDEO_PANEL},
84 {"nt35597_wqxga_dsc_cmd", NT35597_WQXGA_DSC_CMD_PANEL},
Dhaval Patelb95039c2015-03-16 11:14:06 -070085 {"jdi_qhd_dualdsi_video", JDI_QHD_DUALDSI_VIDEO_PANEL},
86 {"jdi_qhd_dualdsi_cmd", JDI_QHD_DUALDSI_CMD_PANEL},
feifanz76fe6482015-09-02 15:25:16 +080087 {"r69007_wqxga_cmd", R69007_WQXGA_CMD_PANEL},
Kuogee Hsiehb976dfc2015-08-28 13:21:30 -070088 {"jdi_4k_dualdsi_video_nofbc", JDI_4K_DUALDSI_VIDEO_NOFBC_PANEL},
Dhaval Patelb95039c2015-03-16 11:14:06 -070089};
90
91static uint32_t panel_id;
92
93int oem_panel_rotation()
94{
95 return NO_ERROR;
96}
97
98int oem_panel_on()
99{
100 if (panel_id == JDI_QHD_DUALDSI_CMD_PANEL) {
101 /* needs extra delay to avoid unexpected artifacts */
102 mdelay(JDI_QHD_DUALDSI_CMD_PANEL_ON_DELAY);
103
104 }
105 return NO_ERROR;
106}
107
108int oem_panel_off()
109{
110 return NO_ERROR;
111}
112
113static bool init_panel_data(struct panel_struct *panelstruct,
114 struct msm_panel_info *pinfo,
115 struct mdss_dsi_phy_ctrl *phy_db)
116{
117 int pan_type;
118
119 switch (panel_id) {
120 case SHARP_WQXGA_DUALDSI_VIDEO_PANEL:
121 pan_type = PANEL_TYPE_DSI;
122 pinfo->lcd_reg_en = 0;
123 panelstruct->paneldata = &sharp_wqxga_dualdsi_video_panel_data;
Dhaval Patelb95039c2015-03-16 11:14:06 -0700124 panelstruct->paneldata->panel_operating_mode = 11;
125 panelstruct->paneldata->panel_with_enable_gpio = 0;
126
127 panelstruct->panelres = &sharp_wqxga_dualdsi_video_panel_res;
128 panelstruct->color = &sharp_wqxga_dualdsi_video_color;
129 panelstruct->videopanel = &sharp_wqxga_dualdsi_video_video_panel;
130 panelstruct->commandpanel = &sharp_wqxga_dualdsi_video_command_panel;
131 panelstruct->state = &sharp_wqxga_dualdsi_video_state;
132 panelstruct->laneconfig = &sharp_wqxga_dualdsi_video_lane_config;
133 panelstruct->paneltiminginfo
134 = &sharp_wqxga_dualdsi_video_timing_info;
135 panelstruct->panelresetseq
136 = &sharp_wqxga_dualdsi_video_reset_seq;
137 panelstruct->backlightinfo = &sharp_wqxga_dualdsi_video_backlight;
138
139 pinfo->labibb = &sharp_wqxga_dualdsi_video_labibb;
140
141 pinfo->mipi.panel_on_cmds
142 = sharp_wqxga_dualdsi_video_on_command;
143 pinfo->mipi.num_of_panel_on_cmds
144 = SHARP_WQXGA_DUALDSI_VIDEO_ON_COMMAND;
145 pinfo->mipi.panel_off_cmds
146 = sharp_wqxga_dualdsi_video_off_command;
147 pinfo->mipi.num_of_panel_off_cmds
148 = SHARP_WQXGA_DUALDSI_VIDEO_OFF_COMMAND;
149 memcpy(phy_db->timing,
150 sharp_wqxga_dualdsi_thulium_video_timings,
151 MAX_TIMING_CONFIG * sizeof(uint32_t));
152 pinfo->mipi.tx_eot_append = true;
153 break;
Dhaval Patel989d4fc2015-04-01 19:04:46 -0700154 case NT35597_WQXGA_DUALDSI_VIDEO_PANEL:
155 pan_type = PANEL_TYPE_DSI;
156 pinfo->lcd_reg_en = 0;
157 panelstruct->paneldata = &nt35597_wqxga_dualdsi_video_panel_data;
Dhaval Patel989d4fc2015-04-01 19:04:46 -0700158 panelstruct->panelres = &nt35597_wqxga_dualdsi_video_panel_res;
159 panelstruct->color = &nt35597_wqxga_dualdsi_video_color;
160 panelstruct->videopanel = &nt35597_wqxga_dualdsi_video_video_panel;
161 panelstruct->commandpanel = &nt35597_wqxga_dualdsi_video_command_panel;
162 panelstruct->state = &nt35597_wqxga_dualdsi_video_state;
163 panelstruct->laneconfig = &nt35597_wqxga_dualdsi_video_lane_config;
164 panelstruct->paneltiminginfo
165 = &nt35597_wqxga_dualdsi_video_timing_info;
166 panelstruct->panelresetseq
167 = &nt35597_wqxga_dualdsi_video_reset_seq;
168 panelstruct->backlightinfo = &nt35597_wqxga_dualdsi_video_backlight;
169
170 pinfo->labibb = &nt35597_wqxga_dualdsi_video_labibb;
171
172 pinfo->mipi.panel_on_cmds
173 = nt35597_wqxga_dualdsi_video_on_command;
174 pinfo->mipi.num_of_panel_on_cmds
175 = NT35597_WQXGA_DUALDSI_VIDEO_ON_COMMAND;
176 pinfo->mipi.panel_off_cmds
177 = nt35597_wqxga_dualdsi_video_off_command;
178 pinfo->mipi.num_of_panel_off_cmds
179 = NT35597_WQXGA_DUALDSI_VIDEO_OFF_COMMAND;
180 memcpy(phy_db->timing,
181 nt35597_wqxga_dualdsi_thulium_video_timings,
182 MAX_TIMING_CONFIG * sizeof(uint32_t));
183 pinfo->mipi.tx_eot_append = true;
184 break;
Kuogee Hsieh9d7e7142015-06-16 10:36:19 -0700185 case NT35597_WQXGA_DUALDSI_CMD_PANEL:
186 pan_type = PANEL_TYPE_DSI;
187 pinfo->lcd_reg_en = 0;
188 panelstruct->paneldata = &nt35597_wqxga_dualdsi_cmd_panel_data;
189 panelstruct->panelres = &nt35597_wqxga_dualdsi_cmd_panel_res;
190 panelstruct->color = &nt35597_wqxga_dualdsi_cmd_color;
191 panelstruct->videopanel = &nt35597_wqxga_dualdsi_cmd_video_panel;
192 panelstruct->commandpanel = &nt35597_wqxga_dualdsi_cmd_command_panel;
193 panelstruct->state = &nt35597_wqxga_dualdsi_cmd_state;
194 panelstruct->laneconfig = &nt35597_wqxga_dualdsi_cmd_lane_config;
195 panelstruct->paneltiminginfo
196 = &nt35597_wqxga_dualdsi_cmd_timing_info;
197 panelstruct->panelresetseq
198 = &nt35597_wqxga_dualdsi_cmd_reset_seq;
199 panelstruct->backlightinfo = &nt35597_wqxga_dualdsi_cmd_backlight;
200
201 pinfo->labibb = &nt35597_wqxga_dualdsi_cmd_labibb;
202
203 pinfo->mipi.panel_on_cmds
204 = nt35597_wqxga_dualdsi_cmd_on_command;
205 pinfo->mipi.num_of_panel_on_cmds
206 = NT35597_WQXGA_DUALDSI_CMD_ON_COMMAND;
207 pinfo->mipi.panel_off_cmds
208 = nt35597_wqxga_dualdsi_cmd_off_command;
209 pinfo->mipi.num_of_panel_off_cmds
210 = NT35597_WQXGA_DUALDSI_CMD_OFF_COMMAND;
211 memcpy(phy_db->timing,
212 nt35597_wqxga_dualdsi_thulium_cmd_timings,
213 MAX_TIMING_CONFIG * sizeof(uint32_t));
214 pinfo->mipi.tx_eot_append = true;
215 break;
Kuogee Hsieh0b492c92015-07-08 13:02:36 -0700216 case NT35597_WQXGA_DSC_VIDEO_PANEL:
217 pan_type = PANEL_TYPE_DSI;
218 pinfo->lcd_reg_en = 0;
219 panelstruct->paneldata = &nt35597_wqxga_dsc_video_panel_data;
220 panelstruct->panelres = &nt35597_wqxga_dsc_video_panel_res;
221 panelstruct->color = &nt35597_wqxga_dsc_video_color;
222 panelstruct->videopanel = &nt35597_wqxga_dsc_video_video_panel;
223 panelstruct->commandpanel = &nt35597_wqxga_dsc_video_command_panel;
224 panelstruct->state = &nt35597_wqxga_dsc_video_state;
225 panelstruct->laneconfig = &nt35597_wqxga_dsc_video_lane_config;
226 panelstruct->paneltiminginfo
227 = &nt35597_wqxga_dsc_video_timing_info;
228 panelstruct->panelresetseq
229 = &nt35597_wqxga_dsc_video_reset_seq;
230 panelstruct->backlightinfo = &nt35597_wqxga_dsc_video_backlight;
231
232 pinfo->labibb = &nt35597_wqxga_dsc_video_labibb;
233
234 pinfo->mipi.panel_on_cmds
235 = nt35597_wqxga_dsc_video_on_command;
236 pinfo->mipi.num_of_panel_on_cmds
237 = NT35597_WQXGA_DSC_VIDEO_ON_COMMAND;
238 pinfo->mipi.panel_off_cmds
239 = nt35597_wqxga_dsc_video_off_command;
240 pinfo->mipi.num_of_panel_off_cmds
241 = NT35597_WQXGA_DSC_VIDEO_OFF_COMMAND;
242 memcpy(phy_db->timing,
243 nt35597_wqxga_dsc_thulium_video_timings,
244 MAX_TIMING_CONFIG * sizeof(uint32_t));
245 pinfo->mipi.tx_eot_append = true;
246
247 pinfo->compression_mode = COMPRESSION_DSC;
248 memcpy(&panelstruct->dsc_paras, &nt35597_wqxga_dsc_video_paras,
249 sizeof(struct dsc_parameters));
250 pinfo->dsc.parameter_calc = mdss_dsc_parameters_calc;
251 pinfo->dsc.dsc2buf = mdss_dsc_to_buf;
252 pinfo->dsc.dsi_dsc_config = mdss_dsc_dsi_config;
253 pinfo->dsc.mdp_dsc_config = mdss_dsc_mdp_config;
254 break;
255 case NT35597_WQXGA_DSC_CMD_PANEL:
256 pan_type = PANEL_TYPE_DSI;
257 pinfo->lcd_reg_en = 0;
258 panelstruct->paneldata = &nt35597_wqxga_dsc_cmd_panel_data;
259 panelstruct->panelres = &nt35597_wqxga_dsc_cmd_panel_res;
260 panelstruct->color = &nt35597_wqxga_dsc_cmd_color;
261 panelstruct->videopanel = &nt35597_wqxga_dsc_cmd_video_panel;
262 panelstruct->commandpanel = &nt35597_wqxga_dsc_cmd_command_panel;
263 panelstruct->state = &nt35597_wqxga_dsc_cmd_state;
264 panelstruct->laneconfig = &nt35597_wqxga_dsc_cmd_lane_config;
265 panelstruct->paneltiminginfo
266 = &nt35597_wqxga_dsc_cmd_timing_info;
267 panelstruct->panelresetseq
268 = &nt35597_wqxga_dsc_cmd_reset_seq;
269 panelstruct->backlightinfo = &nt35597_wqxga_dsc_cmd_backlight;
270
271 pinfo->labibb = &nt35597_wqxga_dsc_cmd_labibb;
272
273 pinfo->mipi.panel_on_cmds
274 = nt35597_wqxga_dsc_cmd_on_command;
275 pinfo->mipi.num_of_panel_on_cmds
276 = NT35597_WQXGA_DSC_CMD_ON_COMMAND;
277 pinfo->mipi.panel_off_cmds
278 = nt35597_wqxga_dsc_cmd_off_command;
279 pinfo->mipi.num_of_panel_off_cmds
280 = NT35597_WQXGA_DSC_CMD_OFF_COMMAND;
281 memcpy(phy_db->timing,
282 nt35597_wqxga_dsc_thulium_cmd_timings,
283 MAX_TIMING_CONFIG * sizeof(uint32_t));
284 pinfo->mipi.tx_eot_append = true;
285
286 pinfo->compression_mode = COMPRESSION_DSC;
287 memcpy(&panelstruct->dsc_paras, &nt35597_wqxga_dsc_cmd_paras,
288 sizeof(struct dsc_parameters));
289 pinfo->dsc.parameter_calc = mdss_dsc_parameters_calc;
290 pinfo->dsc.dsc2buf = mdss_dsc_to_buf;
291 pinfo->dsc.dsi_dsc_config = mdss_dsc_dsi_config;
292 pinfo->dsc.mdp_dsc_config = mdss_dsc_mdp_config;
293 break;
Dhaval Patelb95039c2015-03-16 11:14:06 -0700294 case JDI_QHD_DUALDSI_VIDEO_PANEL:
295 pan_type = PANEL_TYPE_DSI;
296 pinfo->lcd_reg_en = 1;
Dhaval Patelb95039c2015-03-16 11:14:06 -0700297 panelstruct->paneldata = &jdi_qhd_dualdsi_video_panel_data;
298
299 panelstruct->panelres = &jdi_qhd_dualdsi_video_panel_res;
300 panelstruct->color = &jdi_qhd_dualdsi_video_color;
301 panelstruct->videopanel = &jdi_qhd_dualdsi_video_video_panel;
302 panelstruct->commandpanel = &jdi_qhd_dualdsi_video_command_panel;
303 panelstruct->state = &jdi_qhd_dualdsi_video_state;
304 panelstruct->laneconfig = &jdi_qhd_dualdsi_video_lane_config;
305 panelstruct->paneltiminginfo
306 = &jdi_qhd_dualdsi_video_timing_info;
307 panelstruct->panelresetseq
308 = &jdi_qhd_dualdsi_video_reset_seq;
309 panelstruct->backlightinfo = &jdi_qhd_dualdsi_video_backlight;
310 pinfo->mipi.panel_on_cmds
311 = jdi_qhd_dualdsi_video_on_command;
312 pinfo->mipi.num_of_panel_on_cmds
313 = JDI_QHD_DUALDSI_VIDEO_ON_COMMAND;
314 pinfo->mipi.panel_off_cmds
315 = jdi_qhd_dualdsi_video_off_command;
316 pinfo->mipi.num_of_panel_off_cmds
317 = JDI_QHD_DUALDSI_VIDEO_OFF_COMMAND;
318 memcpy(phy_db->timing,
319 jdi_qhd_dualdsi_thulium_cmd_timings,
320 MAX_TIMING_CONFIG * sizeof(uint32_t));
321 break;
322 case JDI_QHD_DUALDSI_CMD_PANEL:
323 pan_type = PANEL_TYPE_DSI;
324 pinfo->lcd_reg_en = 1;
325 panelstruct->paneldata = &jdi_qhd_dualdsi_cmd_panel_data;
Dhaval Patelb95039c2015-03-16 11:14:06 -0700326
327 panelstruct->panelres = &jdi_qhd_dualdsi_cmd_panel_res;
328 panelstruct->color = &jdi_qhd_dualdsi_cmd_color;
329 panelstruct->videopanel = &jdi_qhd_dualdsi_cmd_video_panel;
330 panelstruct->commandpanel = &jdi_qhd_dualdsi_cmd_command_panel;
331 panelstruct->state = &jdi_qhd_dualdsi_cmd_state;
332 panelstruct->laneconfig = &jdi_qhd_dualdsi_cmd_lane_config;
333 panelstruct->paneltiminginfo
334 = &jdi_qhd_dualdsi_cmd_timing_info;
335 panelstruct->panelresetseq
336 = &jdi_qhd_dualdsi_cmd_reset_seq;
337 panelstruct->backlightinfo = &jdi_qhd_dualdsi_cmd_backlight;
338 pinfo->mipi.panel_on_cmds
339 = jdi_qhd_dualdsi_cmd_on_command;
340 pinfo->mipi.num_of_panel_on_cmds
341 = JDI_QHD_DUALDSI_CMD_ON_COMMAND;
342 pinfo->mipi.panel_off_cmds
343 = jdi_qhd_dualdsi_cmd_off_command;
344 pinfo->mipi.num_of_panel_off_cmds
345 = JDI_QHD_DUALDSI_CMD_OFF_COMMAND;
346 memcpy(phy_db->timing,
347 jdi_qhd_dualdsi_thulium_video_timings,
348 MAX_TIMING_CONFIG * sizeof(uint32_t));
349 break;
feifanz76fe6482015-09-02 15:25:16 +0800350 case R69007_WQXGA_CMD_PANEL:
351 pan_type = PANEL_TYPE_DSI;
352 pinfo->lcd_reg_en = 0;
353 panelstruct->paneldata = &r69007_wqxga_cmd_panel_data;
354 panelstruct->panelres = &r69007_wqxga_cmd_panel_res;
355 panelstruct->color = &r69007_wqxga_cmd_color;
356 panelstruct->videopanel = &r69007_wqxga_cmd_video_panel;
357 panelstruct->commandpanel = &r69007_wqxga_cmd_command_panel;
358 panelstruct->state = &r69007_wqxga_cmd_state;
359 panelstruct->laneconfig = &r69007_wqxga_cmd_lane_config;
360 panelstruct->paneltiminginfo
361 = &r69007_wqxga_cmd_timing_info;
362 panelstruct->panelresetseq
363 = &r69007_wqxga_cmd_reset_seq;
364 panelstruct->backlightinfo = &r69007_wqxga_cmd_backlight;
365
366 pinfo->labibb = &r69007_wqxga_cmd_labibb;
367
368 pinfo->mipi.panel_on_cmds
369 = r69007_wqxga_cmd_on_command;
370 pinfo->mipi.num_of_panel_on_cmds
371 = R69007_WQXGA_CMD_ON_COMMAND;
372 pinfo->mipi.panel_off_cmds
373 = r69007_wqxga_cmd_off_command;
374 pinfo->mipi.num_of_panel_off_cmds
375 = R69007_WQXGA_CMD_OFF_COMMAND;
376 memcpy(phy_db->timing,
377 r69007_wqxga_thulium_cmd_timings,
378 MAX_TIMING_CONFIG * sizeof(uint32_t));
379 break;
Kuogee Hsiehb976dfc2015-08-28 13:21:30 -0700380 case JDI_4K_DUALDSI_VIDEO_NOFBC_PANEL:
381 pan_type = PANEL_TYPE_DSI;
382 /*
383 * send on_cmds at HS mode by setting cmds_post_tg so that
384 * on_cmds are sent after timing generator on
385 */
386 pinfo->mipi.cmds_post_tg = 1;
387 panelstruct->paneldata = &jdi_4k_dualdsi_video_nofbc_panel_data;
388
389 panelstruct->panelres = &jdi_4k_dualdsi_video_nofbc_panel_res;
390 panelstruct->color = &jdi_4k_dualdsi_video_nofbc_color;
391 panelstruct->videopanel = &jdi_4k_dualdsi_video_nofbc_video_panel;
392 panelstruct->commandpanel = &jdi_4k_dualdsi_video_nofbc_command_panel;
393 panelstruct->state = &jdi_4k_dualdsi_video_nofbc_state;
394 panelstruct->laneconfig = &jdi_4k_dualdsi_video_nofbc_lane_config;
395 panelstruct->paneltiminginfo
396 = &jdi_4k_dualdsi_video_nofbc_timing_info;
397 panelstruct->panelresetseq
398 = &jdi_4k_dualdsi_video_nofbc_reset_seq;
399 panelstruct->backlightinfo = &jdi_4k_dualdsi_video_nofbc_backlight;
400 pinfo->labibb = &jdi_4k_dualdsi_video_nofbc_labibb;
401
402 pinfo->mipi.panel_on_cmds
403 = jdi_4k_dualdsi_video_nofbc_on_command;
404 pinfo->mipi.num_of_panel_on_cmds
405 = JDI_4K_DUALDSI_VIDEO_NOFBC_ON_COMMAND;
406 pinfo->mipi.panel_off_cmds
407 = jdi_4k_dualdsi_video_nofbc_off_command;
408 pinfo->mipi.num_of_panel_off_cmds
409 = JDI_4K_DUALDSI_VIDEO_NOFBC_OFF_COMMAND;
410 memcpy(phy_db->timing,
411 jdi_4k_dualdsi_thulium_video_nofbc_timings,
412 MAX_TIMING_CONFIG * sizeof(uint32_t));
413 break;
Dhaval Patelb95039c2015-03-16 11:14:06 -0700414 default:
415 case UNKNOWN_PANEL:
416 pan_type = PANEL_TYPE_UNKNOWN;
417 break;
418 }
419 return pan_type;
420}
421
422int oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
423 struct msm_panel_info *pinfo,
424 struct mdss_dsi_phy_ctrl *phy_db)
425{
426 uint32_t hw_id = board_hardware_id();
427 int32_t panel_override_id;
428
429 phy_db->pll_type = DSI_PLL_TYPE_THULIUM;
430
431 if (panel_name) {
432 panel_override_id = panel_name_to_id(supp_panels,
433 ARRAY_SIZE(supp_panels), panel_name);
434
435 if (panel_override_id < 0) {
436 dprintf(CRITICAL, "Not able to search the panel:%s\n",
Padmanabhan Komandurubccbcdc2015-06-30 16:19:24 +0530437 panel_name);
Dhaval Patelb95039c2015-03-16 11:14:06 -0700438 } else if (panel_override_id < UNKNOWN_PANEL) {
439 /* panel override using fastboot oem command */
440 panel_id = panel_override_id;
441
442 dprintf(INFO, "OEM panel override:%s\n",
Padmanabhan Komandurubccbcdc2015-06-30 16:19:24 +0530443 panel_name);
Dhaval Patelb95039c2015-03-16 11:14:06 -0700444 goto panel_init;
445 }
446 }
447
448 switch (hw_id) {
449 case HW_PLATFORM_MTP:
450 case HW_PLATFORM_FLUID:
451 case HW_PLATFORM_SURF:
452 panel_id = SHARP_WQXGA_DUALDSI_VIDEO_PANEL;
453 break;
feifanz76fe6482015-09-02 15:25:16 +0800454 case HW_PLATFORM_QRD:
455 panel_id = R69007_WQXGA_CMD_PANEL;
456 break;
Kuogee Hsiehb976dfc2015-08-28 13:21:30 -0700457 case HW_PLATFORM_LIQUID:
458 panel_id = JDI_4K_DUALDSI_VIDEO_NOFBC_PANEL;
459 break;
Dhaval Patelb95039c2015-03-16 11:14:06 -0700460 default:
461 dprintf(CRITICAL, "Display not enabled for %d HW type\n"
462 , hw_id);
463 return PANEL_TYPE_UNKNOWN;
464 }
465
466panel_init:
467 return init_panel_data(panelstruct, pinfo, phy_db);
468}