blob: 0ac37ac65355eb628fc5db40a6ea9de2238ac9cc [file] [log] [blame]
Ray Zhang960d1342015-06-25 15:32:00 +08001/* Copyright (c) 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#ifndef _PANEL_HX8399A_1080P_VIDEO_H_
31
32#define _PANEL_HX8399A_1080P_VIDEO_H_
33/*---------------------------------------------------------------------------*/
34/* HEADER files */
35/*---------------------------------------------------------------------------*/
36#include "panel.h"
37
38/*---------------------------------------------------------------------------*/
39/* Panel configuration */
40/*---------------------------------------------------------------------------*/
41static struct panel_config hx8399a_1080p_video_panel_data = {
42 "qcom,mdss_dsi_hx8399a_1080p_video", "dsi:0:", "qcom,mdss-dsi-panel",
43 10, 0, "DISPLAY_1", 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
44};
45
46/*---------------------------------------------------------------------------*/
47/* Panel resolution */
48/*---------------------------------------------------------------------------*/
49static struct panel_resolution hx8399a_1080p_video_panel_res = {
50 1080, 1920, 90, 60, 20, 0, 9, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0
51};
52
53/*---------------------------------------------------------------------------*/
54/* Panel color information */
55/*---------------------------------------------------------------------------*/
56static struct color_info hx8399a_1080p_video_color = {
57 24, 0, 0xff, 0, 0, 0
58};
59
60/*---------------------------------------------------------------------------*/
61/* Panel on/off command information */
62/*---------------------------------------------------------------------------*/
63static char hx8399a_1080p_video_on_cmd0[] = {
64 0x04, 0x00, 0x29, 0xC0,
65 0xB9, 0xFF, 0x83, 0x99,
66};
67
68static char hx8399a_1080p_video_on_cmd1[] = {
69 0x0D, 0x00, 0x29, 0xC0,
70 0xB1, 0x00, 0x74, 0x31,
71 0x31, 0x44, 0x09, 0x22,
72 0x22, 0x71, 0xF1, 0x63,
73 0x6D, 0xFF, 0xFF, 0xFF,
74};
75
76static char hx8399a_1080p_video_on_cmd2[] = {
77 0x0B, 0x00, 0x29, 0xC0,
78 0xB2, 0x00, 0x80, 0x00,
79 0x7F, 0x05, 0x07, 0x23,
80 0x4D, 0x02, 0x02, 0xFF,
81};
82
83static char hx8399a_1080p_video_on_cmd3[] = {
84 0x29, 0x00, 0x29, 0xC0,
85 0xB4, 0x00, 0xFF, 0x00,
86 0x40, 0x00, 0x3E, 0x00,
87 0x00, 0x02, 0x00, 0x00,
88 0x01, 0x00, 0x10, 0x01,
89 0x02, 0x04, 0x31, 0x00,
90 0x01, 0x44, 0x00, 0x40,
91 0x00, 0x3E, 0x00, 0x00,
92 0x02, 0x00, 0x00, 0x01,
93 0x00, 0x10, 0x01, 0x02,
94 0x04, 0x01, 0x00, 0x01,
95 0x44, 0xFF, 0xFF, 0xFF,
96};
97
98static char hx8399a_1080p_video_on_cmd4[] = {
99 0x02, 0x00, 0x29, 0xC0,
100 0xD2, 0x00, 0xFF, 0xFF,
101};
102
103static char hx8399a_1080p_video_on_cmd5[] = {
104 0x20, 0x00, 0x29, 0xC0,
105 0xD3, 0x00, 0x01, 0x00,
106 0x00, 0x00, 0x30, 0x00,
107 0x32, 0x10, 0x05, 0x00,
108 0x05, 0x00, 0x00, 0x00,
109 0x00, 0x00, 0x00, 0x00,
110 0x00, 0x00, 0x00, 0x01,
111 0x07, 0x07, 0x03, 0x00,
112 0x00, 0x00, 0x05, 0x08,
113};
114
115static char hx8399a_1080p_video_on_cmd6[] = {
116 0x21, 0x00, 0x29, 0xC0,
117 0xD5, 0x18, 0x18, 0x00,
118 0x00, 0x00, 0x00, 0x00,
119 0x00, 0x19, 0x19, 0x18,
120 0x18, 0x00, 0x00, 0x00,
121 0x00, 0x00, 0x00, 0x00,
122 0x00, 0x03, 0x02, 0x01,
123 0x00, 0x21, 0x20, 0x30,
124 0x30, 0x31, 0x31, 0x32,
125 0x32, 0xFF, 0xFF, 0xFF,
126};
127
128static char hx8399a_1080p_video_on_cmd7[] = {
129 0x21, 0x00, 0x29, 0xC0,
130 0xD6, 0x18, 0x18, 0x40,
131 0x40, 0x40, 0x40, 0x40,
132 0x40, 0x18, 0x18, 0x19,
133 0x19, 0x40, 0x40, 0x40,
134 0x40, 0x40, 0x40, 0x40,
135 0x40, 0x00, 0x01, 0x02,
136 0x03, 0x20, 0x21, 0x30,
137 0x30, 0x31, 0x31, 0x32,
138 0x32, 0xFF, 0xFF, 0xFF,
139};
140
141static char hx8399a_1080p_video_on_cmd8[] = {
142 0x31, 0x00, 0x29, 0xC0,
143 0xD8, 0x00, 0x00, 0x00,
144 0x00, 0x00, 0x00, 0x00,
145 0x00, 0x00, 0x00, 0x00,
146 0x00, 0x00, 0x00, 0x00,
147 0x00, 0x00, 0x00, 0x00,
148 0x00, 0x00, 0x00, 0x00,
149 0x00, 0x00, 0x00, 0x00,
150 0x00, 0x00, 0x00, 0x00,
151 0x00, 0x00, 0x00, 0x00,
152 0x00, 0x00, 0x00, 0x00,
153 0x00, 0xC0, 0x00, 0x0A,
154 0xBF, 0xC0, 0x00, 0x0A,
155 0xBF, 0xFF, 0xFF, 0xFF,
156};
157
158static char hx8399a_1080p_video_on_cmd9[] = {
159 0x03, 0x00, 0x29, 0xC0,
160 0xB6, 0x34, 0x34, 0xFF,
161};
162
163static char hx8399a_1080p_video_on_cmd10[] = {
164 0x02, 0x00, 0x29, 0xC0,
165 0xCC, 0x08, 0xFF, 0xFF,
166};
167
168static char hx8399a_1080p_video_on_cmd11[] = {
169 0x2B, 0x00, 0x29, 0xC0,
170 0xE0, 0x01, 0x10, 0x15,
171 0x2B, 0x32, 0x3E, 0x22,
172 0x3C, 0x07, 0x0C, 0x0F,
173 0x12, 0x15, 0x13, 0x14,
174 0x10, 0x16, 0x0A, 0x17,
175 0x06, 0x12, 0x01, 0x10,
176 0x15, 0x2B, 0x32, 0x3E,
177 0x22, 0x3C, 0x07, 0x0C,
178 0x0F, 0x12, 0x15, 0x13,
179 0x14, 0x10, 0x16, 0x0A,
180 0x17, 0x06, 0x12, 0xFF,
181};
182
183static char hx8399a_1080p_video_on_cmd12[] = {
184 0x04, 0x00, 0x29, 0xC0,
185 0xBF, 0xCF, 0x00, 0x46,
186};
187
188static char hx8399a_1080p_video_on_cmd13[] = {
189 0x02, 0x00, 0x29, 0xC0,
190 0x36, 0xc0, 0xFF, 0xFF,
191};
192
193static char hx8399a_1080p_video_on_cmd14[] = {
194 0x02, 0x00, 0x29, 0xC0,
195 0x11, 0x00, 0xFF, 0xFF,
196};
197
198static char hx8399a_1080p_video_on_cmd15[] = {
199 0x02, 0x00, 0x29, 0xC0,
200 0x29, 0x00, 0xFF, 0xFF,
201};
202
203static struct mipi_dsi_cmd hx8399a_1080p_video_on_command[] = {
204 {0x8, hx8399a_1080p_video_on_cmd0, 0x00},
205 {0x14, hx8399a_1080p_video_on_cmd1, 0x00},
206 {0x10, hx8399a_1080p_video_on_cmd2, 0x00},
207 {0x30, hx8399a_1080p_video_on_cmd3, 0x00},
208 {0x8, hx8399a_1080p_video_on_cmd4, 0x00},
209 {0x24, hx8399a_1080p_video_on_cmd5, 0x00},
210 {0x28, hx8399a_1080p_video_on_cmd6, 0x00},
211 {0x28, hx8399a_1080p_video_on_cmd7, 0x00},
212 {0x38, hx8399a_1080p_video_on_cmd8, 0x00},
213 {0x8, hx8399a_1080p_video_on_cmd9, 0x00},
214 {0x8, hx8399a_1080p_video_on_cmd10, 0x00},
215 {0x30, hx8399a_1080p_video_on_cmd11, 0x00},
216 {0x8, hx8399a_1080p_video_on_cmd12, 0x00},
217 {0x8, hx8399a_1080p_video_on_cmd13, 0x00},
218 {0x8, hx8399a_1080p_video_on_cmd14, 0x78},
219 {0x8, hx8399a_1080p_video_on_cmd15, 0x0A}
220};
221
222#define HX8399A_1080P_VIDEO_ON_COMMAND 16
223
224
225static char hx8399a_1080p_videooff_cmd0[] = {
226 0x28, 0x00, 0x05, 0x80
227};
228
229static char hx8399a_1080p_videooff_cmd1[] = {
230 0x10, 0x00, 0x05, 0x80
231};
232
233static struct mipi_dsi_cmd hx8399a_1080p_video_off_command[] = {
234 {0x4, hx8399a_1080p_videooff_cmd0, 0x32},
235 {0x4, hx8399a_1080p_videooff_cmd1, 0x78}
236};
237
238#define HX8399A_1080P_VIDEO_OFF_COMMAND 2
239
240
241static struct command_state hx8399a_1080p_video_state = {
242 0, 1
243};
244
245/*---------------------------------------------------------------------------*/
246/* Command mode panel information */
247/*---------------------------------------------------------------------------*/
248static struct commandpanel_info hx8399a_1080p_video_command_panel = {
249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
250};
251
252/*---------------------------------------------------------------------------*/
253/* Video mode panel information */
254/*---------------------------------------------------------------------------*/
255static struct videopanel_info hx8399a_1080p_video_video_panel = {
256 0, 0, 0, 0, 1, 1, 2, 0, 0x9
257};
258
259/*---------------------------------------------------------------------------*/
260/* Lane configuration */
261/*---------------------------------------------------------------------------*/
262static struct lane_configuration hx8399a_1080p_video_lane_config = {
263 4, 0, 1, 1, 1, 1, 0
264};
265
266/*---------------------------------------------------------------------------*/
267/* Panel timing */
268/*---------------------------------------------------------------------------*/
269static const uint32_t hx8399a_1080p_video_timings[] = {
270 0xf9, 0x3d, 0x34, 0x00, 0x58, 0x4d, 0x36, 0x3f, 0x53, 0x03, 0x04, 0x00
271};
272
273static struct panel_timing hx8399a_1080p_video_timing_info = {
274 0, 4, 0x1e, 0x38
275};
276
277/*---------------------------------------------------------------------------*/
278/* Panel reset sequence */
279/*---------------------------------------------------------------------------*/
280static struct panel_reset_sequence hx8399a_1080p_video_reset_seq = {
281 {1, 0, 1, }, {20, 2, 20, }, 2
282};
283
284/*---------------------------------------------------------------------------*/
285/* Backlight setting */
286/*---------------------------------------------------------------------------*/
287static struct backlight hx8399a_1080p_video_backlight = {
288 1, 1, 4095, 100, 1, "PMIC_8941"
289};
290
291#define HX8399A_1080P_VIDEO_SIGNATURE 0xA0000
292
293#endif /*_PANEL_HX8399A_1080P_VIDEO_H_*/