tizen 2.4 release
[profile/mobile/platform/kernel/u-boot-tm1.git] / drivers / video / sprdfb / lcd / lcd_nt35516_rgb_spi.c
1 \r
2 /* drivers/video/sc8825/lcd_nt35516_spi.c\r
3  *\r
4  * Support for nt35516 spi LCD device\r
5  *\r
6  * Copyright (C) 2010 Spreadtrum\r
7  *\r
8  */\r
9 \r
10 #include <asm/arch/sprd_lcd.h>\r
11 #include "../sprdfb.h"\r
12 \r
13 //#define  LCD_DEBUG\r
14 #ifdef LCD_DEBUG\r
15 #define LCD_PRINT printk\r
16 #else\r
17 #define LCD_PRINT(...)\r
18 #endif\r
19 \r
20 \r
21 \r
22 #define NT35516_SpiWriteCmd(cmd) \ \r
23 { \\r
24         spi_send_cmd((cmd & 0xFF));\\r
25 }\r
26 \r
27 #define  NT35516_SpiWriteData(data)\\r
28 { \\r
29         spi_send_data((data & 0xFF));\\r
30 }\r
31 \r
32 static int32_t nt35516_rgb_spi_init(struct panel_spec *self)\r
33 {\r
34         uint32_t data = 0;\r
35         spi_send_cmd_t spi_send_cmd = self->info.rgb->bus_info.spi->ops->spi_send_cmd; \r
36         spi_send_data_t spi_send_data = self->info.rgb->bus_info.spi->ops->spi_send_data; \r
37         spi_read_t spi_read = self->info.rgb->bus_info.spi->ops->spi_read; \r
38 \r
39         // NT35516 + AUO 4.29'\r
40         // VCC=IOVCC=3.3V  RGB_24Bit\r
41 \r
42         //NT35516_SpiWriteCmd(0xDB00);\r
43         //spi_read(&data);\r
44 \r
45         //TEST Commands\r
46 \r
47         NT35516_SpiWriteCmd(0xFF); \r
48         NT35516_SpiWriteData(0xAA);//AA\r
49   NT35516_SpiWriteData(0x55);//55\r
50         NT35516_SpiWriteData(0x25);//08\r
51          NT35516_SpiWriteData(0x01);//01\r
52 \r
53         //NT35516_SpiWriteCmd(0xFA0F); NT35516_SpiWriteData(0x20);\r
54 \r
55         //NT35516_SpiWriteCmd(0xF300); NT35516_SpiWriteData(0x02);\r
56         //NT35516_SpiWriteCmd(0xF303); NT35516_SpiWriteData(0x15);\r
57 \r
58         //ENABLE PAGE 0    \r
59         NT35516_SpiWriteCmd(0xF0); \r
60         NT35516_SpiWriteData(0x55); //Manufacture Command Set Control   \r
61         NT35516_SpiWriteData(0xAA);\r
62         NT35516_SpiWriteData(0x52);\r
63         NT35516_SpiWriteData(0x08);\r
64          NT35516_SpiWriteData(0x00);\r
65 \r
66         NT35516_SpiWriteCmd(0xB8); \r
67         NT35516_SpiWriteData(0x01); \r
68         NT35516_SpiWriteData(0x02);\r
69         NT35516_SpiWriteData(0x02);\r
70         NT35516_SpiWriteData(0x02);\r
71 \r
72         //NT35516_SpiWriteCmd(0xBC00); NT35516_SpiWriteData(0x05); //Zig-Zag Inversion  \r
73         //NT35516_SpiWriteCmd(0xBC01); NT35516_SpiWriteData(0x05);\r
74         //NT35516_SpiWriteCmd(0xBC02); NT35516_SpiWriteData(0x05);\r
75 \r
76         //NT35516_SpiWriteCmd(0x4C00); NT35516_SpiWriteData(0x11); //DB4=1,Enable Vivid Color,DB4=0 Disable Vivid Color\r
77 \r
78         // ENABLE PAGE 1   \r
79         NT35516_SpiWriteCmd(0xF0); \r
80         NT35516_SpiWriteData(0x55); //Manufacture Command Set Control      \r
81         NT35516_SpiWriteData(0xAA);\r
82         NT35516_SpiWriteData(0x52);\r
83         NT35516_SpiWriteData(0x08);\r
84         NT35516_SpiWriteData(0x01);//Page1\r
85 \r
86         NT35516_SpiWriteCmd(0xB0); \r
87         NT35516_SpiWriteData(0x05); // Setting AVDD Voltage 6V\r
88         NT35516_SpiWriteData(0x05);\r
89         NT35516_SpiWriteData(0x05);\r
90 \r
91         NT35516_SpiWriteCmd(0xB6); \r
92         NT35516_SpiWriteData(0x44); // Setting AVEE boosting time 2.5*vpnl \r
93          NT35516_SpiWriteData(0x44);\r
94          NT35516_SpiWriteData(0x44);\r
95 \r
96         NT35516_SpiWriteCmd(0xB1);\r
97          NT35516_SpiWriteData(0x05); // Setting AVEE Voltage -6V\r
98         NT35516_SpiWriteData(0x05);\r
99         NT35516_SpiWriteData(0x05);\r
100 \r
101         //Setting AVEE boosting time -2.5xVPNL\r
102         NT35516_SpiWriteCmd(0xB7); \r
103         NT35516_SpiWriteData(0x34); \r
104         NT35516_SpiWriteData(0x34);\r
105         NT35516_SpiWriteData(0x34);\r
106 \r
107         //Setting VGLX boosting time  AVEE-AVDD\r
108         NT35516_SpiWriteCmd(0xBA); \r
109         NT35516_SpiWriteData(0x14); //0x24 --> 0x14\r
110          NT35516_SpiWriteData(0x14);\r
111          NT35516_SpiWriteData(0x14);\r
112 \r
113         //Gamma Voltage\r
114         NT35516_SpiWriteCmd(0xBC); \r
115         NT35516_SpiWriteData(0x00); \r
116 NT35516_SpiWriteData(0xA0);//VGMP 0x88=4.7V  0x78=4.5V   0xA0=5.0V  \r
117 NT35516_SpiWriteData(0x00);//VGSP \r
118 \r
119         //Gamma Voltage\r
120         NT35516_SpiWriteCmd(0xBD); \r
121         NT35516_SpiWriteData(0x00); \r
122         NT35516_SpiWriteData(0xA0);//VGMN 0x88=-4.7V 0x78=-4.5V   0xA0=-5.0V\r
123         NT35516_SpiWriteData(0x00);//VGSN  \r
124 \r
125         NT35516_SpiWriteCmd(0xBE); \r
126         NT35516_SpiWriteData(0x57); // Setting VCOM Offset Voltage  0x4E¸ÄΪ0x57  20111019 LIYAN\r
127 \r
128         //GAMMA RED Positive       \r
129         NT35516_SpiWriteCmd(0xD1); \r
130         NT35516_SpiWriteData(0x00);\r
131          NT35516_SpiWriteData(0x32);\r
132          NT35516_SpiWriteData(0x00);\r
133          NT35516_SpiWriteData(0x41);\r
134          NT35516_SpiWriteData(0x00);\r
135          NT35516_SpiWriteData(0x54);\r
136          NT35516_SpiWriteData(0x00);\r
137          NT35516_SpiWriteData(0x67);\r
138          NT35516_SpiWriteData(0x00);\r
139          NT35516_SpiWriteData(0x7A);\r
140          NT35516_SpiWriteData(0x00);\r
141          NT35516_SpiWriteData(0x98);\r
142          NT35516_SpiWriteData(0x00);\r
143          NT35516_SpiWriteData(0xB0);\r
144          NT35516_SpiWriteData(0x00);\r
145          NT35516_SpiWriteData(0xDB);\r
146          \r
147         NT35516_SpiWriteCmd(0xD2);\r
148          NT35516_SpiWriteData(0x01);\r
149          NT35516_SpiWriteData(0x01);\r
150          NT35516_SpiWriteData(0x01);\r
151          NT35516_SpiWriteData(0x3F);\r
152          NT35516_SpiWriteData(0x01);\r
153          NT35516_SpiWriteData(0x70);\r
154          NT35516_SpiWriteData(0x01);\r
155          NT35516_SpiWriteData(0xB4);\r
156          NT35516_SpiWriteData(0x01);\r
157          NT35516_SpiWriteData(0xEC);\r
158          NT35516_SpiWriteData(0x01);\r
159          NT35516_SpiWriteData(0xED);\r
160          NT35516_SpiWriteData(0x02);\r
161          NT35516_SpiWriteData(0x1E);\r
162          NT35516_SpiWriteData(0x02);\r
163          NT35516_SpiWriteData(0x51);\r
164          \r
165         NT35516_SpiWriteCmd(0xD3); \r
166         NT35516_SpiWriteData(0x02);\r
167          NT35516_SpiWriteData(0x6C);\r
168          NT35516_SpiWriteData(0x02);\r
169          NT35516_SpiWriteData(0x8D);\r
170          NT35516_SpiWriteData(0x02);\r
171          NT35516_SpiWriteData(0xA5);\r
172          NT35516_SpiWriteData(0x02);\r
173          NT35516_SpiWriteData(0xC9);\r
174          NT35516_SpiWriteData(0x02);\r
175          NT35516_SpiWriteData(0xEA);\r
176          NT35516_SpiWriteData(0x03);\r
177          NT35516_SpiWriteData(0x19);\r
178          NT35516_SpiWriteData(0x03);\r
179          NT35516_SpiWriteData(0x45);\r
180          NT35516_SpiWriteData(0x03);\r
181          NT35516_SpiWriteData(0x7A);\r
182          \r
183         NT35516_SpiWriteCmd(0xD4); \r
184         NT35516_SpiWriteData(0x03);\r
185          NT35516_SpiWriteData(0xB0);\r
186          NT35516_SpiWriteData(0x03);\r
187          NT35516_SpiWriteData(0xF4);\r
188 \r
189         //Positive Gamma for GREEN\r
190         NT35516_SpiWriteCmd(0xD5); \r
191         NT35516_SpiWriteData(0x00);\r
192          NT35516_SpiWriteData(0x37);\r
193          NT35516_SpiWriteData(0x00);\r
194          NT35516_SpiWriteData(0x41);\r
195          NT35516_SpiWriteData(0x00);\r
196          NT35516_SpiWriteData(0x54);\r
197          NT35516_SpiWriteData(0x00);\r
198          NT35516_SpiWriteData(0x67);\r
199          NT35516_SpiWriteData(0x00);\r
200          NT35516_SpiWriteData(0x7A);\r
201          NT35516_SpiWriteData(0x00);\r
202          NT35516_SpiWriteData(0x98);\r
203          NT35516_SpiWriteData(0x00);\r
204          NT35516_SpiWriteData(0xB0);\r
205          NT35516_SpiWriteData(0x00);\r
206          NT35516_SpiWriteData(0xDB);\r
207          \r
208         NT35516_SpiWriteCmd(0xD6); \r
209         NT35516_SpiWriteData(0x01);\r
210          NT35516_SpiWriteData(0x01);\r
211          NT35516_SpiWriteData(0x01);\r
212          NT35516_SpiWriteData(0x3F);\r
213          NT35516_SpiWriteData(0x01);\r
214          NT35516_SpiWriteData(0x70);\r
215          NT35516_SpiWriteData(0x01);\r
216          NT35516_SpiWriteData(0xB4);\r
217          NT35516_SpiWriteData(0x01);\r
218          NT35516_SpiWriteData(0xEC);\r
219          NT35516_SpiWriteData(0x01);\r
220          NT35516_SpiWriteData(0xED);\r
221          NT35516_SpiWriteData(0x02);\r
222          NT35516_SpiWriteData(0x1E);\r
223          NT35516_SpiWriteData(0x02);\r
224          NT35516_SpiWriteData(0x51);\r
225          \r
226         NT35516_SpiWriteCmd(0xD7); \r
227         NT35516_SpiWriteData(0x02);\r
228          NT35516_SpiWriteData(0x6C);\r
229          NT35516_SpiWriteData(0x02);\r
230          NT35516_SpiWriteData(0x8D);\r
231          NT35516_SpiWriteData(0x02);\r
232          NT35516_SpiWriteData(0xA5);\r
233          NT35516_SpiWriteData(0x02);\r
234          NT35516_SpiWriteData(0xC9);\r
235          NT35516_SpiWriteData(0x02);\r
236          NT35516_SpiWriteData(0xEA);\r
237          NT35516_SpiWriteData(0x03);\r
238          NT35516_SpiWriteData(0x19);\r
239          NT35516_SpiWriteData(0x03);\r
240          NT35516_SpiWriteData(0x45);\r
241          NT35516_SpiWriteData(0x03);\r
242          NT35516_SpiWriteData(0x7A);\r
243          \r
244         NT35516_SpiWriteCmd(0xD8); \r
245         NT35516_SpiWriteData(0x03);\r
246         NT35516_SpiWriteData(0xA0);\r
247         NT35516_SpiWriteData(0x03);\r
248         NT35516_SpiWriteData(0xF4);\r
249 \r
250         //Positive Gamma for BLUE\r
251         NT35516_SpiWriteCmd(0xD9);\r
252          NT35516_SpiWriteData(0x00);\r
253          NT35516_SpiWriteData(0x32);\r
254          NT35516_SpiWriteData(0x00);\r
255          NT35516_SpiWriteData(0x41);\r
256          NT35516_SpiWriteData(0x00);\r
257          NT35516_SpiWriteData(0x54);\r
258          NT35516_SpiWriteData(0x00);\r
259          NT35516_SpiWriteData(0x67);\r
260          NT35516_SpiWriteData(0x00);\r
261          NT35516_SpiWriteData(0x7A);\r
262          NT35516_SpiWriteData(0x00);\r
263          NT35516_SpiWriteData(0x98);\r
264          NT35516_SpiWriteData(0x00);\r
265          NT35516_SpiWriteData(0xB0);\r
266          NT35516_SpiWriteData(0x00);\r
267          NT35516_SpiWriteData(0xDB);\r
268          \r
269         NT35516_SpiWriteCmd(0xDD); \r
270         NT35516_SpiWriteData(0x01);\r
271          NT35516_SpiWriteData(0x01);\r
272          NT35516_SpiWriteData(0x01);\r
273          NT35516_SpiWriteData(0x3F);\r
274          NT35516_SpiWriteData(0x01);\r
275          NT35516_SpiWriteData(0x70);\r
276          NT35516_SpiWriteData(0x01);\r
277          NT35516_SpiWriteData(0xB4);\r
278          NT35516_SpiWriteData(0x01);\r
279          NT35516_SpiWriteData(0xEC);\r
280          NT35516_SpiWriteData(0x01);\r
281          NT35516_SpiWriteData(0xED);\r
282          NT35516_SpiWriteData(0x02);\r
283          NT35516_SpiWriteData(0x1E);\r
284          NT35516_SpiWriteData(0x02);\r
285          NT35516_SpiWriteData(0x51);\r
286          \r
287         NT35516_SpiWriteCmd(0xDE); \r
288         NT35516_SpiWriteData(0x02);\r
289          NT35516_SpiWriteData(0x6C);\r
290          NT35516_SpiWriteData(0x02);\r
291          NT35516_SpiWriteData(0x8D);\r
292          NT35516_SpiWriteData(0x02);\r
293          NT35516_SpiWriteData(0xA5);\r
294          NT35516_SpiWriteData(0x02);\r
295          NT35516_SpiWriteData(0xC9);\r
296          NT35516_SpiWriteData(0x02);\r
297          NT35516_SpiWriteData(0xEA);\r
298          NT35516_SpiWriteData(0x03);\r
299          NT35516_SpiWriteData(0x19);\r
300          NT35516_SpiWriteData(0x03);\r
301          NT35516_SpiWriteData(0x45);\r
302          NT35516_SpiWriteData(0x03);\r
303          NT35516_SpiWriteData(0x7A);\r
304          \r
305         NT35516_SpiWriteCmd(0xDF); \r
306         NT35516_SpiWriteData(0x03);\r
307          NT35516_SpiWriteData(0xA0);\r
308          NT35516_SpiWriteData(0x03);\r
309          NT35516_SpiWriteData(0xF4);\r
310 \r
311         //Negative Gamma for RED\r
312         NT35516_SpiWriteCmd(0xE0); \r
313         NT35516_SpiWriteData(0x00);\r
314          NT35516_SpiWriteData(0x32);\r
315          NT35516_SpiWriteData(0x00);\r
316          NT35516_SpiWriteData(0x41);\r
317          NT35516_SpiWriteData(0x00);\r
318          NT35516_SpiWriteData(0x54);\r
319          NT35516_SpiWriteData(0x00);\r
320          NT35516_SpiWriteData(0x67);\r
321          NT35516_SpiWriteData(0x00);\r
322          NT35516_SpiWriteData(0x7A);\r
323          NT35516_SpiWriteData(0x00);\r
324          NT35516_SpiWriteData(0x98);\r
325          NT35516_SpiWriteData(0x00);\r
326          NT35516_SpiWriteData(0xB0);\r
327          NT35516_SpiWriteData(0x00);\r
328          NT35516_SpiWriteData(0xDB);\r
329          \r
330         NT35516_SpiWriteCmd(0xE1); \r
331         NT35516_SpiWriteData(0x01);\r
332          NT35516_SpiWriteData(0x01);\r
333          NT35516_SpiWriteData(0x01);\r
334          NT35516_SpiWriteData(0x3F);\r
335          NT35516_SpiWriteData(0x01);\r
336          NT35516_SpiWriteData(0x70);\r
337          NT35516_SpiWriteData(0x01);\r
338          NT35516_SpiWriteData(0xB4);\r
339          NT35516_SpiWriteData(0x01);\r
340          NT35516_SpiWriteData(0xEC);\r
341          NT35516_SpiWriteData(0x01);\r
342          NT35516_SpiWriteData(0xED);\r
343          NT35516_SpiWriteData(0x02);\r
344          NT35516_SpiWriteData(0x1E);\r
345          NT35516_SpiWriteData(0x02);\r
346          NT35516_SpiWriteData(0x51);\r
347          \r
348         NT35516_SpiWriteCmd(0xE2); \r
349         NT35516_SpiWriteData(0x02);\r
350          NT35516_SpiWriteData(0x6C);\r
351          NT35516_SpiWriteData(0x02);\r
352          NT35516_SpiWriteData(0x8D);\r
353          NT35516_SpiWriteData(0x02);\r
354          NT35516_SpiWriteData(0xA5);\r
355          NT35516_SpiWriteData(0x02);\r
356          NT35516_SpiWriteData(0xC9);\r
357          NT35516_SpiWriteData(0x02);\r
358          NT35516_SpiWriteData(0xEA);\r
359          NT35516_SpiWriteData(0x03);\r
360          NT35516_SpiWriteData(0x19);\r
361          NT35516_SpiWriteData(0x03);\r
362          NT35516_SpiWriteData(0x45);\r
363          NT35516_SpiWriteData(0x03);\r
364          NT35516_SpiWriteData(0x7A);\r
365          \r
366         NT35516_SpiWriteCmd(0xE3); \r
367         NT35516_SpiWriteData(0x03);\r
368          NT35516_SpiWriteData(0xA0);\r
369          NT35516_SpiWriteData(0x03);\r
370          NT35516_SpiWriteData(0xF4);\r
371 \r
372         //Negative Gamma for GERREN\r
373         NT35516_SpiWriteCmd(0xE4); \r
374         NT35516_SpiWriteData(0x00);\r
375          NT35516_SpiWriteData(0x32);\r
376          NT35516_SpiWriteData(0x00);\r
377          NT35516_SpiWriteData(0x41);\r
378          NT35516_SpiWriteData(0x00);\r
379          NT35516_SpiWriteData(0x54);\r
380          NT35516_SpiWriteData(0x00);\r
381          NT35516_SpiWriteData(0x67);\r
382          NT35516_SpiWriteData(0x00);\r
383          NT35516_SpiWriteData(0x7A);\r
384          NT35516_SpiWriteData(0x00);\r
385          NT35516_SpiWriteData(0x98);\r
386          NT35516_SpiWriteData(0x00);\r
387          NT35516_SpiWriteData(0xB0);\r
388          NT35516_SpiWriteData(0x00);\r
389          NT35516_SpiWriteData(0xDB);\r
390          \r
391         NT35516_SpiWriteCmd(0xE5); \r
392         NT35516_SpiWriteData(0x01);\r
393          NT35516_SpiWriteData(0x01);\r
394          NT35516_SpiWriteData(0x01);\r
395          NT35516_SpiWriteData(0x3F);\r
396          NT35516_SpiWriteData(0x01);\r
397          NT35516_SpiWriteData(0x70);\r
398          NT35516_SpiWriteData(0x01);\r
399          NT35516_SpiWriteData(0xB4);\r
400          NT35516_SpiWriteData(0x01);\r
401          NT35516_SpiWriteData(0xEC);\r
402          NT35516_SpiWriteData(0x01);\r
403          NT35516_SpiWriteData(0xED);\r
404          NT35516_SpiWriteData(0x02);\r
405          NT35516_SpiWriteData(0x1E);\r
406          NT35516_SpiWriteData(0x02);\r
407          NT35516_SpiWriteData(0x51);\r
408          \r
409         NT35516_SpiWriteCmd(0xE6); \r
410         NT35516_SpiWriteData(0x02);\r
411          NT35516_SpiWriteData(0x6C);\r
412          NT35516_SpiWriteData(0x02);\r
413          NT35516_SpiWriteData(0x8D);\r
414          NT35516_SpiWriteData(0x02);\r
415          NT35516_SpiWriteData(0xA5);\r
416          NT35516_SpiWriteData(0x02);\r
417          NT35516_SpiWriteData(0xC9);\r
418          NT35516_SpiWriteData(0x02);\r
419          NT35516_SpiWriteData(0xEA);\r
420          NT35516_SpiWriteData(0x03);\r
421          NT35516_SpiWriteData(0x19);\r
422          NT35516_SpiWriteData(0x03);\r
423          NT35516_SpiWriteData(0x45);\r
424          NT35516_SpiWriteData(0x03);\r
425          NT35516_SpiWriteData(0x7A);\r
426          \r
427         NT35516_SpiWriteCmd(0xE7); \r
428         NT35516_SpiWriteData(0x03);\r
429          NT35516_SpiWriteData(0xA0);\r
430          NT35516_SpiWriteData(0x03);\r
431          NT35516_SpiWriteData(0xF4);\r
432 \r
433         //Negative Gamma for BLUE\r
434         NT35516_SpiWriteCmd(0xE8); \r
435         NT35516_SpiWriteData(0x00);\r
436          NT35516_SpiWriteData(0x32);\r
437          NT35516_SpiWriteData(0x00);\r
438          NT35516_SpiWriteData(0x41);\r
439          NT35516_SpiWriteData(0x00);\r
440          NT35516_SpiWriteData(0x54);\r
441          NT35516_SpiWriteData(0x00);\r
442          NT35516_SpiWriteData(0x67);\r
443          NT35516_SpiWriteData(0x00);\r
444          NT35516_SpiWriteData(0x7A);\r
445          NT35516_SpiWriteData(0x00);\r
446          NT35516_SpiWriteData(0x98);\r
447          NT35516_SpiWriteData(0x00);\r
448          NT35516_SpiWriteData(0xB0);\r
449          NT35516_SpiWriteData(0x00);\r
450          NT35516_SpiWriteData(0xDB);\r
451          \r
452         NT35516_SpiWriteCmd(0xE9); \r
453         NT35516_SpiWriteData(0x01);\r
454         NT35516_SpiWriteData(0x01);\r
455         NT35516_SpiWriteData(0x01);\r
456         NT35516_SpiWriteData(0x3F);\r
457         NT35516_SpiWriteData(0x01);\r
458         NT35516_SpiWriteData(0x70);\r
459         NT35516_SpiWriteData(0x01);\r
460         NT35516_SpiWriteData(0xB4);\r
461         NT35516_SpiWriteData(0x01);\r
462         NT35516_SpiWriteData(0xEC);\r
463         NT35516_SpiWriteData(0x01);\r
464         NT35516_SpiWriteData(0xED);\r
465         NT35516_SpiWriteData(0x02);\r
466         NT35516_SpiWriteData(0x1E);\r
467         NT35516_SpiWriteData(0x02);\r
468         NT35516_SpiWriteData(0x51);\r
469         \r
470         NT35516_SpiWriteCmd(0xEA); \r
471         NT35516_SpiWriteData(0x02);\r
472          NT35516_SpiWriteData(0x6C);\r
473          NT35516_SpiWriteData(0x02);\r
474          NT35516_SpiWriteData(0x8D);\r
475          NT35516_SpiWriteData(0x02);\r
476          NT35516_SpiWriteData(0xA5);\r
477          NT35516_SpiWriteData(0x02);\r
478          NT35516_SpiWriteData(0xC9);\r
479          NT35516_SpiWriteData(0x02);\r
480          NT35516_SpiWriteData(0xEA);\r
481          NT35516_SpiWriteData(0x03);\r
482          NT35516_SpiWriteData(0x19);\r
483          NT35516_SpiWriteData(0x03);\r
484          NT35516_SpiWriteData(0x45);\r
485          NT35516_SpiWriteData(0x03);\r
486          NT35516_SpiWriteData(0x7A);\r
487          \r
488         NT35516_SpiWriteCmd(0xEB); \r
489         NT35516_SpiWriteData(0x03);\r
490          NT35516_SpiWriteData(0xA0);\r
491          NT35516_SpiWriteData(0x03);\r
492          NT35516_SpiWriteData(0xF4);\r
493 \r
494         NT35516_SpiWriteCmd(0x3A); NT35516_SpiWriteData(0x77);\r
495 \r
496         NT35516_SpiWriteCmd(0x35); NT35516_SpiWriteData(0x00);\r
497 \r
498         NT35516_SpiWriteCmd(0x11); // Sleep out\r
499         mdelay(140);\r
500 \r
501         NT35516_SpiWriteCmd(0x29); // Display On\r
502         mdelay(10);\r
503 }\r
504 \r
505 static uint32_t nt35516_rgb_spi_readid(struct panel_spec *self)\r
506 {\r
507         /*Jessica TODO: need read id*/\r
508         return 0x16;\r
509 }\r
510 \r
511 #if 0\r
512 void NT35516_RGB_SPI_set_display_window(\r
513     uint16 left,     // start Horizon address\r
514     uint16 right,     // end Horizon address\r
515     uint16 top,         // start Vertical address\r
516     uint16 bottom    // end Vertical address\r
517     )\r
518 {\r
519     NT35516_SpiWriteCmd(0x2A00); NT35516_SpiWriteData((left>>8));// set left address\r
520     NT35516_SpiWriteCmd(0x2A01); NT35516_SpiWriteData((left&0xff));\r
521     NT35516_SpiWriteCmd(0x2A02); NT35516_SpiWriteData((right>>8));// set right address\r
522     NT35516_SpiWriteCmd(0x2A03); NT35516_SpiWriteData((right&0xff));\r
523 \r
524     NT35516_SpiWriteCmd(0x2B00); NT35516_SpiWriteData((top>>8));// set left address\r
525     NT35516_SpiWriteCmd(0x2B01); NT35516_SpiWriteData((top&0xff));\r
526     NT35516_SpiWriteCmd(0x2B02); NT35516_SpiWriteData((bottom>>8));// set bottom address\r
527     NT35516_SpiWriteCmd(0x2B03); NT35516_SpiWriteData((bottom&0xff));\r
528 }\r
529 \r
530 LCD_ERR_E NT35516_RGB_SPI_EnterSleep(BOOLEAN is_sleep)\r
531 {\r
532     if(is_sleep==1)\r
533     {\r
534         NT35516_SpiWriteCmd(0x28);\r
535         LCD_Delay(200);\r
536         NT35516_SpiWriteCmd(0x10);\r
537         LCD_Delay(200);\r
538         //Lcd_EnvidOnOff(0);//RGB TIMENG OFF\r
539         //LCD_Delay(200);        \r
540 \r
541     }\r
542     else\r
543     {\r
544         //Lcd_EnvidOnOff(1);//RGB TIMENG ON \r
545         //LCD_Delay(200);\r
546         //LCDinit_TFT();\r
547         //LCD_Delay(200);\r
548 \r
549     }\r
550 \r
551     return 0;\r
552 }\r
553 \r
554 LCD_ERR_E NT35516_RGB_SPI_SetDisplayWindow(\r
555     uint16 left,         //left of the window\r
556     uint16 top,            //top of the window\r
557     uint16 right,        //right of the window\r
558     uint16 bottom        //bottom of the window\r
559     )\r
560 {         \r
561     //NT35516_RGB_SPI_set_display_window(left, right, top, bottom);\r
562 \r
563     NT35516_SpiWriteCmd(0x2C);\r
564     return TRUE;\r
565 }\r
566 #endif\r
567 \r
568 \r
569 static struct panel_operations lcd_nt35516_rgb_spi_operations = {\r
570         .panel_init = nt35516_rgb_spi_init,\r
571         .panel_readid = nt35516_rgb_spi_readid,\r
572 };\r
573 \r
574 static struct timing_rgb lcd_nt35516_rgb_timing = {\r
575         .hfp = 30,  /* unit: pixel */\r
576         .hbp = 16,\r
577         .hsync = 1,\r
578         .vfp = 16, /*unit: line*/\r
579         .vbp = 16,\r
580         .vsync = 1,\r
581 };\r
582 \r
583 static struct spi_info lcd_nt35516_rgb_spi_info = {\r
584         .ops = NULL,\r
585 };\r
586 \r
587 static struct info_rgb lcd_nt35516_rgb_info = {\r
588         .cmd_bus_mode  = SPRDFB_RGB_BUS_TYPE_SPI,\r
589         .video_bus_width = 24, /*18,16*/\r
590         .h_sync_pol = SPRDFB_POLARITY_POS,\r
591         .v_sync_pol = SPRDFB_POLARITY_POS,\r
592         .de_pol = SPRDFB_POLARITY_POS,\r
593         .timing = &lcd_nt35516_rgb_timing,\r
594         .bus_info = {\r
595                 .spi = &lcd_nt35516_rgb_spi_info,\r
596         }\r
597 };\r
598 \r
599 struct panel_spec lcd_nt35516_rgb_spi_spec = {\r
600         .width = 540,\r
601         .height = 960,\r
602         .type = LCD_MODE_RGB,\r
603         .direction = LCD_DIRECT_NORMAL,\r
604         .fps = 56,\r
605         .info = {\r
606                 .rgb = &lcd_nt35516_rgb_info\r
607         },\r
608         .ops = &lcd_nt35516_rgb_spi_operations,\r
609 };\r