1 /*
2  * disp_board_config.c
3  *
4  * Copyright (c) 2007-2020 Allwinnertech Co., Ltd.
5  * Author: zhengxiaobin <zhengxiaobin@allwinnertech.com>
6  *
7  * This software is licensed under the terms of the GNU General Public
8  * License version 2, as published by the Free Software Foundation, and
9  * may be copied, distributed, and modified under those terms.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  */
17 
18 #include <stdio.h>
19 #include <stdint.h>
20 #include <stdlib.h>
21 #include <hal_clk.h>
22 #include <hal_gpio.h>
23 #include "../disp/disp_sys_intf.h"
24 #include "disp_board_config.h"
25 
26 struct property_t g_lcd0_config[] = {
27     {
28         .name = "lcd_used",
29         .type = PROPERTY_INTGER,
30         .v.value = 1,
31     },
32     {
33         .name = "lcd_driver_name",
34         .type = PROPERTY_STRING,
35         .v.str = "default_lcd",
36     },
37     {
38         .name = "lcd_backlight",
39         .type = PROPERTY_INTGER,
40         .v.value = 150,
41     },
42     {
43         .name = "lcd_if",
44         .type = PROPERTY_INTGER,
45         .v.value = 0,
46     },
47     {
48         .name = "lcd_x",
49         .type = PROPERTY_INTGER,
50         .v.value = 800,
51     },
52     {
53         .name = "lcd_y",
54         .type = PROPERTY_INTGER,
55         .v.value = 480,
56     },
57     {
58         .name = "lcd_width",
59         .type = PROPERTY_INTGER,
60         .v.value = 150,
61     },
62     {
63         .name = "lcd_height",
64         .type = PROPERTY_INTGER,
65         .v.value = 94,
66     },
67     {
68         .name = "lcd_dclk_freq",
69         .type = PROPERTY_INTGER,
70         .v.value = 33,
71     },
72     {
73         .name = "lcd_rb_swap",
74         .type = PROPERTY_INTGER,
75         .v.value = 0,
76     },
77     {
78         .name = "lcd_pwm_used",
79         .type = PROPERTY_INTGER,
80         .v.value = 1,
81     },
82     {
83         .name = "lcd_pwm_ch",
84         .type = PROPERTY_INTGER,
85         .v.value = 7,
86     },
87     {
88         .name = "lcd_pwm_freq",
89         .type = PROPERTY_INTGER,
90         .v.value = 50000,
91     },
92     {
93         .name = "lcd_pwm_pol",
94         .type = PROPERTY_INTGER,
95         .v.value = 1,
96     },
97     {
98         .name = "lcd_pwm_max_limit",
99         .type = PROPERTY_INTGER,
100         .v.value = 255,
101     },
102     {
103         .name = "lcd_hbp",
104         .type = PROPERTY_INTGER,
105         .v.value = 46,
106     },
107     {
108         .name = "lcd_ht",
109         .type = PROPERTY_INTGER,
110         .v.value = 1055,
111     },
112     {
113         .name = "lcd_hspw",
114         .type = PROPERTY_INTGER,
115         .v.value = 0,
116     },
117     {
118         .name = "lcd_vbp",
119         .type = PROPERTY_INTGER,
120         .v.value = 23,
121     },
122     {
123         .name = "lcd_vt",
124         .type = PROPERTY_INTGER,
125         .v.value = 525,
126     },
127     {
128         .name = "lcd_vspw",
129         .type = PROPERTY_INTGER,
130         .v.value = 0,
131     },
132     {
133         .name = "lcd_frm",
134         .type = PROPERTY_INTGER,
135         .v.value = 0,
136     },
137     {
138         .name = "lcd_io_phase",
139         .type = PROPERTY_INTGER,
140         .v.value = 0,
141     },
142     {
143         .name = "lcd_gamma_en",
144         .type = PROPERTY_INTGER,
145         .v.value = 0,
146     },
147     {
148         .name = "lcd_bright_curve_en",
149         .type = PROPERTY_INTGER,
150         .v.value = 0,
151     },
152     {
153         .name = "lcd_cmap_en",
154         .type = PROPERTY_INTGER,
155         .v.value = 0,
156     },
157     {
158         .name = "deu_mode",
159         .type = PROPERTY_INTGER,
160         .v.value = 0,
161     },
162     {
163         .name = "lcdgamma4iep",
164         .type = PROPERTY_INTGER,
165         .v.value = 22,
166     },
167     {
168         .name = "smart_color",
169         .type = PROPERTY_INTGER,
170         .v.value = 90,
171     },
172 
173 
174 //gpio
175     {
176         .name = "LCD0_D2",
177         .type = PROPERTY_PIN,
178         .v.gpio_list = {
179             .gpio = GPIOD(0),
180             .mul_sel = 2,
181             .pull = 0,
182             .drv_level = 3,
183         },
184     },
185     {
186         .name = "LCD0_D3",
187         .type = PROPERTY_PIN,
188         .v.gpio_list = {
189             .gpio = GPIOD(1),
190             .mul_sel = 2,
191             .pull = 0,
192             .drv_level = 3,
193         },
194     },
195     {
196         .name = "LCD0_D4",
197         .type = PROPERTY_PIN,
198         .v.gpio_list = {
199             .gpio = GPIOD(2),
200             .mul_sel = 2,
201             .pull = 0,
202             .drv_level = 3,
203         },
204     },
205     {
206         .name = "LCD0_D5",
207         .type = PROPERTY_PIN,
208         .v.gpio_list = {
209             .gpio = GPIOD(3),
210             .mul_sel = 2,
211             .pull = 0,
212             .drv_level = 3,
213         },
214     },
215     {
216         .name = "LCD0_D6",
217         .type = PROPERTY_PIN,
218         .v.gpio_list = {
219             .gpio = GPIOD(4),
220             .mul_sel = 2,
221             .pull = 0,
222             .drv_level = 3,
223         },
224     },
225     {
226         .name = "LCD0_D7",
227         .type = PROPERTY_PIN,
228         .v.gpio_list = {
229             .gpio = GPIOD(5),
230             .mul_sel = 2,
231             .pull = 0,
232             .drv_level = 3,
233         },
234     },
235     {
236         .name = "LCD0_D10",
237         .type = PROPERTY_PIN,
238         .v.gpio_list = {
239             .gpio = GPIOD(6),
240             .mul_sel = 2,
241             .pull = 0,
242             .drv_level = 3,
243         },
244     },
245     {
246         .name = "LCD0_D11",
247         .type = PROPERTY_PIN,
248         .v.gpio_list = {
249             .gpio = GPIOD(7),
250             .mul_sel = 2,
251             .pull = 0,
252             .drv_level = 3,
253         },
254     },
255     {
256         .name = "LCD0_D12",
257         .type = PROPERTY_PIN,
258         .v.gpio_list = {
259             .gpio = GPIOD(8),
260             .mul_sel = 2,
261             .pull = 0,
262             .drv_level = 3,
263         },
264     },
265     {
266         .name = "LCD0_D13",
267         .type = PROPERTY_PIN,
268         .v.gpio_list = {
269             .gpio = GPIOD(9),
270             .mul_sel = 2,
271             .pull = 0,
272             .drv_level = 3,
273         },
274     },
275     {
276         .name = "LCD0_D14",
277         .type = PROPERTY_PIN,
278         .v.gpio_list = {
279             .gpio = GPIOD(10),
280             .mul_sel = 2,
281             .pull = 0,
282             .drv_level = 3,
283         },
284     },
285     {
286         .name = "LCD0_D15",
287         .type = PROPERTY_PIN,
288         .v.gpio_list = {
289             .gpio = GPIOD(11),
290             .mul_sel = 2,
291             .pull = 0,
292             .drv_level = 3,
293         },
294     },
295     {
296         .name = "LCD0_D18",
297         .type = PROPERTY_PIN,
298         .v.gpio_list = {
299             .gpio = GPIOD(12),
300             .mul_sel = 2,
301             .pull = 0,
302             .drv_level = 3,
303         },
304     },
305     {
306         .name = "LCD0_D19",
307         .type = PROPERTY_PIN,
308         .v.gpio_list = {
309             .gpio = GPIOD(13),
310             .mul_sel = 2,
311             .pull = 0,
312             .drv_level = 3,
313         },
314     },
315     {
316         .name = "LCD0_D20",
317         .type = PROPERTY_PIN,
318         .v.gpio_list = {
319             .gpio = GPIOD(14),
320             .mul_sel = 2,
321             .pull = 0,
322             .drv_level = 3,
323         },
324     },
325     {
326         .name = "LCD0_D21",
327         .type = PROPERTY_PIN,
328         .v.gpio_list = {
329             .gpio = GPIOD(15),
330             .mul_sel = 2,
331             .pull = 0,
332             .drv_level = 3,
333         },
334     },
335     {
336         .name = "LCD0_D22",
337         .type = PROPERTY_PIN,
338         .v.gpio_list = {
339             .gpio = GPIOD(16),
340             .mul_sel = 2,
341             .pull = 0,
342             .drv_level = 3,
343         },
344     },
345     {
346         .name = "LCD0_D23",
347         .type = PROPERTY_PIN,
348         .v.gpio_list = {
349             .gpio = GPIOD(17),
350             .mul_sel = 2,
351             .pull = 0,
352             .drv_level = 3,
353         },
354     },
355     {
356         .name = "LCD0_CLK",
357         .type = PROPERTY_PIN,
358         .v.gpio_list = {
359             .gpio = GPIOD(18),
360             .mul_sel = 2,
361             .pull = 0,
362             .drv_level = 3,
363         },
364     },
365     {
366         .name = "LCD0_DE",
367         .type = PROPERTY_PIN,
368         .v.gpio_list = {
369             .gpio = GPIOD(19),
370             .mul_sel = 2,
371             .pull = 0,
372             .drv_level = 3,
373         },
374     },
375     {
376         .name = "LCD0_HSYNC",
377         .type = PROPERTY_PIN,
378         .v.gpio_list = {
379             .gpio = GPIOD(20),
380             .mul_sel = 2,
381             .pull = 0,
382             .drv_level = 3,
383         },
384     },
385     {
386         .name = "LCD0_VSYNC",
387         .type = PROPERTY_PIN,
388         .v.gpio_list = {
389             .gpio = GPIOD(21),
390             .mul_sel = 2,
391             .pull = 0,
392             .drv_level = 3,
393         },
394     },
395 
396 };
397 
398 struct property_t g_lcd1_config[] = {
399     {
400         .name = "lcd_used",
401         .type = PROPERTY_INTGER,
402         .v.value = 0,
403     },
404 };
405 
406 struct property_t g_disp_config[] = {
407     {
408         .name = "disp_init_enable",
409         .type = PROPERTY_INTGER,
410         .v.value = 1,
411     },
412     {
413         .name = "disp_mode",
414         .type = PROPERTY_INTGER,
415         .v.value = 0,
416     },
417     {
418         .name = "screen0_output_type",
419         .type = PROPERTY_INTGER,
420         .v.value = 1,
421     },
422     {
423         .name = "screen0_output_mode",
424         .type = PROPERTY_INTGER,
425         .v.value = 4,
426     },
427     {
428         .name = "screen1_output_type",
429         .type = PROPERTY_INTGER,
430         .v.value = 1,
431     },
432     {
433         .name = "screen1_output_mode",
434         .type = PROPERTY_INTGER,
435         .v.value = 4,
436     },
437 };
438 
439 u32 g_lcd0_config_len = sizeof(g_lcd0_config) / sizeof(struct property_t);
440 u32 g_lcd1_config_len = sizeof(g_lcd1_config) / sizeof(struct property_t);
441 u32 g_disp_config_len = sizeof(g_disp_config) / sizeof(struct property_t);
442