• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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