tizen 2.4 release
[profile/mobile/platform/kernel/linux-3.10-sc7730.git] / drivers / video / sprdfb / lcd / lcd_nt35516_rgb_spi.c
1 /* drivers/video/sc8825/lcd_nt35516_spi.c\r
2  *\r
3  * Support for nt35516 spi LCD device\r
4  *\r
5  * Copyright (C) 2010 Spreadtrum\r
6  *\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
10  *\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
15  */\r
16 \r
17 #include <linux/kernel.h>\r
18 #include <linux/delay.h>\r
19 #include "../sprdfb_panel.h"\r
20 \r
21 #define NT35516_SpiWriteCmd(cmd) \ \r
22 { \\r
23         spi_send_cmd((cmd & 0xFF));\\r
24 }\r
25 \r
26 #define  NT35516_SpiWriteData(data)\\r
27 { \\r
28         spi_send_data((data & 0xFF));\\r
29 }\r
30 \r
31 static int32_t nt35516_rgb_spi_init(struct panel_spec *self)\r
32 {\r
33         uint32_t data = 0;\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
37 \r
38         // NT35516 + AUO 4.29'\r
39         // VCC=IOVCC=3.3V  RGB_24Bit\r
40 \r
41         //NT35516_SpiWriteCmd(0xDB00);\r
42         //spi_read(&data);\r
43 \r
44         //TEST Commands\r
45 \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
51 \r
52         //NT35516_SpiWriteCmd(0xFA0F); NT35516_SpiWriteData(0x20);\r
53 \r
54         //NT35516_SpiWriteCmd(0xF300); NT35516_SpiWriteData(0x02);\r
55         //NT35516_SpiWriteCmd(0xF303); NT35516_SpiWriteData(0x15);\r
56 \r
57         //ENABLE PAGE 0    \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
64 \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
70 \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
74 \r
75         //NT35516_SpiWriteCmd(0x4C00); NT35516_SpiWriteData(0x11); //DB4=1,Enable Vivid Color,DB4=0 Disable Vivid Color\r
76 \r
77         // ENABLE PAGE 1   \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
84 \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
89 \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
94 \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
99 \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
105 \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
111 \r
112         //Gamma Voltage\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
117 \r
118         //Gamma Voltage\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
123 \r
124         NT35516_SpiWriteCmd(0xBE); \r
125         NT35516_SpiWriteData(0x57); // Setting VCOM Offset Voltage  0x4E¸ÄΪ0x57  20111019 LIYAN\r
126 \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
145          \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
163          \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
181          \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
187 \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
206          \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
224          \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
242          \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
248 \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
267          \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
285          \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
303          \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
309 \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
328          \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
346          \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
364          \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
370 \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
389          \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
407          \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
425          \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
431 \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
450          \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
468         \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
486          \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
492 \r
493         NT35516_SpiWriteCmd(0x3A); NT35516_SpiWriteData(0x77);\r
494 \r
495         NT35516_SpiWriteCmd(0x35); NT35516_SpiWriteData(0x00);\r
496 \r
497         NT35516_SpiWriteCmd(0x11); // Sleep out\r
498         mdelay(140);\r
499 \r
500         NT35516_SpiWriteCmd(0x29); // Display On\r
501         mdelay(10);\r
502 }\r
503 \r
504 static uint32_t nt35516_rgb_spi_readid(struct panel_spec *self)\r
505 {\r
506         /*Jessica TODO: need read id*/\r
507         return 0x16;\r
508 }\r
509 \r
510 #if 0\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
516     )\r
517 {\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
522 \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
527 }\r
528 \r
529 LCD_ERR_E NT35516_RGB_SPI_EnterSleep(BOOLEAN is_sleep)\r
530 {\r
531     if(is_sleep==1)\r
532     {\r
533         NT35516_SpiWriteCmd(0x28);\r
534         LCD_Delay(200);\r
535         NT35516_SpiWriteCmd(0x10);\r
536         LCD_Delay(200);\r
537         //Lcd_EnvidOnOff(0);//RGB TIMENG OFF\r
538         //LCD_Delay(200);        \r
539 \r
540     }\r
541     else\r
542     {\r
543         //Lcd_EnvidOnOff(1);//RGB TIMENG ON \r
544         //LCD_Delay(200);\r
545         //LCDinit_TFT();\r
546         //LCD_Delay(200);\r
547 \r
548     }\r
549 \r
550     return 0;\r
551 }\r
552 \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
558     )\r
559 {         \r
560     //NT35516_RGB_SPI_set_display_window(left, right, top, bottom);\r
561 \r
562     NT35516_SpiWriteCmd(0x2C);\r
563     return TRUE;\r
564 }\r
565 #endif\r
566 \r
567 \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
571 };\r
572 \r
573 static struct timing_rgb lcd_nt35516_rgb_timing = {\r
574         .hfp = 30,  /* unit: pixel */\r
575         .hbp = 16,\r
576         .hsync = 1,\r
577         .vfp = 16, /*unit: line*/\r
578         .vbp = 16,\r
579         .vsync = 1,\r
580 };\r
581 \r
582 static struct spi_info lcd_nt35516_rgb_spi_info = {\r
583         .ops = NULL,\r
584 };\r
585 \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
593         .bus_info = {\r
594                 .spi = &lcd_nt35516_rgb_spi_info,\r
595         }\r
596 };\r
597 \r
598 struct panel_spec lcd_nt35516_rgb_spi_spec = {\r
599         .width = 540,\r
600         .height = 960,\r
601         .type = LCD_MODE_RGB,\r
602         .direction = LCD_DIRECT_NORMAL,\r
603 #ifdef CONFIG_FB_SCX15\r
604         .fps = 56,\r
605 #endif\r
606         .info = {\r
607                 .rgb = &lcd_nt35516_rgb_info\r
608         },\r
609         .ops = &lcd_nt35516_rgb_spi_operations,\r
610 };\r
611 \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
615         .lcd_id = 0x16,\r
616         .lcd_name = "lcd_nt35516_rgb_spi",\r
617         .panel = &lcd_nt35516_rgb_spi_spec,\r
618 };\r
619 static int __init lcd_nt35516_rgb_spi_init(void)\r
620 {\r
621         return sprdfb_panel_register(&lcd_nt35516_rgb_spi);\r
622 }\r
623 \r
624 subsys_initcall(lcd_nt35516_rgb_spi_init);\r