1 /* drivers/video/sc8810/lcd_nt35516_mcu.c
6 * Copyright (C) 2010 Spreadtrum
8 * This software is licensed under the terms of the GNU General Public
9 * License version 2, as published by the Free Software Foundation, and
10 * may be copied, distributed, and modified under those terms.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
18 #include <asm/arch/tiger_lcd.h>
24 #define LCD_PRINT printk
26 #define LCD_PRINT(...)
28 static int32_t nt35516_init(struct panel_spec *self)
30 send_data_t send_cmd = self->info.mcu->ops->send_cmd;
31 send_cmd_data_t send_cmd_data = self->info.mcu->ops->send_cmd_data;
32 send_data_t send_data = self->info.mcu->ops->send_data;
34 LCD_PRINT("nt35516_init\n");
36 send_cmd(0xFF00); send_data(0x00AA); /*AA*/
37 send_cmd(0xFF01); send_data(0x0055);/*55*/
38 send_cmd(0xFF02); send_data(0x0025);/*25*/
39 send_cmd(0xFF03); send_data(0x0001);/*01*/
41 // send_cmd(0xF300); send_data(0x0002);
42 // send_cmd(0xF301); send_data(0x0003);
43 // send_cmd(0xF302); send_data(0x0007);
44 // send_cmd(0xF303); send_data(0x0015);
48 send_cmd(0xF000); send_data(0x0055); /*Manufacture Command Set Control*/
49 send_cmd(0xF001); send_data(0x00AA);
50 send_cmd(0xF002); send_data(0x0052);
51 send_cmd(0xF003); send_data(0x0008);
52 send_cmd(0xF004); send_data(0x0000);
54 send_cmd(0xB100); send_data(0x00FC);
56 send_cmd(0xB700); send_data(0x0000);
57 send_cmd(0xB701); send_data(0x0000);
59 send_cmd(0xC800); send_data(0x0001);
60 send_cmd(0xC801); send_data(0x0000);
61 send_cmd(0xC802); send_data(0x0046);
62 send_cmd(0xC803); send_data(0x001E);
63 send_cmd(0xC804); send_data(0x0046);
64 send_cmd(0xC805); send_data(0x001E);
65 send_cmd(0xC806); send_data(0x0046);
66 send_cmd(0xC807); send_data(0x001E);
67 send_cmd(0xC808); send_data(0x0046);
68 send_cmd(0xC809); send_data(0x001E);
69 send_cmd(0xC80A); send_data(0x0064);
70 send_cmd(0xC80B); send_data(0x003C);//64
71 send_cmd(0xC80C); send_data(0x003C);//64
72 send_cmd(0xC80D); send_data(0x0064);
73 send_cmd(0xC80E); send_data(0x0064);
74 send_cmd(0xC80F); send_data(0x003C);//64
75 send_cmd(0xC810); send_data(0x003C);//64
76 send_cmd(0xC811); send_data(0x0064);
80 send_cmd(0xB800); send_data(0x0001);
81 send_cmd(0xB801); send_data(0x0002);
82 send_cmd(0xB802); send_data(0x0002);
83 send_cmd(0xB803); send_data(0x0002);
85 send_cmd(0xBC00); send_data(0x0005); /*Zig-Zag Inversion*/
86 send_cmd(0xBC01); send_data(0x0005);
87 send_cmd(0xBC02); send_data(0x0005);
92 //send_cmd(0x4C00); send_data(0x0011); /*DB4=1,Enable Vivid Color,DB4=0 Disable Vivid Color*/
95 send_cmd(0xF000); send_data(0x0055); /*Manufacture Command Set Control */
96 send_cmd(0xF001); send_data(0x00AA);
97 send_cmd(0xF002); send_data(0x0052);
98 send_cmd(0xF003); send_data(0x0008);
99 send_cmd(0xF004); send_data(0x0001);/*Page1*/
101 send_cmd(0xB000); send_data(0x0005); /*Setting AVDD Voltage 6V*/
102 send_cmd(0xB001); send_data(0x0005);
103 send_cmd(0xB002); send_data(0x0005);
105 send_cmd(0xB100); send_data(0x0005);
106 send_cmd(0xB101); send_data(0x0005);
107 send_cmd(0xB102); send_data(0x0005);
111 send_cmd(0xB600); send_data(0x0044); /* Setting AVEE boosting time 2.5*vpnl */
112 send_cmd(0xB601); send_data(0x0044);
113 send_cmd(0xB602); send_data(0x0044);
116 /*Sett AVEE boosting time -2.5NL*/
117 send_cmd(0xB700); send_data(0x0034);//44
118 send_cmd(0xB701); send_data(0x0034);//44
119 send_cmd(0xB702); send_data(0x0034);//44
121 // send_cmd(0xB800); send_data(0x0020);//ADD 2012_9_24
122 // send_cmd(0xB801); send_data(0x0020);
123 // send_cmd(0xB802); send_data(0x0020);
125 send_cmd(0xB300); send_data(0x0012);//10
126 send_cmd(0xB301); send_data(0x0012);//10
127 send_cmd(0xB302); send_data(0x0012);//10
129 send_cmd(0xB900); send_data(0x0034);///*0x24 --> 0x14*/
130 send_cmd(0xB901); send_data(0x0034);
131 send_cmd(0xB902); send_data(0x0034);
133 send_cmd(0xB400); send_data(0x000A);//0A
134 send_cmd(0xB401); send_data(0x000A);//0A
135 send_cmd(0xB402); send_data(0x000A);//0A
137 /*Sett VGLX boosting time AVEVDD */
138 send_cmd(0xBA00); send_data(0x0024);///*0x24 --> 0x14*/
139 send_cmd(0xBA01); send_data(0x0024);
140 send_cmd(0xBA02); send_data(0x0024);
142 send_cmd(0xCB00); send_data(0x0084);//ADD 2012_9_24
143 send_cmd(0xCB01); send_data(0x0063);
146 send_cmd(0xBC00); send_data(0x0000);
147 send_cmd(0xBC01); send_data(0x00A0);/*VGMP 0x88=4.7V 0x78=4.5V 0xA0=5.0V */
148 send_cmd(0xBC02); send_data(0x0000);/*VGSP*/
151 send_cmd(0xBD00); send_data(0x0000);
152 send_cmd(0xBD01); send_data(0x00A0);/*VGMN 0x88=-4.7V 0x78=-4.5V 0xA0=-5.0V*/
153 send_cmd(0xBD02); send_data(0x0000);/*VGSN*/
155 send_cmd(0xBE00); send_data(0x004E); /* Setting VCOM Offset Voltage 0x4E\u017e??ยช0x57 20111019 LIYAN*/
159 send_cmd(0xD100); send_data(0x0000);
160 send_cmd(0xD101); send_data(0x0032);
161 send_cmd(0xD102); send_data(0x0000);
162 send_cmd(0xD103); send_data(0x0041);
163 send_cmd(0xD104); send_data(0x0000);
164 send_cmd(0xD105); send_data(0x0054);
165 send_cmd(0xD106); send_data(0x0000);
166 send_cmd(0xD107); send_data(0x0067);
167 send_cmd(0xD108); send_data(0x0000);
168 send_cmd(0xD109); send_data(0x007A);
169 send_cmd(0xD10A); send_data(0x0000);
170 send_cmd(0xD10B); send_data(0x0098);
171 send_cmd(0xD10C); send_data(0x0000);
172 send_cmd(0xD10D); send_data(0x00B0);
173 send_cmd(0xD10E); send_data(0x0000);
174 send_cmd(0xD10F); send_data(0x00DB);
175 send_cmd(0xD200); send_data(0x0001);
176 send_cmd(0xD201); send_data(0x0001);
177 send_cmd(0xD202); send_data(0x0001);
178 send_cmd(0xD203); send_data(0x003F);
179 send_cmd(0xD204); send_data(0x0001);
180 send_cmd(0xD205); send_data(0x0070);
181 send_cmd(0xD206); send_data(0x0001);
182 send_cmd(0xD207); send_data(0x00B4);
183 send_cmd(0xD208); send_data(0x0001);
184 send_cmd(0xD209); send_data(0x00EC);
185 send_cmd(0xD20A); send_data(0x0001);
186 send_cmd(0xD20B); send_data(0x00ED);
187 send_cmd(0xD20C); send_data(0x0002);
188 send_cmd(0xD20D); send_data(0x001E);
189 send_cmd(0xD20E); send_data(0x0002);
190 send_cmd(0xD20F); send_data(0x0051);
191 send_cmd(0xD300); send_data(0x0002);
192 send_cmd(0xD301); send_data(0x006C);
193 send_cmd(0xD302); send_data(0x0002);
194 send_cmd(0xD303); send_data(0x008D);
195 send_cmd(0xD304); send_data(0x0002);
196 send_cmd(0xD305); send_data(0x00A5);
197 send_cmd(0xD306); send_data(0x0002);
198 send_cmd(0xD307); send_data(0x00C9);
199 send_cmd(0xD308); send_data(0x0002);
200 send_cmd(0xD309); send_data(0x00EA);
201 send_cmd(0xD30A); send_data(0x0003);
202 send_cmd(0xD30B); send_data(0x0019);
203 send_cmd(0xD30C); send_data(0x0003);
204 send_cmd(0xD30D); send_data(0x0045);
205 send_cmd(0xD30E); send_data(0x0003);
206 send_cmd(0xD30F); send_data(0x007A);
207 send_cmd(0xD400); send_data(0x0003);
208 send_cmd(0xD401); send_data(0x00B0);
209 send_cmd(0xD402); send_data(0x0003);
210 send_cmd(0xD403); send_data(0x00F4);
212 /*Posie Gamma for GREEN*/
213 send_cmd(0xD500); send_data(0x0000);
214 send_cmd(0xD501); send_data(0x0037);
215 send_cmd(0xD502); send_data(0x0000);
216 send_cmd(0xD503); send_data(0x0041);
217 send_cmd(0xD504); send_data(0x0000);
218 send_cmd(0xD505); send_data(0x0054);
219 send_cmd(0xD506); send_data(0x0000);
220 send_cmd(0xD507); send_data(0x0067);
221 send_cmd(0xD508); send_data(0x0000);
222 send_cmd(0xD509); send_data(0x007A);
223 send_cmd(0xD50A); send_data(0x0000);
224 send_cmd(0xD50B); send_data(0x0098);
225 send_cmd(0xD50C); send_data(0x0000);
226 send_cmd(0xD50D); send_data(0x00B0);
227 send_cmd(0xD50E); send_data(0x0000);
228 send_cmd(0xD50F); send_data(0x00DB);
229 send_cmd(0xD600); send_data(0x0001);
230 send_cmd(0xD601); send_data(0x0001);
231 send_cmd(0xD602); send_data(0x0001);
232 send_cmd(0xD603); send_data(0x003F);
233 send_cmd(0xD604); send_data(0x0001);
234 send_cmd(0xD605); send_data(0x0070);
235 send_cmd(0xD606); send_data(0x0001);
236 send_cmd(0xD607); send_data(0x00B4);
237 send_cmd(0xD608); send_data(0x0001);
238 send_cmd(0xD609); send_data(0x00EC);
239 send_cmd(0xD60A); send_data(0x0001);
240 send_cmd(0xD60B); send_data(0x00ED);
241 send_cmd(0xD60C); send_data(0x0002);
242 send_cmd(0xD60D); send_data(0x001E);
243 send_cmd(0xD60E); send_data(0x0002);
244 send_cmd(0xD60F); send_data(0x0051);
245 send_cmd(0xD700); send_data(0x0002);
246 send_cmd(0xD701); send_data(0x006C);
247 send_cmd(0xD702); send_data(0x0002);
248 send_cmd(0xD703); send_data(0x008D);
249 send_cmd(0xD704); send_data(0x0002);
250 send_cmd(0xD705); send_data(0x00A5);
251 send_cmd(0xD706); send_data(0x0002);
252 send_cmd(0xD707); send_data(0x00C9);
253 send_cmd(0xD708); send_data(0x0002);
254 send_cmd(0xD709); send_data(0x00EA);
255 send_cmd(0xD70A); send_data(0x0003);
256 send_cmd(0xD70B); send_data(0x0019);
257 send_cmd(0xD70C); send_data(0x0003);
258 send_cmd(0xD70D); send_data(0x0045);
259 send_cmd(0xD70E); send_data(0x0003);
260 send_cmd(0xD70F); send_data(0x007A);
261 send_cmd(0xD800); send_data(0x0003);
262 send_cmd(0xD801); send_data(0x00A0);
263 send_cmd(0xD802); send_data(0x0003);
264 send_cmd(0xD803); send_data(0x00F4);
266 /*Posie Gamma for BLUE*/
267 send_cmd(0xD900); send_data(0x0000);
268 send_cmd(0xD901); send_data(0x0032);
269 send_cmd(0xD902); send_data(0x0000);
270 send_cmd(0xD903); send_data(0x0041);
271 send_cmd(0xD904); send_data(0x0000);
272 send_cmd(0xD905); send_data(0x0054);
273 send_cmd(0xD906); send_data(0x0000);
274 send_cmd(0xD907); send_data(0x0067);
275 send_cmd(0xD908); send_data(0x0000);
276 send_cmd(0xD909); send_data(0x007A);
277 send_cmd(0xD90A); send_data(0x0000);
278 send_cmd(0xD90B); send_data(0x0098);
279 send_cmd(0xD90C); send_data(0x0000);
280 send_cmd(0xD90D); send_data(0x00B0);
281 send_cmd(0xD90E); send_data(0x0000);
282 send_cmd(0xD90F); send_data(0x00DB);
283 send_cmd(0xDD00); send_data(0x0001);
284 send_cmd(0xDD01); send_data(0x0001);
285 send_cmd(0xDD02); send_data(0x0001);
286 send_cmd(0xDD03); send_data(0x003F);
287 send_cmd(0xDD04); send_data(0x0001);
288 send_cmd(0xDD05); send_data(0x0070);
289 send_cmd(0xDD06); send_data(0x0001);
290 send_cmd(0xDD07); send_data(0x00B4);
291 send_cmd(0xDD08); send_data(0x0001);
292 send_cmd(0xDD09); send_data(0x00EC);
293 send_cmd(0xDD0A); send_data(0x0001);
294 send_cmd(0xDD0B); send_data(0x00ED);
295 send_cmd(0xDD0C); send_data(0x0002);
296 send_cmd(0xDD0D); send_data(0x001E);
297 send_cmd(0xDD0E); send_data(0x0002);
298 send_cmd(0xDD0F); send_data(0x0051);
299 send_cmd(0xDE00); send_data(0x0002);
300 send_cmd(0xDE01); send_data(0x006C);
301 send_cmd(0xDE02); send_data(0x0002);
302 send_cmd(0xDE03); send_data(0x008D);
303 send_cmd(0xDE04); send_data(0x0002);
304 send_cmd(0xDE05); send_data(0x00A5);
305 send_cmd(0xDE06); send_data(0x0002);
306 send_cmd(0xDE07); send_data(0x00C9);
307 send_cmd(0xDE08); send_data(0x0002);
308 send_cmd(0xDE09); send_data(0x00EA);
309 send_cmd(0xDE0A); send_data(0x0003);
310 send_cmd(0xDE0B); send_data(0x0019);
311 send_cmd(0xDE0C); send_data(0x0003);
312 send_cmd(0xDE0D); send_data(0x0045);
313 send_cmd(0xDE0E); send_data(0x0003);
314 send_cmd(0xDE0F); send_data(0x007A);
315 send_cmd(0xDF00); send_data(0x0003);
316 send_cmd(0xDF01); send_data(0x00A0);
317 send_cmd(0xDF02); send_data(0x0003);
318 send_cmd(0xDF03); send_data(0x00F4);
320 /*Negae Gamma for RED*/
321 send_cmd(0xE000); send_data(0x0000);
322 send_cmd(0xE001); send_data(0x0032);
323 send_cmd(0xE002); send_data(0x0000);
324 send_cmd(0xE003); send_data(0x0041);
325 send_cmd(0xE004); send_data(0x0000);
326 send_cmd(0xE005); send_data(0x0054);
327 send_cmd(0xE006); send_data(0x0000);
328 send_cmd(0xE007); send_data(0x0067);
329 send_cmd(0xE008); send_data(0x0000);
330 send_cmd(0xE009); send_data(0x007A);
331 send_cmd(0xE00A); send_data(0x0000);
332 send_cmd(0xE00B); send_data(0x0098);
333 send_cmd(0xE00C); send_data(0x0000);
334 send_cmd(0xE00D); send_data(0x00B0);
335 send_cmd(0xE00E); send_data(0x0000);
336 send_cmd(0xE00F); send_data(0x00DB);
337 send_cmd(0xE100); send_data(0x0001);
338 send_cmd(0xE101); send_data(0x0001);
339 send_cmd(0xE102); send_data(0x0001);
340 send_cmd(0xE103); send_data(0x003F);
341 send_cmd(0xE104); send_data(0x0001);
342 send_cmd(0xE105); send_data(0x0070);
343 send_cmd(0xE106); send_data(0x0001);
344 send_cmd(0xE107); send_data(0x00B4);
345 send_cmd(0xE108); send_data(0x0001);
346 send_cmd(0xE109); send_data(0x00EC);
347 send_cmd(0xE10A); send_data(0x0001);
348 send_cmd(0xE10B); send_data(0x00ED);
349 send_cmd(0xE10C); send_data(0x0002);
350 send_cmd(0xE10D); send_data(0x001E);
351 send_cmd(0xE10E); send_data(0x0002);
352 send_cmd(0xE10F); send_data(0x0051);
353 send_cmd(0xE200); send_data(0x0002);
354 send_cmd(0xE201); send_data(0x006C);
355 send_cmd(0xE202); send_data(0x0002);
356 send_cmd(0xE203); send_data(0x008D);
357 send_cmd(0xE204); send_data(0x0002);
358 send_cmd(0xE205); send_data(0x00A5);
359 send_cmd(0xE206); send_data(0x0002);
360 send_cmd(0xE207); send_data(0x00C9);
361 send_cmd(0xE208); send_data(0x0002);
362 send_cmd(0xE209); send_data(0x00EA);
363 send_cmd(0xE20A); send_data(0x0003);
364 send_cmd(0xE20B); send_data(0x0019);
365 send_cmd(0xE20C); send_data(0x0003);
366 send_cmd(0xE20D); send_data(0x0045);
367 send_cmd(0xE20E); send_data(0x0003);
368 send_cmd(0xE20F); send_data(0x007A);
369 send_cmd(0xE300); send_data(0x0003);
370 send_cmd(0xE301); send_data(0x00A0);
371 send_cmd(0xE302); send_data(0x0003);
372 send_cmd(0xE303); send_data(0x00F4);
374 /*Negae Gamma for GERREN*/
375 send_cmd(0xE400); send_data(0x0000);
376 send_cmd(0xE401); send_data(0x0032);
377 send_cmd(0xE402); send_data(0x0000);
378 send_cmd(0xE403); send_data(0x0041);
379 send_cmd(0xE404); send_data(0x0000);
380 send_cmd(0xE405); send_data(0x0054);
381 send_cmd(0xE406); send_data(0x0000);
382 send_cmd(0xE407); send_data(0x0067);
383 send_cmd(0xE408); send_data(0x0000);
384 send_cmd(0xE409); send_data(0x007A);
385 send_cmd(0xE40A); send_data(0x0000);
386 send_cmd(0xE40B); send_data(0x0098);
387 send_cmd(0xE40C); send_data(0x0000);
388 send_cmd(0xE40D); send_data(0x00B0);
389 send_cmd(0xE40E); send_data(0x0000);
390 send_cmd(0xE40F); send_data(0x00DB);
391 send_cmd(0xE500); send_data(0x0001);
392 send_cmd(0xE501); send_data(0x0001);
393 send_cmd(0xE502); send_data(0x0001);
394 send_cmd(0xE503); send_data(0x003F);
395 send_cmd(0xE504); send_data(0x0001);
396 send_cmd(0xE505); send_data(0x0070);
397 send_cmd(0xE506); send_data(0x0001);
398 send_cmd(0xE507); send_data(0x00B4);
399 send_cmd(0xE508); send_data(0x0001);
400 send_cmd(0xE509); send_data(0x00EC);
401 send_cmd(0xE50A); send_data(0x0001);
402 send_cmd(0xE50B); send_data(0x00ED);
403 send_cmd(0xE50C); send_data(0x0002);
404 send_cmd(0xE50D); send_data(0x001E);
405 send_cmd(0xE50E); send_data(0x0002);
406 send_cmd(0xE50F); send_data(0x0051);
407 send_cmd(0xE600); send_data(0x0002);
408 send_cmd(0xE601); send_data(0x006C);
409 send_cmd(0xE602); send_data(0x0002);
410 send_cmd(0xE603); send_data(0x008D);
411 send_cmd(0xE604); send_data(0x0002);
412 send_cmd(0xE605); send_data(0x00A5);
413 send_cmd(0xE606); send_data(0x0002);
414 send_cmd(0xE607); send_data(0x00C9);
415 send_cmd(0xE608); send_data(0x0002);
416 send_cmd(0xE609); send_data(0x00EA);
417 send_cmd(0xE60A); send_data(0x0003);
418 send_cmd(0xE60B); send_data(0x0019);
419 send_cmd(0xE60C); send_data(0x0003);
420 send_cmd(0xE60D); send_data(0x0045);
421 send_cmd(0xE60E); send_data(0x0003);
422 send_cmd(0xE60F); send_data(0x007A);
423 send_cmd(0xE700); send_data(0x0003);
424 send_cmd(0xE701); send_data(0x00A0);
425 send_cmd(0xE702); send_data(0x0003);
426 send_cmd(0xE703); send_data(0x00F4);
428 /*Negae Gamma for BLUE*/
429 send_cmd(0xE800); send_data(0x0000);
430 send_cmd(0xE801); send_data(0x0032);
431 send_cmd(0xE802); send_data(0x0000);
432 send_cmd(0xE803); send_data(0x0041);
433 send_cmd(0xE804); send_data(0x0000);
434 send_cmd(0xE805); send_data(0x0054);
435 send_cmd(0xE806); send_data(0x0000);
436 send_cmd(0xE807); send_data(0x0067);
437 send_cmd(0xE808); send_data(0x0000);
438 send_cmd(0xE809); send_data(0x007A);
439 send_cmd(0xE80A); send_data(0x0000);
440 send_cmd(0xE80B); send_data(0x0098);
441 send_cmd(0xE80C); send_data(0x0000);
442 send_cmd(0xE80D); send_data(0x00B0);
443 send_cmd(0xE80E); send_data(0x0000);
444 send_cmd(0xE80F); send_data(0x00DB);
445 send_cmd(0xE900); send_data(0x0001);
446 send_cmd(0xE901); send_data(0x0001);
447 send_cmd(0xE902); send_data(0x0001);
448 send_cmd(0xE903); send_data(0x003F);
449 send_cmd(0xE904); send_data(0x0001);
450 send_cmd(0xE905); send_data(0x0070);
451 send_cmd(0xE906); send_data(0x0001);
452 send_cmd(0xE907); send_data(0x00B4);
453 send_cmd(0xE908); send_data(0x0001);
454 send_cmd(0xE909); send_data(0x00EC);
455 send_cmd(0xE90A); send_data(0x0001);
456 send_cmd(0xE90B); send_data(0x00ED);
457 send_cmd(0xE90C); send_data(0x0002);
458 send_cmd(0xE90D); send_data(0x001E);
459 send_cmd(0xE90E); send_data(0x0002);
460 send_cmd(0xE90F); send_data(0x0051);
461 send_cmd(0xEA00); send_data(0x0002);
462 send_cmd(0xEA01); send_data(0x006C);
463 send_cmd(0xEA02); send_data(0x0002);
464 send_cmd(0xEA03); send_data(0x008D);
465 send_cmd(0xEA04); send_data(0x0002);
466 send_cmd(0xEA05); send_data(0x00A5);
467 send_cmd(0xEA06); send_data(0x0002);
468 send_cmd(0xEA07); send_data(0x00C9);
469 send_cmd(0xEA08); send_data(0x0002);
470 send_cmd(0xEA09); send_data(0x00EA);
471 send_cmd(0xEA0A); send_data(0x0003);
472 send_cmd(0xEA0B); send_data(0x0019);
473 send_cmd(0xEA0C); send_data(0x0003);
474 send_cmd(0xEA0D); send_data(0x0045);
475 send_cmd(0xEA0E); send_data(0x0003);
476 send_cmd(0xEA0F); send_data(0x007A);
477 send_cmd(0xEB00); send_data(0x0003);
478 send_cmd(0xEB01); send_data(0x00A0);
479 send_cmd(0xEB02); send_data(0x0003);
480 send_cmd(0xEB03); send_data(0x00F4);
482 send_cmd(0x3A00); send_data(0x0007);
484 send_cmd(0x3500); send_data(0x0000);
486 send_cmd(0x4C00); send_data(0x0011);
488 send_cmd(0x1100); /* Sleep out*/
490 // send_cmd(0x2900); /* Display On*/
492 send_cmd(0x2900); /* Display On*/
496 static int32_t nt35516_enter_sleep(struct panel_spec *self, uint8_t is_sleep)
498 send_data_t send_cmd = self->info.mcu->ops->send_cmd;
499 send_cmd_data_t send_cmd_data = self->info.mcu->ops->send_cmd_data;
500 send_data_t send_data = self->info.mcu->ops->send_data;
507 /*Lcd_EnvidOnOff(0);*//*RGB TIMENG OFF*/
516 /*Lcd_EnvidOnOff(1);*//*RGB TIMENG ON*/
528 static int32_t nt35516_set_window(struct panel_spec*self,
529 uint16_t left, uint16_t top, uint16_t right, uint16_t bottom)
531 send_data_t send_cmd = self->info.mcu->ops->send_cmd;
532 send_cmd_data_t send_cmd_data = self->info.mcu->ops->send_cmd_data;
533 send_data_t send_data = self->info.mcu->ops->send_data;
535 LCD_PRINT("nt35516_set_window: %d, %d, %d, %d\n",left, top, right, bottom);
537 send_cmd(0x2A00); send_data((left>>8));// set left address
538 send_cmd(0x2A01); send_data((left&0xff));
539 send_cmd(0x2A02); send_data((right>>8));// set right address
540 send_cmd(0x2A03); send_data((right&0xff));
542 send_cmd(0x2B00); send_data((top>>8));// set left address
543 send_cmd(0x2B01); send_data((top&0xff));
544 send_cmd(0x2B02); send_data((bottom>>8));// set bottom address
545 send_cmd(0x2B03); send_data((bottom&0xff));
551 static int32_t nt35516_invalidate(struct panel_spec *self)
553 LCD_PRINT("nt35516_invalidate\n");
555 return self->ops->panel_set_window(self, 0, 0,
556 self->width - 1, self->height - 1);
561 static int32_t nt35516_invalidate_rect(struct panel_spec *self,
562 uint16_t left, uint16_t top,
563 uint16_t right, uint16_t bottom)
565 LCD_PRINT("nt35516_invalidate_rect \n");
567 return self->ops->panel_set_window(self, left, top,
571 static int32_t nt35516_read_id(struct panel_spec *self)
574 send_data_t send_cmd = self->info.mcu->ops->send_cmd;
575 read_data_t read_data = self->info.mcu->ops->read_data;
576 send_data_t send_data = self->info.mcu->ops->send_data;
579 send_cmd(0xF000); send_data(0x0055); /*Manufacture Command Set Control */
580 send_cmd(0xF001); send_data(0x00AA);
581 send_cmd(0xF002); send_data(0x0052);
582 send_cmd(0xF003); send_data(0x0008);
583 send_cmd(0xF004); send_data(0x0001);/*Page1*/
585 send_cmd(0xc501); //0xc500
591 static struct panel_operations lcd_nt35516_operations = {
592 .panel_init = nt35516_init,
593 .panel_set_window = nt35516_set_window,
594 .panel_invalidate_rect= nt35516_invalidate_rect,
595 .panel_invalidate = nt35516_invalidate,
596 .panel_enter_sleep = nt35516_enter_sleep,
597 .panel_readid = nt35516_read_id
600 static struct timing_mcu lcd_nt35516_timing[] = {
601 [0] = { // read/write register timing
609 [1] = { // read/write gram timing
619 static struct info_mcu lcd_nt35516_info = {
620 .bus_mode = LCD_BUS_8080,
623 .timing = lcd_nt35516_timing,
628 struct panel_spec lcd_nt35516_mcu_spec = {
631 .type = LCD_MODE_MCU,
632 .direction = LCD_DIRECT_NORMAL,
634 .mcu = &lcd_nt35516_info
636 .ops = &lcd_nt35516_operations,