1 // Copyright (C) 2022 Beken Corporation
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 #include <driver/gpio.h>
16 #include <driver/media_types.h>
17 #include <driver/lcd_types.h>
18 #include <driver/lcd_spi.h>
19 #include "bk_misc.h"
20 #include "lcd_devices.h"
21
22
23 static const lcd_rgb_t lcd_rgb =
24 {
25 .clk = LCD_26M,
26 .data_out_clk_edge = NEGEDGE_OUTPUT,
27
28 .hsync_back_porch = 40, //3
29 .hsync_front_porch = 5, //2
30 .vsync_back_porch = 8, //1
31 .vsync_front_porch = 8, //1
32 };
33
lcd_gc9503v_config(void)34 static void lcd_gc9503v_config(void)
35 {
36 lcd_spi_write_cmd(0xF0);
37 lcd_spi_write_data(0x55);
38 lcd_spi_write_data(0xAA);
39 lcd_spi_write_data(0x52);
40 lcd_spi_write_data(0x08);
41 lcd_spi_write_data(0x00);
42
43 lcd_spi_write_cmd(0xF6);
44 lcd_spi_write_data(0x5A);
45 lcd_spi_write_data(0x87);
46
47 lcd_spi_write_cmd(0xC1);
48 lcd_spi_write_data(0x3F);
49
50 lcd_spi_write_cmd(0xC2);
51 lcd_spi_write_data(0x0E);
52
53 lcd_spi_write_cmd(0xC6);
54 lcd_spi_write_data(0xF8);
55
56 lcd_spi_write_cmd(0xC9);
57 lcd_spi_write_data(0x10);
58
59 lcd_spi_write_cmd(0xCD);
60 lcd_spi_write_data(0x25);
61
62 lcd_spi_write_cmd(0xF8);
63 lcd_spi_write_data(0x8A);
64 lcd_spi_write_data(0xAC);
65 lcd_spi_write_data(0x65);
66
67 lcd_spi_write_cmd(0xA0);
68 lcd_spi_write_data(0xBB);
69 lcd_spi_write_cmd(0xA7);
70 lcd_spi_write_data(0x47);
71
72 lcd_spi_write_cmd(0xFA);
73 lcd_spi_write_data(0x0F);
74 lcd_spi_write_data(0x0F);
75 lcd_spi_write_data(0x00);
76 lcd_spi_write_data(0x04);
77
78 lcd_spi_write_cmd(0xA3);
79 lcd_spi_write_data(0xEE);
80
81 lcd_spi_write_cmd(0xFD);
82 lcd_spi_write_data(0x28);
83 lcd_spi_write_data(0x28);
84 lcd_spi_write_data(0x00);
85
86 lcd_spi_write_cmd(0x71);
87 lcd_spi_write_data(0x48);
88
89 lcd_spi_write_cmd(0x72);
90 lcd_spi_write_data(0x48);
91
92 lcd_spi_write_cmd(0x73);
93 lcd_spi_write_data(0x00);
94 lcd_spi_write_data(0x44);
95
96 lcd_spi_write_cmd(0x97);
97 lcd_spi_write_data(0xEE);
98
99 lcd_spi_write_cmd(0x83);
100 lcd_spi_write_data(0x93);
101
102 lcd_spi_write_cmd(0x9A);
103 lcd_spi_write_data(0x90);
104
105 lcd_spi_write_cmd(0x9B);
106 lcd_spi_write_data(0xC4);
107
108 lcd_spi_write_cmd(0x82);
109 lcd_spi_write_data(0x73);
110 lcd_spi_write_data(0x73);
111
112 lcd_spi_write_cmd(0xB1);
113 lcd_spi_write_data(0x90);// 0x90
114
115 lcd_spi_write_cmd(0x6D);
116 lcd_spi_write_data(0x00);
117 lcd_spi_write_data(0x1F);
118 lcd_spi_write_data(0x19);
119 lcd_spi_write_data(0x1A);
120 lcd_spi_write_data(0x0C);
121 lcd_spi_write_data(0x0A);
122 lcd_spi_write_data(0x10);
123 lcd_spi_write_data(0x0E);
124 lcd_spi_write_data(0x02);
125 lcd_spi_write_data(0x08);
126 lcd_spi_write_data(0x1E);
127 lcd_spi_write_data(0x1E);
128 lcd_spi_write_data(0x1E);
129 lcd_spi_write_data(0x1E);
130 lcd_spi_write_data(0x1E);
131 lcd_spi_write_data(0x1E);
132 lcd_spi_write_data(0x1E);
133 lcd_spi_write_data(0x1E);
134 lcd_spi_write_data(0x1E);
135 lcd_spi_write_data(0x1E);
136 lcd_spi_write_data(0x1E);
137 lcd_spi_write_data(0x1E);
138 lcd_spi_write_data(0x07);
139 lcd_spi_write_data(0x01);
140 lcd_spi_write_data(0x0D);
141 lcd_spi_write_data(0x0F);
142 lcd_spi_write_data(0x09);
143 lcd_spi_write_data(0x0B);
144 lcd_spi_write_data(0x1A);
145 lcd_spi_write_data(0x19);
146 lcd_spi_write_data(0x1F);
147 lcd_spi_write_data(0x00);
148
149 lcd_spi_write_cmd(0x64);
150 lcd_spi_write_data(0x38);
151 lcd_spi_write_data(0x08);
152 lcd_spi_write_data(0x03);
153 lcd_spi_write_data(0x20);
154 lcd_spi_write_data(0x03);
155 lcd_spi_write_data(0x03);
156 lcd_spi_write_data(0x38);
157 lcd_spi_write_data(0x07);
158 lcd_spi_write_data(0x03);
159 lcd_spi_write_data(0x21);
160 lcd_spi_write_data(0x03);
161 lcd_spi_write_data(0x03);
162 lcd_spi_write_data(0x0A);
163 lcd_spi_write_data(0x7A);
164 lcd_spi_write_data(0x0A);
165 lcd_spi_write_data(0x7A);
166
167 lcd_spi_write_cmd(0x65);
168 lcd_spi_write_data(0x38);
169 lcd_spi_write_data(0x06);
170 lcd_spi_write_data(0x03);
171 lcd_spi_write_data(0x22);
172 lcd_spi_write_data(0x03);
173 lcd_spi_write_data(0x03);
174 lcd_spi_write_data(0x38);
175 lcd_spi_write_data(0x05);
176 lcd_spi_write_data(0x03);
177 lcd_spi_write_data(0x23);
178 lcd_spi_write_data(0x03);
179 lcd_spi_write_data(0x03);
180 lcd_spi_write_data(0x0A);
181 lcd_spi_write_data(0x7A);
182 lcd_spi_write_data(0x0A);
183 lcd_spi_write_data(0x7A);
184
185 lcd_spi_write_cmd(0x66);
186 lcd_spi_write_data(0x38);
187 lcd_spi_write_data(0x04);
188 lcd_spi_write_data(0x03);
189 lcd_spi_write_data(0x24);
190 lcd_spi_write_data(0x03);
191 lcd_spi_write_data(0x03);
192 lcd_spi_write_data(0x38);
193 lcd_spi_write_data(0x03);
194 lcd_spi_write_data(0x03);
195 lcd_spi_write_data(0x25);
196 lcd_spi_write_data(0x03);
197 lcd_spi_write_data(0x03);
198 lcd_spi_write_data(0x0A);
199 lcd_spi_write_data(0x7A);
200 lcd_spi_write_data(0x0A);
201 lcd_spi_write_data(0x7A);
202
203 lcd_spi_write_cmd(0x67);
204 lcd_spi_write_data(0x38);
205 lcd_spi_write_data(0x02);
206 lcd_spi_write_data(0x03);
207 lcd_spi_write_data(0x26);
208 lcd_spi_write_data(0x03);
209 lcd_spi_write_data(0x03);
210 lcd_spi_write_data(0x38);
211 lcd_spi_write_data(0x01);
212 lcd_spi_write_data(0x03);
213 lcd_spi_write_data(0x27);
214 lcd_spi_write_data(0x03);
215 lcd_spi_write_data(0x03);
216 lcd_spi_write_data(0x0A);
217 lcd_spi_write_data(0x7A);
218 lcd_spi_write_data(0x0A);
219 lcd_spi_write_data(0x7A);
220
221 lcd_spi_write_cmd(0x68);
222 lcd_spi_write_data(0x3B);
223 lcd_spi_write_data(0x08);
224 lcd_spi_write_data(0x1B);
225 lcd_spi_write_data(0x08);
226 lcd_spi_write_data(0x1B);
227 lcd_spi_write_data(0x60);
228 lcd_spi_write_data(0x70);
229 lcd_spi_write_data(0x08);
230 lcd_spi_write_data(0x1B);
231 lcd_spi_write_data(0x08);
232 lcd_spi_write_data(0x1B);
233 lcd_spi_write_data(0x60);
234 lcd_spi_write_data(0x70);
235
236 lcd_spi_write_cmd(0x60);
237 lcd_spi_write_data(0x38);
238 lcd_spi_write_data(0x0C);
239 lcd_spi_write_data(0x08);
240 lcd_spi_write_data(0x7A);
241 lcd_spi_write_data(0x38);
242 lcd_spi_write_data(0x0B);
243 lcd_spi_write_data(0x08);
244 lcd_spi_write_data(0x7A);
245
246 lcd_spi_write_cmd(0x61);
247 lcd_spi_write_data(0x18);
248 lcd_spi_write_data(0x00);
249 lcd_spi_write_data(0x7A);
250 lcd_spi_write_data(0x7A);
251 lcd_spi_write_data(0x18);
252 lcd_spi_write_data(0x00);
253 lcd_spi_write_data(0x7A);
254 lcd_spi_write_data(0x7A);
255
256 lcd_spi_write_cmd(0x62);
257 lcd_spi_write_data(0x18);
258 lcd_spi_write_data(0x00);
259 lcd_spi_write_data(0x7A);
260 lcd_spi_write_data(0x7A);
261 lcd_spi_write_data(0x18);
262 lcd_spi_write_data(0x00);
263 lcd_spi_write_data(0x7A);
264 lcd_spi_write_data(0x7A);
265
266 lcd_spi_write_cmd(0x63);
267 lcd_spi_write_data(0x38);
268 lcd_spi_write_data(0x0A);
269 lcd_spi_write_data(0x08);
270 lcd_spi_write_data(0x7A);
271 lcd_spi_write_data(0x38);
272 lcd_spi_write_data(0x09);
273 lcd_spi_write_data(0x08);
274 lcd_spi_write_data(0x7A);
275
276 lcd_spi_write_cmd(0x69);
277 lcd_spi_write_data(0x01);
278 lcd_spi_write_data(0x11);
279 lcd_spi_write_data(0x01);
280 lcd_spi_write_data(0x11);
281 lcd_spi_write_data(0x01);
282 lcd_spi_write_data(0x11);
283 lcd_spi_write_data(0x08);
284
285 lcd_spi_write_cmd(0x6B);
286 lcd_spi_write_data(0x07);
287
288 lcd_spi_write_cmd(0x7A);
289 lcd_spi_write_data(0x08);
290 lcd_spi_write_data(0x13);
291
292 lcd_spi_write_cmd(0x7B);
293 lcd_spi_write_data(0x08);
294 lcd_spi_write_data(0x13);
295
296 lcd_spi_write_cmd(0xD1);
297 lcd_spi_write_data(0x00);
298 lcd_spi_write_data(0x00);
299 lcd_spi_write_data(0x00);
300 lcd_spi_write_data(0x05);
301 lcd_spi_write_data(0x00);
302 lcd_spi_write_data(0x10);
303 lcd_spi_write_data(0x00);
304 lcd_spi_write_data(0x1A);
305 lcd_spi_write_data(0x00);
306 lcd_spi_write_data(0x20);
307 lcd_spi_write_data(0x00);
308 lcd_spi_write_data(0x30);
309 lcd_spi_write_data(0x00);
310 lcd_spi_write_data(0x3B);
311 lcd_spi_write_data(0x00);
312 lcd_spi_write_data(0x55);
313 lcd_spi_write_data(0x00);
314 lcd_spi_write_data(0x68);
315 lcd_spi_write_data(0x00);
316 lcd_spi_write_data(0x86);
317 lcd_spi_write_data(0x00);
318 lcd_spi_write_data(0xBA);
319 lcd_spi_write_data(0x01);
320 lcd_spi_write_data(0x2E);
321 lcd_spi_write_data(0x01);
322 lcd_spi_write_data(0x8D);
323 lcd_spi_write_data(0x01);
324 lcd_spi_write_data(0x8E);
325 lcd_spi_write_data(0x01);
326 lcd_spi_write_data(0xE5);
327 lcd_spi_write_data(0x02);
328 lcd_spi_write_data(0x46);
329 lcd_spi_write_data(0x02);
330 lcd_spi_write_data(0xA0);
331 lcd_spi_write_data(0x03);
332 lcd_spi_write_data(0x00);
333 lcd_spi_write_data(0x03);
334 lcd_spi_write_data(0x30);
335 lcd_spi_write_data(0x03);
336 lcd_spi_write_data(0x72);
337 lcd_spi_write_data(0x03);
338 lcd_spi_write_data(0x98);
339 lcd_spi_write_data(0x03);
340 lcd_spi_write_data(0xCA);
341 lcd_spi_write_data(0x03);
342 lcd_spi_write_data(0xE0);
343 lcd_spi_write_data(0x03);
344 lcd_spi_write_data(0xF5);
345 lcd_spi_write_data(0x03);
346 lcd_spi_write_data(0xFD);
347 lcd_spi_write_data(0x03);
348 lcd_spi_write_data(0xFF);
349
350 lcd_spi_write_cmd(0xD2);
351 lcd_spi_write_data(0x00);
352 lcd_spi_write_data(0x00);
353 lcd_spi_write_data(0x00);
354 lcd_spi_write_data(0x05);
355 lcd_spi_write_data(0x00);
356 lcd_spi_write_data(0x10);
357 lcd_spi_write_data(0x00);
358 lcd_spi_write_data(0x1A);
359 lcd_spi_write_data(0x00);
360 lcd_spi_write_data(0x20);
361 lcd_spi_write_data(0x00);
362 lcd_spi_write_data(0x30);
363 lcd_spi_write_data(0x00);
364 lcd_spi_write_data(0x3B);
365 lcd_spi_write_data(0x00);
366 lcd_spi_write_data(0x55);
367 lcd_spi_write_data(0x00);
368 lcd_spi_write_data(0x68);
369 lcd_spi_write_data(0x00);
370 lcd_spi_write_data(0x86);
371 lcd_spi_write_data(0x00);
372 lcd_spi_write_data(0xBA);
373 lcd_spi_write_data(0x01);
374 lcd_spi_write_data(0x2E);
375 lcd_spi_write_data(0x01);
376 lcd_spi_write_data(0x8D);
377 lcd_spi_write_data(0x01);
378 lcd_spi_write_data(0x8E);
379 lcd_spi_write_data(0x01);
380 lcd_spi_write_data(0xE5);
381 lcd_spi_write_data(0x02);
382 lcd_spi_write_data(0x46);
383 lcd_spi_write_data(0x02);
384 lcd_spi_write_data(0xA0);
385 lcd_spi_write_data(0x03);
386 lcd_spi_write_data(0x00);
387 lcd_spi_write_data(0x03);
388 lcd_spi_write_data(0x30);
389 lcd_spi_write_data(0x03);
390 lcd_spi_write_data(0x72);
391 lcd_spi_write_data(0x03);
392 lcd_spi_write_data(0x98);
393 lcd_spi_write_data(0x03);
394 lcd_spi_write_data(0xCA);
395 lcd_spi_write_data(0x03);
396 lcd_spi_write_data(0xE0);
397 lcd_spi_write_data(0x03);
398 lcd_spi_write_data(0xF5);
399 lcd_spi_write_data(0x03);
400 lcd_spi_write_data(0xFD);
401 lcd_spi_write_data(0x03);
402 lcd_spi_write_data(0xFF);
403
404 lcd_spi_write_cmd(0xD3);
405 lcd_spi_write_data(0x00);
406 lcd_spi_write_data(0x00);
407 lcd_spi_write_data(0x00);
408 lcd_spi_write_data(0x05);
409 lcd_spi_write_data(0x00);
410 lcd_spi_write_data(0x10);
411 lcd_spi_write_data(0x00);
412 lcd_spi_write_data(0x1A);
413 lcd_spi_write_data(0x00);
414 lcd_spi_write_data(0x20);
415 lcd_spi_write_data(0x00);
416 lcd_spi_write_data(0x30);
417 lcd_spi_write_data(0x00);
418 lcd_spi_write_data(0x3B);
419 lcd_spi_write_data(0x00);
420 lcd_spi_write_data(0x55);
421 lcd_spi_write_data(0x00);
422 lcd_spi_write_data(0x68);
423 lcd_spi_write_data(0x00);
424 lcd_spi_write_data(0x86);
425 lcd_spi_write_data(0x00);
426 lcd_spi_write_data(0xBA);
427 lcd_spi_write_data(0x01);
428 lcd_spi_write_data(0x2E);
429 lcd_spi_write_data(0x01);
430 lcd_spi_write_data(0x8D);
431 lcd_spi_write_data(0x01);
432 lcd_spi_write_data(0x8E);
433 lcd_spi_write_data(0x01);
434 lcd_spi_write_data(0xE5);
435 lcd_spi_write_data(0x02);
436 lcd_spi_write_data(0x46);
437 lcd_spi_write_data(0x02);
438 lcd_spi_write_data(0xA0);
439 lcd_spi_write_data(0x03);
440 lcd_spi_write_data(0x00);
441 lcd_spi_write_data(0x03);
442 lcd_spi_write_data(0x30);
443 lcd_spi_write_data(0x03);
444 lcd_spi_write_data(0x72);
445 lcd_spi_write_data(0x03);
446 lcd_spi_write_data(0x98);
447 lcd_spi_write_data(0x03);
448 lcd_spi_write_data(0xCA);
449 lcd_spi_write_data(0x03);
450 lcd_spi_write_data(0xE0);
451 lcd_spi_write_data(0x03);
452 lcd_spi_write_data(0xF5);
453 lcd_spi_write_data(0x03);
454 lcd_spi_write_data(0xFD);
455 lcd_spi_write_data(0x03);
456 lcd_spi_write_data(0xFF);
457
458 lcd_spi_write_cmd(0xD4);
459 lcd_spi_write_data(0x00);
460 lcd_spi_write_data(0x00);
461 lcd_spi_write_data(0x00);
462 lcd_spi_write_data(0x05);
463 lcd_spi_write_data(0x00);
464 lcd_spi_write_data(0x10);
465 lcd_spi_write_data(0x00);
466 lcd_spi_write_data(0x1A);
467 lcd_spi_write_data(0x00);
468 lcd_spi_write_data(0x20);
469 lcd_spi_write_data(0x00);
470 lcd_spi_write_data(0x30);
471 lcd_spi_write_data(0x00);
472 lcd_spi_write_data(0x3B);
473 lcd_spi_write_data(0x00);
474 lcd_spi_write_data(0x55);
475 lcd_spi_write_data(0x00);
476 lcd_spi_write_data(0x68);
477 lcd_spi_write_data(0x00);
478 lcd_spi_write_data(0x86);
479 lcd_spi_write_data(0x00);
480 lcd_spi_write_data(0xBA);
481 lcd_spi_write_data(0x01);
482 lcd_spi_write_data(0x2E);
483 lcd_spi_write_data(0x01);
484 lcd_spi_write_data(0x8D);
485 lcd_spi_write_data(0x01);
486 lcd_spi_write_data(0x8E);
487 lcd_spi_write_data(0x01);
488 lcd_spi_write_data(0xE5);
489 lcd_spi_write_data(0x02);
490 lcd_spi_write_data(0x46);
491 lcd_spi_write_data(0x02);
492 lcd_spi_write_data(0xA0);
493 lcd_spi_write_data(0x03);
494 lcd_spi_write_data(0x00);
495 lcd_spi_write_data(0x03);
496 lcd_spi_write_data(0x30);
497 lcd_spi_write_data(0x03);
498 lcd_spi_write_data(0x72);
499 lcd_spi_write_data(0x03);
500 lcd_spi_write_data(0x98);
501 lcd_spi_write_data(0x03);
502 lcd_spi_write_data(0xCA);
503 lcd_spi_write_data(0x03);
504 lcd_spi_write_data(0xE0);
505 lcd_spi_write_data(0x03);
506 lcd_spi_write_data(0xF5);
507 lcd_spi_write_data(0x03);
508 lcd_spi_write_data(0xFD);
509 lcd_spi_write_data(0x03);
510 lcd_spi_write_data(0xFF);
511
512 lcd_spi_write_cmd(0xD5);
513 lcd_spi_write_data(0x00);
514 lcd_spi_write_data(0x00);
515 lcd_spi_write_data(0x00);
516 lcd_spi_write_data(0x05);
517 lcd_spi_write_data(0x00);
518 lcd_spi_write_data(0x10);
519 lcd_spi_write_data(0x00);
520 lcd_spi_write_data(0x1A);
521 lcd_spi_write_data(0x00);
522 lcd_spi_write_data(0x20);
523 lcd_spi_write_data(0x00);
524 lcd_spi_write_data(0x30);
525 lcd_spi_write_data(0x00);
526 lcd_spi_write_data(0x3B);
527 lcd_spi_write_data(0x00);
528 lcd_spi_write_data(0x55);
529 lcd_spi_write_data(0x00);
530 lcd_spi_write_data(0x68);
531 lcd_spi_write_data(0x00);
532 lcd_spi_write_data(0x86);
533 lcd_spi_write_data(0x00);
534 lcd_spi_write_data(0xBA);
535 lcd_spi_write_data(0x01);
536 lcd_spi_write_data(0x2E);
537 lcd_spi_write_data(0x01);
538 lcd_spi_write_data(0x8D);
539 lcd_spi_write_data(0x01);
540 lcd_spi_write_data(0x8E);
541 lcd_spi_write_data(0x01);
542 lcd_spi_write_data(0xE5);
543 lcd_spi_write_data(0x02);
544 lcd_spi_write_data(0x46);
545 lcd_spi_write_data(0x02);
546 lcd_spi_write_data(0xA0);
547 lcd_spi_write_data(0x03);
548 lcd_spi_write_data(0x00);
549 lcd_spi_write_data(0x03);
550 lcd_spi_write_data(0x30);
551 lcd_spi_write_data(0x03);
552 lcd_spi_write_data(0x72);
553 lcd_spi_write_data(0x03);
554 lcd_spi_write_data(0x98);
555 lcd_spi_write_data(0x03);
556 lcd_spi_write_data(0xCA);
557 lcd_spi_write_data(0x03);
558 lcd_spi_write_data(0xE0);
559 lcd_spi_write_data(0x03);
560 lcd_spi_write_data(0xF5);
561 lcd_spi_write_data(0x03);
562 lcd_spi_write_data(0xFD);
563 lcd_spi_write_data(0x03);
564 lcd_spi_write_data(0xFF);
565
566 lcd_spi_write_cmd(0xD6);
567 lcd_spi_write_data(0x00);
568 lcd_spi_write_data(0x00);
569 lcd_spi_write_data(0x00);
570 lcd_spi_write_data(0x05);
571 lcd_spi_write_data(0x00);
572 lcd_spi_write_data(0x10);
573 lcd_spi_write_data(0x00);
574 lcd_spi_write_data(0x1A);
575 lcd_spi_write_data(0x00);
576 lcd_spi_write_data(0x20);
577 lcd_spi_write_data(0x00);
578 lcd_spi_write_data(0x30);
579 lcd_spi_write_data(0x00);
580 lcd_spi_write_data(0x3B);
581 lcd_spi_write_data(0x00);
582 lcd_spi_write_data(0x55);
583 lcd_spi_write_data(0x00);
584 lcd_spi_write_data(0x68);
585 lcd_spi_write_data(0x00);
586 lcd_spi_write_data(0x86);
587 lcd_spi_write_data(0x00);
588 lcd_spi_write_data(0xBA);
589 lcd_spi_write_data(0x01);
590 lcd_spi_write_data(0x2E);
591 lcd_spi_write_data(0x01);
592 lcd_spi_write_data(0x8D);
593 lcd_spi_write_data(0x01);
594 lcd_spi_write_data(0x8E);
595 lcd_spi_write_data(0x01);
596 lcd_spi_write_data(0xE5);
597 lcd_spi_write_data(0x02);
598 lcd_spi_write_data(0x46);
599 lcd_spi_write_data(0x02);
600 lcd_spi_write_data(0xA0);
601 lcd_spi_write_data(0x03);
602 lcd_spi_write_data(0x00);
603 lcd_spi_write_data(0x03);
604 lcd_spi_write_data(0x30);
605 lcd_spi_write_data(0x03);
606 lcd_spi_write_data(0x72);
607 lcd_spi_write_data(0x03);
608 lcd_spi_write_data(0x98);
609 lcd_spi_write_data(0x03);
610 lcd_spi_write_data(0xCA);
611 lcd_spi_write_data(0x03);
612 lcd_spi_write_data(0xE0);
613 lcd_spi_write_data(0x03);
614 lcd_spi_write_data(0xF5);
615 lcd_spi_write_data(0x03);
616 lcd_spi_write_data(0xFD);
617 lcd_spi_write_data(0x03);
618 lcd_spi_write_data(0xFF);
619
620 lcd_spi_write_cmd(0x3A);
621 lcd_spi_write_data(0x55);
622
623 lcd_spi_write_cmd(0x11);
624 delay_ms(20);
625 lcd_spi_write_cmd(0x29);
626 delay_ms(10);
627 }
628
lcd_gc9503v_reset(void)629 static void lcd_gc9503v_reset(void)
630 {
631 BK_LOG_ON_ERR(bk_gpio_disable_input(34));
632 BK_LOG_ON_ERR(bk_gpio_enable_output(34));
633 // pull up gpio34, enable lcd backlight control
634 bk_gpio_set_output_low(34);
635 delay_ms(15);
636 bk_gpio_set_output_high(34);
637
638 BK_LOG_ON_ERR(bk_gpio_enable_output(8));
639 bk_gpio_set_output_high(8);
640 delay_ms(15);
641 bk_gpio_set_output_low(8);
642
643 BK_LOG_ON_ERR(bk_gpio_enable_output(6));
644 bk_gpio_set_output_low(6);
645 delay_ms(15);
646 bk_gpio_set_output_high(6);
647 delay_ms(150);
648 }
649
650
651
lcd_gc9503v_init(void)652 void lcd_gc9503v_init(void)
653 {
654 lcd_gc9503v_reset();
655 lcd_spi_init_gpio();
656 lcd_gc9503v_config();
657 }
658 const lcd_device_t lcd_device_gc9503v =
659 {
660 .id = LCD_DEVICE_GC9503V,
661 .name = "gc9503v",
662 .type = LCD_TYPE_RGB565,
663 .ppi = PPI_480X800,
664 .rgb = &lcd_rgb,
665 .init = lcd_gc9503v_init,
666 };
667
668