1 /*
2  * Allwinner SoCs display driver.
3  *
4  * Copyright (C) 2016 Allwinner.
5  *
6  * This file is licensed under the terms of the GNU General Public
7  * License version 2.  This program is licensed "as is" without any
8  * warranty of any kind, whether express or implied.
9  */
10 
11 #ifndef _DISP_PRIVATE_H_
12 #define _DISP_PRIVATE_H_
13 #include "include.h"
14 #include "disp_features.h"
15 #if defined(CONFIG_ARCH_SUN50IW1)
16 #include "./lowlevel_sun50iw1/disp_al.h"
17 #elif defined(CONFIG_ARCH_SUN50IW2)
18 #include "./lowlevel_v2x/disp_al.h"
19 #elif defined(CONFIG_ARCH_SUN50IW8)
20 #include "./lowlevel_v2x/disp_al.h"
21 #elif defined(CONFIG_ARCH_SUN8IW10)
22 #include "./lowlevel_sun8iw10/disp_al.h"
23 #elif defined(CONFIG_ARCH_SUN8IW11)
24 #include "./lowlevel_v2x/disp_al.h"
25 #elif defined(CONFIG_ARCH_SUN8IW12) || defined(CONFIG_ARCH_SUN8IW16)\
26     || defined(CONFIG_ARCH_SUN8IW19) || defined(CONFIG_ARCH_SUN20IW1)
27 #include "./lowlevel_v2x/disp_al.h"
28 #elif defined(CONFIG_ARCH_SUN8IW15)
29 #include "./lowlevel_v2x/disp_al.h"
30 #elif defined(CONFIG_ARCH_SUN50IW10)
31 #include "./lowlevel_v2x/disp_al.h"
32 #elif defined(CONFIG_ARCH_SUN8IW6)
33 #include "./lowlevel_v2x/disp_al.h"
34 #elif defined(CONFIG_ARCH_SUN8IW7) || defined(CONFIG_ARCH_SUN8IW17)
35 #include "./lowlevel_v2x/disp_al.h"
36 #elif defined(CONFIG_ARCH_SUN8IW8)
37 #include "./lowlevel_sun8iw8/disp_al.h"
38 #elif defined(CONFIG_ARCH_SUN50IW3) || defined(CONFIG_ARCH_SUN50IW6)
39 #include "./lowlevel_v3x/disp_al.h"
40 #else
41 #error "undefined platform!!!"
42 #endif
43 
44 
45 extern struct disp_device *disp_get_lcd(u32 disp);
46 
47 extern struct disp_device *disp_get_hdmi(u32 disp);
48 
49 extern struct disp_manager *disp_get_layer_manager(u32 disp);
50 
51 extern struct disp_layer *disp_get_layer(u32 disp, u32 chn, u32 layer_id);
52 extern struct disp_layer *disp_get_layer_1(u32 disp, u32 layer_id);
53 extern struct disp_smbl *disp_get_smbl(u32 disp);
54 extern struct disp_enhance *disp_get_enhance(u32 disp);
55 extern struct disp_capture *disp_get_capture(u32 disp);
56 
57 extern s32 disp_delay_ms(u32 ms);
58 extern s32 disp_delay_us(u32 us);
59 extern s32 disp_init_lcd(struct disp_bsp_init_para *para);
60 extern s32 disp_exit_lcd(void);
61 extern s32 disp_init_hdmi(struct disp_bsp_init_para *para);
62 extern s32 disp_exit_hdmi(void);
63 extern s32 disp_init_tv(void);  /* (struct disp_bsp_init_para * para); */
64 extern s32 disp_exit_tv(void);  /* (struct disp_bsp_init_para * para); */
65 extern s32 disp_exit_vdpo(void);
66 extern s32 disp_tv_set_func(struct disp_device *ptv, struct disp_tv_func *func);
67 extern s32 disp_init_tv_para(struct disp_bsp_init_para *para);
68 extern s32 disp_exit_tv_para(void);
69 extern s32 disp_tv_set_hpd(struct disp_device *ptv, u32 state);
70 extern s32 disp_init_vga(void);
71 extern s32 disp_exit_vga(void);
72 extern s32 disp_init_vdpo(struct disp_bsp_init_para *para);
73 extern s32 disp_init_edp(struct disp_bsp_init_para *para);
74 
75 extern s32 disp_init_feat(void);
76 extern s32 disp_exit_feat(void);
77 extern s32 disp_init_mgr(struct disp_bsp_init_para *para);
78 extern s32 disp_exit_mgr(void);
79 extern s32 disp_init_enhance(struct disp_bsp_init_para *para);
80 extern s32 disp_exit_enhance(void);
81 extern s32 disp_init_smbl(struct disp_bsp_init_para *para);
82 extern s32 disp_exit_smbl(void);
83 extern s32 disp_init_capture(struct disp_bsp_init_para *para);
84 extern s32 disp_exit_capture(void);
85 
86 #ifdef CONFIG_EINK_PANEL_USED
87 extern s32 disp_init_eink(struct disp_bsp_init_para *para);
88 extern s32 disp_exit_eink(void);
89 extern s32 write_edma(struct disp_eink_manager *manager);
90 extern s32 disp_init_format_convert_manager(struct disp_bsp_init_para *para);
91 extern void disp_exit_format_convert_manager(void);
92 
93 extern struct disp_eink_manager *disp_get_eink_manager(unsigned int disp);
94 extern int eink_display_one_frame(struct disp_eink_manager *manager);
95 #endif
96 extern void sync_event_proc(u32 disp, bool timeout);
97 
98 #include "disp_device.h"
99 
100 u32 dump_layer_config(struct disp_layer_config_data *data);
101 
102 extern s32 disp_init_rotation_sw(struct disp_bsp_init_para *para);
103 extern struct disp_rotation_sw *disp_get_rotation_sw(u32 disp);
104 #endif
105