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