1 /* drivers/video/sc8825/lcd_nt35516_spi.c
\r
3 * Support for nt35516 spi LCD device
\r
5 * Copyright (C) 2010 Spreadtrum
\r
7 * This software is licensed under the terms of the GNU General Public
\r
8 * License version 2, as published by the Free Software Foundation, and
\r
9 * may be copied, distributed, and modified under those terms.
\r
11 * This program is distributed in the hope that it will be useful,
\r
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
14 * GNU General Public License for more details.
\r
17 #include <linux/kernel.h>
\r
18 #include <linux/delay.h>
\r
19 #include "../sprdfb_panel.h"
\r
21 #define NT35516_SpiWriteCmd(cmd) \
\r
23 spi_send_cmd((cmd & 0xFF));\
\r
26 #define NT35516_SpiWriteData(data)\
\r
28 spi_send_data((data & 0xFF));\
\r
31 static int32_t nt35516_rgb_spi_init(struct panel_spec *self)
\r
34 spi_send_cmd_t spi_send_cmd = self->info.rgb->bus_info.spi->ops->spi_send_cmd;
\r
35 spi_send_data_t spi_send_data = self->info.rgb->bus_info.spi->ops->spi_send_data;
\r
36 spi_read_t spi_read = self->info.rgb->bus_info.spi->ops->spi_read;
\r
38 // NT35516 + AUO 4.29'
\r
39 // VCC=IOVCC=3.3V RGB_24Bit
\r
41 //NT35516_SpiWriteCmd(0xDB00);
\r
46 NT35516_SpiWriteCmd(0xFF);
\r
47 NT35516_SpiWriteData(0xAA);//AA
\r
48 NT35516_SpiWriteData(0x55);//55
\r
49 NT35516_SpiWriteData(0x25);//08
\r
50 NT35516_SpiWriteData(0x01);//01
\r
52 //NT35516_SpiWriteCmd(0xFA0F); NT35516_SpiWriteData(0x20);
\r
54 //NT35516_SpiWriteCmd(0xF300); NT35516_SpiWriteData(0x02);
\r
55 //NT35516_SpiWriteCmd(0xF303); NT35516_SpiWriteData(0x15);
\r
58 NT35516_SpiWriteCmd(0xF0);
\r
59 NT35516_SpiWriteData(0x55); //Manufacture Command Set Control
\r
60 NT35516_SpiWriteData(0xAA);
\r
61 NT35516_SpiWriteData(0x52);
\r
62 NT35516_SpiWriteData(0x08);
\r
63 NT35516_SpiWriteData(0x00);
\r
65 NT35516_SpiWriteCmd(0xB8);
\r
66 NT35516_SpiWriteData(0x01);
\r
67 NT35516_SpiWriteData(0x02);
\r
68 NT35516_SpiWriteData(0x02);
\r
69 NT35516_SpiWriteData(0x02);
\r
71 //NT35516_SpiWriteCmd(0xBC00); NT35516_SpiWriteData(0x05); //Zig-Zag Inversion
\r
72 //NT35516_SpiWriteCmd(0xBC01); NT35516_SpiWriteData(0x05);
\r
73 //NT35516_SpiWriteCmd(0xBC02); NT35516_SpiWriteData(0x05);
\r
75 //NT35516_SpiWriteCmd(0x4C00); NT35516_SpiWriteData(0x11); //DB4=1,Enable Vivid Color,DB4=0 Disable Vivid Color
\r
78 NT35516_SpiWriteCmd(0xF0);
\r
79 NT35516_SpiWriteData(0x55); //Manufacture Command Set Control
\r
80 NT35516_SpiWriteData(0xAA);
\r
81 NT35516_SpiWriteData(0x52);
\r
82 NT35516_SpiWriteData(0x08);
\r
83 NT35516_SpiWriteData(0x01);//Page1
\r
85 NT35516_SpiWriteCmd(0xB0);
\r
86 NT35516_SpiWriteData(0x05); // Setting AVDD Voltage 6V
\r
87 NT35516_SpiWriteData(0x05);
\r
88 NT35516_SpiWriteData(0x05);
\r
90 NT35516_SpiWriteCmd(0xB6);
\r
91 NT35516_SpiWriteData(0x44); // Setting AVEE boosting time 2.5*vpnl
\r
92 NT35516_SpiWriteData(0x44);
\r
93 NT35516_SpiWriteData(0x44);
\r
95 NT35516_SpiWriteCmd(0xB1);
\r
96 NT35516_SpiWriteData(0x05); // Setting AVEE Voltage -6V
\r
97 NT35516_SpiWriteData(0x05);
\r
98 NT35516_SpiWriteData(0x05);
\r
100 //Setting AVEE boosting time -2.5xVPNL
\r
101 NT35516_SpiWriteCmd(0xB7);
\r
102 NT35516_SpiWriteData(0x34);
\r
103 NT35516_SpiWriteData(0x34);
\r
104 NT35516_SpiWriteData(0x34);
\r
106 //Setting VGLX boosting time AVEE-AVDD
\r
107 NT35516_SpiWriteCmd(0xBA);
\r
108 NT35516_SpiWriteData(0x14); //0x24 --> 0x14
\r
109 NT35516_SpiWriteData(0x14);
\r
110 NT35516_SpiWriteData(0x14);
\r
113 NT35516_SpiWriteCmd(0xBC);
\r
114 NT35516_SpiWriteData(0x00);
\r
115 NT35516_SpiWriteData(0xA0);//VGMP 0x88=4.7V 0x78=4.5V 0xA0=5.0V
\r
116 NT35516_SpiWriteData(0x00);//VGSP
\r
119 NT35516_SpiWriteCmd(0xBD);
\r
120 NT35516_SpiWriteData(0x00);
\r
121 NT35516_SpiWriteData(0xA0);//VGMN 0x88=-4.7V 0x78=-4.5V 0xA0=-5.0V
\r
122 NT35516_SpiWriteData(0x00);//VGSN
\r
124 NT35516_SpiWriteCmd(0xBE);
\r
125 NT35516_SpiWriteData(0x57); // Setting VCOM Offset Voltage 0x4E¸ÄΪ0x57 20111019 LIYAN
\r
127 //GAMMA RED Positive
\r
128 NT35516_SpiWriteCmd(0xD1);
\r
129 NT35516_SpiWriteData(0x00);
\r
130 NT35516_SpiWriteData(0x32);
\r
131 NT35516_SpiWriteData(0x00);
\r
132 NT35516_SpiWriteData(0x41);
\r
133 NT35516_SpiWriteData(0x00);
\r
134 NT35516_SpiWriteData(0x54);
\r
135 NT35516_SpiWriteData(0x00);
\r
136 NT35516_SpiWriteData(0x67);
\r
137 NT35516_SpiWriteData(0x00);
\r
138 NT35516_SpiWriteData(0x7A);
\r
139 NT35516_SpiWriteData(0x00);
\r
140 NT35516_SpiWriteData(0x98);
\r
141 NT35516_SpiWriteData(0x00);
\r
142 NT35516_SpiWriteData(0xB0);
\r
143 NT35516_SpiWriteData(0x00);
\r
144 NT35516_SpiWriteData(0xDB);
\r
146 NT35516_SpiWriteCmd(0xD2);
\r
147 NT35516_SpiWriteData(0x01);
\r
148 NT35516_SpiWriteData(0x01);
\r
149 NT35516_SpiWriteData(0x01);
\r
150 NT35516_SpiWriteData(0x3F);
\r
151 NT35516_SpiWriteData(0x01);
\r
152 NT35516_SpiWriteData(0x70);
\r
153 NT35516_SpiWriteData(0x01);
\r
154 NT35516_SpiWriteData(0xB4);
\r
155 NT35516_SpiWriteData(0x01);
\r
156 NT35516_SpiWriteData(0xEC);
\r
157 NT35516_SpiWriteData(0x01);
\r
158 NT35516_SpiWriteData(0xED);
\r
159 NT35516_SpiWriteData(0x02);
\r
160 NT35516_SpiWriteData(0x1E);
\r
161 NT35516_SpiWriteData(0x02);
\r
162 NT35516_SpiWriteData(0x51);
\r
164 NT35516_SpiWriteCmd(0xD3);
\r
165 NT35516_SpiWriteData(0x02);
\r
166 NT35516_SpiWriteData(0x6C);
\r
167 NT35516_SpiWriteData(0x02);
\r
168 NT35516_SpiWriteData(0x8D);
\r
169 NT35516_SpiWriteData(0x02);
\r
170 NT35516_SpiWriteData(0xA5);
\r
171 NT35516_SpiWriteData(0x02);
\r
172 NT35516_SpiWriteData(0xC9);
\r
173 NT35516_SpiWriteData(0x02);
\r
174 NT35516_SpiWriteData(0xEA);
\r
175 NT35516_SpiWriteData(0x03);
\r
176 NT35516_SpiWriteData(0x19);
\r
177 NT35516_SpiWriteData(0x03);
\r
178 NT35516_SpiWriteData(0x45);
\r
179 NT35516_SpiWriteData(0x03);
\r
180 NT35516_SpiWriteData(0x7A);
\r
182 NT35516_SpiWriteCmd(0xD4);
\r
183 NT35516_SpiWriteData(0x03);
\r
184 NT35516_SpiWriteData(0xB0);
\r
185 NT35516_SpiWriteData(0x03);
\r
186 NT35516_SpiWriteData(0xF4);
\r
188 //Positive Gamma for GREEN
\r
189 NT35516_SpiWriteCmd(0xD5);
\r
190 NT35516_SpiWriteData(0x00);
\r
191 NT35516_SpiWriteData(0x37);
\r
192 NT35516_SpiWriteData(0x00);
\r
193 NT35516_SpiWriteData(0x41);
\r
194 NT35516_SpiWriteData(0x00);
\r
195 NT35516_SpiWriteData(0x54);
\r
196 NT35516_SpiWriteData(0x00);
\r
197 NT35516_SpiWriteData(0x67);
\r
198 NT35516_SpiWriteData(0x00);
\r
199 NT35516_SpiWriteData(0x7A);
\r
200 NT35516_SpiWriteData(0x00);
\r
201 NT35516_SpiWriteData(0x98);
\r
202 NT35516_SpiWriteData(0x00);
\r
203 NT35516_SpiWriteData(0xB0);
\r
204 NT35516_SpiWriteData(0x00);
\r
205 NT35516_SpiWriteData(0xDB);
\r
207 NT35516_SpiWriteCmd(0xD6);
\r
208 NT35516_SpiWriteData(0x01);
\r
209 NT35516_SpiWriteData(0x01);
\r
210 NT35516_SpiWriteData(0x01);
\r
211 NT35516_SpiWriteData(0x3F);
\r
212 NT35516_SpiWriteData(0x01);
\r
213 NT35516_SpiWriteData(0x70);
\r
214 NT35516_SpiWriteData(0x01);
\r
215 NT35516_SpiWriteData(0xB4);
\r
216 NT35516_SpiWriteData(0x01);
\r
217 NT35516_SpiWriteData(0xEC);
\r
218 NT35516_SpiWriteData(0x01);
\r
219 NT35516_SpiWriteData(0xED);
\r
220 NT35516_SpiWriteData(0x02);
\r
221 NT35516_SpiWriteData(0x1E);
\r
222 NT35516_SpiWriteData(0x02);
\r
223 NT35516_SpiWriteData(0x51);
\r
225 NT35516_SpiWriteCmd(0xD7);
\r
226 NT35516_SpiWriteData(0x02);
\r
227 NT35516_SpiWriteData(0x6C);
\r
228 NT35516_SpiWriteData(0x02);
\r
229 NT35516_SpiWriteData(0x8D);
\r
230 NT35516_SpiWriteData(0x02);
\r
231 NT35516_SpiWriteData(0xA5);
\r
232 NT35516_SpiWriteData(0x02);
\r
233 NT35516_SpiWriteData(0xC9);
\r
234 NT35516_SpiWriteData(0x02);
\r
235 NT35516_SpiWriteData(0xEA);
\r
236 NT35516_SpiWriteData(0x03);
\r
237 NT35516_SpiWriteData(0x19);
\r
238 NT35516_SpiWriteData(0x03);
\r
239 NT35516_SpiWriteData(0x45);
\r
240 NT35516_SpiWriteData(0x03);
\r
241 NT35516_SpiWriteData(0x7A);
\r
243 NT35516_SpiWriteCmd(0xD8);
\r
244 NT35516_SpiWriteData(0x03);
\r
245 NT35516_SpiWriteData(0xA0);
\r
246 NT35516_SpiWriteData(0x03);
\r
247 NT35516_SpiWriteData(0xF4);
\r
249 //Positive Gamma for BLUE
\r
250 NT35516_SpiWriteCmd(0xD9);
\r
251 NT35516_SpiWriteData(0x00);
\r
252 NT35516_SpiWriteData(0x32);
\r
253 NT35516_SpiWriteData(0x00);
\r
254 NT35516_SpiWriteData(0x41);
\r
255 NT35516_SpiWriteData(0x00);
\r
256 NT35516_SpiWriteData(0x54);
\r
257 NT35516_SpiWriteData(0x00);
\r
258 NT35516_SpiWriteData(0x67);
\r
259 NT35516_SpiWriteData(0x00);
\r
260 NT35516_SpiWriteData(0x7A);
\r
261 NT35516_SpiWriteData(0x00);
\r
262 NT35516_SpiWriteData(0x98);
\r
263 NT35516_SpiWriteData(0x00);
\r
264 NT35516_SpiWriteData(0xB0);
\r
265 NT35516_SpiWriteData(0x00);
\r
266 NT35516_SpiWriteData(0xDB);
\r
268 NT35516_SpiWriteCmd(0xDD);
\r
269 NT35516_SpiWriteData(0x01);
\r
270 NT35516_SpiWriteData(0x01);
\r
271 NT35516_SpiWriteData(0x01);
\r
272 NT35516_SpiWriteData(0x3F);
\r
273 NT35516_SpiWriteData(0x01);
\r
274 NT35516_SpiWriteData(0x70);
\r
275 NT35516_SpiWriteData(0x01);
\r
276 NT35516_SpiWriteData(0xB4);
\r
277 NT35516_SpiWriteData(0x01);
\r
278 NT35516_SpiWriteData(0xEC);
\r
279 NT35516_SpiWriteData(0x01);
\r
280 NT35516_SpiWriteData(0xED);
\r
281 NT35516_SpiWriteData(0x02);
\r
282 NT35516_SpiWriteData(0x1E);
\r
283 NT35516_SpiWriteData(0x02);
\r
284 NT35516_SpiWriteData(0x51);
\r
286 NT35516_SpiWriteCmd(0xDE);
\r
287 NT35516_SpiWriteData(0x02);
\r
288 NT35516_SpiWriteData(0x6C);
\r
289 NT35516_SpiWriteData(0x02);
\r
290 NT35516_SpiWriteData(0x8D);
\r
291 NT35516_SpiWriteData(0x02);
\r
292 NT35516_SpiWriteData(0xA5);
\r
293 NT35516_SpiWriteData(0x02);
\r
294 NT35516_SpiWriteData(0xC9);
\r
295 NT35516_SpiWriteData(0x02);
\r
296 NT35516_SpiWriteData(0xEA);
\r
297 NT35516_SpiWriteData(0x03);
\r
298 NT35516_SpiWriteData(0x19);
\r
299 NT35516_SpiWriteData(0x03);
\r
300 NT35516_SpiWriteData(0x45);
\r
301 NT35516_SpiWriteData(0x03);
\r
302 NT35516_SpiWriteData(0x7A);
\r
304 NT35516_SpiWriteCmd(0xDF);
\r
305 NT35516_SpiWriteData(0x03);
\r
306 NT35516_SpiWriteData(0xA0);
\r
307 NT35516_SpiWriteData(0x03);
\r
308 NT35516_SpiWriteData(0xF4);
\r
310 //Negative Gamma for RED
\r
311 NT35516_SpiWriteCmd(0xE0);
\r
312 NT35516_SpiWriteData(0x00);
\r
313 NT35516_SpiWriteData(0x32);
\r
314 NT35516_SpiWriteData(0x00);
\r
315 NT35516_SpiWriteData(0x41);
\r
316 NT35516_SpiWriteData(0x00);
\r
317 NT35516_SpiWriteData(0x54);
\r
318 NT35516_SpiWriteData(0x00);
\r
319 NT35516_SpiWriteData(0x67);
\r
320 NT35516_SpiWriteData(0x00);
\r
321 NT35516_SpiWriteData(0x7A);
\r
322 NT35516_SpiWriteData(0x00);
\r
323 NT35516_SpiWriteData(0x98);
\r
324 NT35516_SpiWriteData(0x00);
\r
325 NT35516_SpiWriteData(0xB0);
\r
326 NT35516_SpiWriteData(0x00);
\r
327 NT35516_SpiWriteData(0xDB);
\r
329 NT35516_SpiWriteCmd(0xE1);
\r
330 NT35516_SpiWriteData(0x01);
\r
331 NT35516_SpiWriteData(0x01);
\r
332 NT35516_SpiWriteData(0x01);
\r
333 NT35516_SpiWriteData(0x3F);
\r
334 NT35516_SpiWriteData(0x01);
\r
335 NT35516_SpiWriteData(0x70);
\r
336 NT35516_SpiWriteData(0x01);
\r
337 NT35516_SpiWriteData(0xB4);
\r
338 NT35516_SpiWriteData(0x01);
\r
339 NT35516_SpiWriteData(0xEC);
\r
340 NT35516_SpiWriteData(0x01);
\r
341 NT35516_SpiWriteData(0xED);
\r
342 NT35516_SpiWriteData(0x02);
\r
343 NT35516_SpiWriteData(0x1E);
\r
344 NT35516_SpiWriteData(0x02);
\r
345 NT35516_SpiWriteData(0x51);
\r
347 NT35516_SpiWriteCmd(0xE2);
\r
348 NT35516_SpiWriteData(0x02);
\r
349 NT35516_SpiWriteData(0x6C);
\r
350 NT35516_SpiWriteData(0x02);
\r
351 NT35516_SpiWriteData(0x8D);
\r
352 NT35516_SpiWriteData(0x02);
\r
353 NT35516_SpiWriteData(0xA5);
\r
354 NT35516_SpiWriteData(0x02);
\r
355 NT35516_SpiWriteData(0xC9);
\r
356 NT35516_SpiWriteData(0x02);
\r
357 NT35516_SpiWriteData(0xEA);
\r
358 NT35516_SpiWriteData(0x03);
\r
359 NT35516_SpiWriteData(0x19);
\r
360 NT35516_SpiWriteData(0x03);
\r
361 NT35516_SpiWriteData(0x45);
\r
362 NT35516_SpiWriteData(0x03);
\r
363 NT35516_SpiWriteData(0x7A);
\r
365 NT35516_SpiWriteCmd(0xE3);
\r
366 NT35516_SpiWriteData(0x03);
\r
367 NT35516_SpiWriteData(0xA0);
\r
368 NT35516_SpiWriteData(0x03);
\r
369 NT35516_SpiWriteData(0xF4);
\r
371 //Negative Gamma for GERREN
\r
372 NT35516_SpiWriteCmd(0xE4);
\r
373 NT35516_SpiWriteData(0x00);
\r
374 NT35516_SpiWriteData(0x32);
\r
375 NT35516_SpiWriteData(0x00);
\r
376 NT35516_SpiWriteData(0x41);
\r
377 NT35516_SpiWriteData(0x00);
\r
378 NT35516_SpiWriteData(0x54);
\r
379 NT35516_SpiWriteData(0x00);
\r
380 NT35516_SpiWriteData(0x67);
\r
381 NT35516_SpiWriteData(0x00);
\r
382 NT35516_SpiWriteData(0x7A);
\r
383 NT35516_SpiWriteData(0x00);
\r
384 NT35516_SpiWriteData(0x98);
\r
385 NT35516_SpiWriteData(0x00);
\r
386 NT35516_SpiWriteData(0xB0);
\r
387 NT35516_SpiWriteData(0x00);
\r
388 NT35516_SpiWriteData(0xDB);
\r
390 NT35516_SpiWriteCmd(0xE5);
\r
391 NT35516_SpiWriteData(0x01);
\r
392 NT35516_SpiWriteData(0x01);
\r
393 NT35516_SpiWriteData(0x01);
\r
394 NT35516_SpiWriteData(0x3F);
\r
395 NT35516_SpiWriteData(0x01);
\r
396 NT35516_SpiWriteData(0x70);
\r
397 NT35516_SpiWriteData(0x01);
\r
398 NT35516_SpiWriteData(0xB4);
\r
399 NT35516_SpiWriteData(0x01);
\r
400 NT35516_SpiWriteData(0xEC);
\r
401 NT35516_SpiWriteData(0x01);
\r
402 NT35516_SpiWriteData(0xED);
\r
403 NT35516_SpiWriteData(0x02);
\r
404 NT35516_SpiWriteData(0x1E);
\r
405 NT35516_SpiWriteData(0x02);
\r
406 NT35516_SpiWriteData(0x51);
\r
408 NT35516_SpiWriteCmd(0xE6);
\r
409 NT35516_SpiWriteData(0x02);
\r
410 NT35516_SpiWriteData(0x6C);
\r
411 NT35516_SpiWriteData(0x02);
\r
412 NT35516_SpiWriteData(0x8D);
\r
413 NT35516_SpiWriteData(0x02);
\r
414 NT35516_SpiWriteData(0xA5);
\r
415 NT35516_SpiWriteData(0x02);
\r
416 NT35516_SpiWriteData(0xC9);
\r
417 NT35516_SpiWriteData(0x02);
\r
418 NT35516_SpiWriteData(0xEA);
\r
419 NT35516_SpiWriteData(0x03);
\r
420 NT35516_SpiWriteData(0x19);
\r
421 NT35516_SpiWriteData(0x03);
\r
422 NT35516_SpiWriteData(0x45);
\r
423 NT35516_SpiWriteData(0x03);
\r
424 NT35516_SpiWriteData(0x7A);
\r
426 NT35516_SpiWriteCmd(0xE7);
\r
427 NT35516_SpiWriteData(0x03);
\r
428 NT35516_SpiWriteData(0xA0);
\r
429 NT35516_SpiWriteData(0x03);
\r
430 NT35516_SpiWriteData(0xF4);
\r
432 //Negative Gamma for BLUE
\r
433 NT35516_SpiWriteCmd(0xE8);
\r
434 NT35516_SpiWriteData(0x00);
\r
435 NT35516_SpiWriteData(0x32);
\r
436 NT35516_SpiWriteData(0x00);
\r
437 NT35516_SpiWriteData(0x41);
\r
438 NT35516_SpiWriteData(0x00);
\r
439 NT35516_SpiWriteData(0x54);
\r
440 NT35516_SpiWriteData(0x00);
\r
441 NT35516_SpiWriteData(0x67);
\r
442 NT35516_SpiWriteData(0x00);
\r
443 NT35516_SpiWriteData(0x7A);
\r
444 NT35516_SpiWriteData(0x00);
\r
445 NT35516_SpiWriteData(0x98);
\r
446 NT35516_SpiWriteData(0x00);
\r
447 NT35516_SpiWriteData(0xB0);
\r
448 NT35516_SpiWriteData(0x00);
\r
449 NT35516_SpiWriteData(0xDB);
\r
451 NT35516_SpiWriteCmd(0xE9);
\r
452 NT35516_SpiWriteData(0x01);
\r
453 NT35516_SpiWriteData(0x01);
\r
454 NT35516_SpiWriteData(0x01);
\r
455 NT35516_SpiWriteData(0x3F);
\r
456 NT35516_SpiWriteData(0x01);
\r
457 NT35516_SpiWriteData(0x70);
\r
458 NT35516_SpiWriteData(0x01);
\r
459 NT35516_SpiWriteData(0xB4);
\r
460 NT35516_SpiWriteData(0x01);
\r
461 NT35516_SpiWriteData(0xEC);
\r
462 NT35516_SpiWriteData(0x01);
\r
463 NT35516_SpiWriteData(0xED);
\r
464 NT35516_SpiWriteData(0x02);
\r
465 NT35516_SpiWriteData(0x1E);
\r
466 NT35516_SpiWriteData(0x02);
\r
467 NT35516_SpiWriteData(0x51);
\r
469 NT35516_SpiWriteCmd(0xEA);
\r
470 NT35516_SpiWriteData(0x02);
\r
471 NT35516_SpiWriteData(0x6C);
\r
472 NT35516_SpiWriteData(0x02);
\r
473 NT35516_SpiWriteData(0x8D);
\r
474 NT35516_SpiWriteData(0x02);
\r
475 NT35516_SpiWriteData(0xA5);
\r
476 NT35516_SpiWriteData(0x02);
\r
477 NT35516_SpiWriteData(0xC9);
\r
478 NT35516_SpiWriteData(0x02);
\r
479 NT35516_SpiWriteData(0xEA);
\r
480 NT35516_SpiWriteData(0x03);
\r
481 NT35516_SpiWriteData(0x19);
\r
482 NT35516_SpiWriteData(0x03);
\r
483 NT35516_SpiWriteData(0x45);
\r
484 NT35516_SpiWriteData(0x03);
\r
485 NT35516_SpiWriteData(0x7A);
\r
487 NT35516_SpiWriteCmd(0xEB);
\r
488 NT35516_SpiWriteData(0x03);
\r
489 NT35516_SpiWriteData(0xA0);
\r
490 NT35516_SpiWriteData(0x03);
\r
491 NT35516_SpiWriteData(0xF4);
\r
493 NT35516_SpiWriteCmd(0x3A); NT35516_SpiWriteData(0x77);
\r
495 NT35516_SpiWriteCmd(0x35); NT35516_SpiWriteData(0x00);
\r
497 NT35516_SpiWriteCmd(0x11); // Sleep out
\r
500 NT35516_SpiWriteCmd(0x29); // Display On
\r
504 static uint32_t nt35516_rgb_spi_readid(struct panel_spec *self)
\r
506 /*Jessica TODO: need read id*/
\r
511 void NT35516_RGB_SPI_set_display_window(
\r
512 uint16 left, // start Horizon address
\r
513 uint16 right, // end Horizon address
\r
514 uint16 top, // start Vertical address
\r
515 uint16 bottom // end Vertical address
\r
518 NT35516_SpiWriteCmd(0x2A00); NT35516_SpiWriteData((left>>8));// set left address
\r
519 NT35516_SpiWriteCmd(0x2A01); NT35516_SpiWriteData((left&0xff));
\r
520 NT35516_SpiWriteCmd(0x2A02); NT35516_SpiWriteData((right>>8));// set right address
\r
521 NT35516_SpiWriteCmd(0x2A03); NT35516_SpiWriteData((right&0xff));
\r
523 NT35516_SpiWriteCmd(0x2B00); NT35516_SpiWriteData((top>>8));// set left address
\r
524 NT35516_SpiWriteCmd(0x2B01); NT35516_SpiWriteData((top&0xff));
\r
525 NT35516_SpiWriteCmd(0x2B02); NT35516_SpiWriteData((bottom>>8));// set bottom address
\r
526 NT35516_SpiWriteCmd(0x2B03); NT35516_SpiWriteData((bottom&0xff));
\r
529 LCD_ERR_E NT35516_RGB_SPI_EnterSleep(BOOLEAN is_sleep)
\r
533 NT35516_SpiWriteCmd(0x28);
\r
535 NT35516_SpiWriteCmd(0x10);
\r
537 //Lcd_EnvidOnOff(0);//RGB TIMENG OFF
\r
543 //Lcd_EnvidOnOff(1);//RGB TIMENG ON
\r
553 LCD_ERR_E NT35516_RGB_SPI_SetDisplayWindow(
\r
554 uint16 left, //left of the window
\r
555 uint16 top, //top of the window
\r
556 uint16 right, //right of the window
\r
557 uint16 bottom //bottom of the window
\r
560 //NT35516_RGB_SPI_set_display_window(left, right, top, bottom);
\r
562 NT35516_SpiWriteCmd(0x2C);
\r
568 static struct panel_operations lcd_nt35516_rgb_spi_operations = {
\r
569 .panel_init = nt35516_rgb_spi_init,
\r
570 .panel_readid = nt35516_rgb_spi_readid,
\r
573 static struct timing_rgb lcd_nt35516_rgb_timing = {
\r
574 .hfp = 30, /* unit: pixel */
\r
577 .vfp = 16, /*unit: line*/
\r
582 static struct spi_info lcd_nt35516_rgb_spi_info = {
\r
586 static struct info_rgb lcd_nt35516_rgb_info = {
\r
587 .cmd_bus_mode = SPRDFB_RGB_BUS_TYPE_SPI,
\r
588 .video_bus_width = 24, /*18,16*/
\r
589 .h_sync_pol = SPRDFB_POLARITY_POS,
\r
590 .v_sync_pol = SPRDFB_POLARITY_POS,
\r
591 .de_pol = SPRDFB_POLARITY_POS,
\r
592 .timing = &lcd_nt35516_rgb_timing,
\r
594 .spi = &lcd_nt35516_rgb_spi_info,
\r
598 struct panel_spec lcd_nt35516_rgb_spi_spec = {
\r
601 .type = LCD_MODE_RGB,
\r
602 .direction = LCD_DIRECT_NORMAL,
\r
603 #ifdef CONFIG_FB_SCX15
\r
607 .rgb = &lcd_nt35516_rgb_info
\r
609 .ops = &lcd_nt35516_rgb_spi_operations,
\r
612 struct panel_cfg lcd_nt35516_rgb_spi = {
\r
613 /* this panel can only be main lcd */
\r
614 .dev_id = SPRDFB_MAINLCD_ID,
\r
616 .lcd_name = "lcd_nt35516_rgb_spi",
\r
617 .panel = &lcd_nt35516_rgb_spi_spec,
\r
619 static int __init lcd_nt35516_rgb_spi_init(void)
\r
621 return sprdfb_panel_register(&lcd_nt35516_rgb_spi);
\r
624 subsys_initcall(lcd_nt35516_rgb_spi_init);
\r