• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Allwinner SoCs display driver.
3  *
4  * Copyright (C) 2017 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_AL_TCON_H_
12 #define _DISP_AL_TCON_H_
13 
14 #include "../include.h"
15 #include "./tcon/de_lcd.h"
16 #if defined(SUPPORT_DSI)
17 #include "./tcon/de_dsi.h"
18 #endif
19 
20 struct lcd_clk_info {
21 	enum disp_lcd_if lcd_if;
22 	int tcon_div;
23 	int lcd_div;
24 	int dsi_div;
25 	int dsi_rate;
26 };
27 
28 int disp_al_lcd_cfg(u32 screen_id, struct disp_panel_para *panel,
29 	struct panel_extend_para *extend_panel);
30 int disp_al_lcd_cfg_ext(u32 screen_id, struct panel_extend_para *extend_panel);
31 int disp_al_lcd_enable(u32 screen_id, struct disp_panel_para *panel);
32 int disp_al_lcd_disable(u32 screen_id, struct disp_panel_para *panel);
33 int disp_al_lcd_query_irq(u32 screen_id, enum __lcd_irq_id_t irq_id,
34 	struct disp_panel_para *panel);
35 int disp_al_lcd_tri_busy(u32 screen_id, struct disp_panel_para *panel);
36 int disp_al_lcd_tri_start(u32 screen_id, struct disp_panel_para *panel);
37 int disp_al_lcd_io_cfg(u32 screen_id, u32 enable, struct disp_panel_para *panel);
38 int disp_al_lcd_get_cur_line(u32 screen_id, struct disp_panel_para *panel);
39 int disp_al_lcd_get_start_delay(u32 screen_id, struct disp_panel_para *panel);
40 int disp_al_lcd_get_clk_info(u32 screen_id, struct lcd_clk_info *info,
41 	struct disp_panel_para *panel);
42 int disp_al_lcd_enable_irq(u32 screen_id, enum __lcd_irq_id_t irq_id,
43 	struct disp_panel_para *panel);
44 int disp_al_lcd_disable_irq(u32 screen_id, enum __lcd_irq_id_t irq_id,
45 	struct disp_panel_para *panel);
46 
47 int disp_al_hdmi_pad_sel(u32 screen_id, u32 pad);
48 int disp_al_hdmi_enable(u32 screen_id);
49 int disp_al_hdmi_disable(u32 screen_id);
50 int disp_al_hdmi_set_output_format(u32 screen_id, u32 output_format);
51 int disp_al_hdmi_cfg(u32 screen_id, struct disp_video_timings *video_info);
52 int disp_al_hdmi_irq_enable(u32 screen_id);
53 int disp_al_hdmi_irq_disable(u32 screen_id);
54 extern s32 bsp_disp_hdmi_get_color_format(void);
55 
56 int disp_al_tv_enable(u32 screen_id);
57 int disp_al_tv_disable(u32 screen_id);
58 int disp_al_tv_cfg(u32 screen_id, struct disp_video_timings *video_info);
59 int disp_al_tv_irq_enable(u32 screen_id);
60 int disp_al_tv_irq_disable(u32 screen_id);
61 
62 #if defined(SUPPORT_VGA)
63 int disp_al_vga_enable(u32 screen_id);
64 int disp_al_vga_disable(u32 screen_id);
65 int disp_al_vga_cfg(u32 screen_id, struct disp_video_timings *video_info);
66 int disp_al_vga_irq_enable(u32 screen_id);
67 int disp_al_vga_irq_disable(u32 screen_id);
68 #endif
69 
70 int disp_al_vdevice_cfg(u32 screen_id, struct disp_video_timings *video_info,
71 	struct disp_vdevice_interface_para *para, u8 config_tcon_only);
72 int disp_al_vdevice_enable(u32 screen_id);
73 int disp_al_vdevice_disable(u32 screen_id);
74 
75 int disp_al_device_get_cur_line(u32 screen_id);
76 int disp_al_device_get_start_delay(u32 screen_id);
77 int disp_al_device_query_irq(u32 screen_id);
78 int disp_al_device_enable_irq(u32 screen_id);
79 int disp_al_device_disable_irq(u32 screen_id);
80 int disp_al_device_get_status(u32 screen_id);
81 int disp_al_device_src_select(u32 screen_id, u32 src);
82 int disp_al_device_set_de_id(u32 screen_id, u32 de_id);
83 int disp_al_device_set_de_use_rcq(u32 screen_id, u32 use_rcq);
84 int disp_al_device_set_output_type(u32 screen_id, u32 output_type);
85 
86 s32 disp_al_init_tcon(struct disp_bsp_init_para *para);
87 void disp_al_show_builtin_patten(u32 hwdev_index, u32 patten);
88 int disp_al_lcd_get_status(u32 screen_id, struct disp_panel_para *panel);
89 
90 #endif /* #ifndef _DISP_AL_TCON_H_ */
91