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_DE_H_ 12 #define _DISP_AL_DE_H_ 13 14 #include "../include.h" 15 #include "de330/de_rtmx.h" 16 #include "de330/de_wb.h" 17 18 enum { 19 DISP_AL_IRQ_FLAG_FRAME_END = DE_IRQ_FLAG_FRAME_END, 20 DISP_AL_IRQ_FLAG_RCQ_FINISH = DE_IRQ_FLAG_RCQ_FINISH, 21 DISP_AL_IRQ_FLAG_RCQ_ACCEPT = DE_IRQ_FLAG_RCQ_ACCEPT, 22 DISP_AL_IRQ_FLAG_MASK = DE_IRQ_FLAG_MASK, 23 }; 24 25 enum { 26 DISP_AL_IRQ_STATE_FRAME_END = DE_IRQ_STATE_FRAME_END, 27 DISP_AL_IRQ_STATE_RCQ_FINISH = DE_IRQ_STATE_RCQ_FINISH, 28 DISP_AL_IRQ_STATE_RCQ_ACCEPT = DE_IRQ_STATE_RCQ_ACCEPT, 29 DISP_AL_IRQ_STATE_MASK = DE_IRQ_STATE_MASK, 30 }; 31 32 enum { 33 DISP_AL_CAPTURE_IRQ_FLAG_FRAME_END = WB_IRQ_FLAG_INTR, 34 DISP_AL_CAPTURE_IRQ_FLAG_RCQ_ACCEPT = DE_WB_IRQ_FLAG_RCQ_ACCEPT, 35 DISP_AL_CAPTURE_IRQ_FLAG_RCQ_FINISH = DE_WB_IRQ_FLAG_RCQ_FINISH, 36 DISP_AL_CAPTURE_IRQ_FLAG_MASK = 37 DISP_AL_CAPTURE_IRQ_FLAG_FRAME_END 38 | DISP_AL_CAPTURE_IRQ_FLAG_RCQ_ACCEPT 39 | DISP_AL_CAPTURE_IRQ_FLAG_RCQ_FINISH, 40 }; 41 42 enum { 43 DISP_AL_CAPTURE_IRQ_STATE_FRAME_END = WB_IRQ_STATE_PROC_END, 44 DISP_AL_CAPTURE_IRQ_STATE_RCQ_ACCEPT = DE_WB_IRQ_STATE_RCQ_ACCEPT, 45 DISP_AL_CAPTURE_IRQ_STATE_RCQ_FINISH = DE_WB_IRQ_STATE_RCQ_FINISH, 46 DISP_AL_CAPTURE_IRQ_STATE_MASK = 47 DISP_AL_CAPTURE_IRQ_STATE_FRAME_END 48 | DISP_AL_CAPTURE_IRQ_STATE_RCQ_ACCEPT 49 | DISP_AL_CAPTURE_IRQ_STATE_RCQ_FINISH, 50 }; 51 52 s32 disp_al_manager_init(u32 disp); 53 s32 disp_al_manager_exit(u32 disp); 54 s32 disp_al_manager_apply(u32 disp, 55 struct disp_manager_data *data); 56 s32 disp_al_layer_apply(u32 disp, 57 struct disp_layer_config_data *data, u32 layer_num); 58 s32 disp_init_al(struct disp_bsp_init_para *para); 59 s32 disp_al_manager_sync(u32 disp); 60 s32 disp_al_manager_update_regs(u32 disp); 61 s32 disp_al_manager_set_rcq_update(u32 disp, u32 en); 62 s32 disp_al_manager_set_all_rcq_head_dirty(u32 disp, u32 dirty); 63 s32 disp_al_manager_set_irq_enable(u32 disp, u32 irq_flag, u32 en); 64 u32 disp_al_manager_query_irq_state(u32 disp, u32 irq_state); 65 66 s32 disp_al_enhance_apply(u32 disp, 67 struct disp_enhance_config *config); 68 s32 disp_al_enhance_update_regs(u32 disp); 69 s32 disp_al_enhance_sync(u32 disp); 70 s32 disp_al_enhance_tasklet(u32 disp); 71 72 s32 disp_al_smbl_apply(u32 disp, struct disp_smbl_info *info); 73 s32 disp_al_smbl_update_regs(u32 disp); 74 s32 disp_al_smbl_sync(u32 disp); 75 s32 disp_al_smbl_get_status(u32 disp); 76 s32 disp_al_smbl_tasklet(u32 disp); 77 78 s32 disp_al_capture_init(u32 disp); 79 s32 disp_al_capture_exit(u32 disp); 80 s32 disp_al_capture_sync(u32 disp); 81 s32 disp_al_capture_apply(u32 disp, struct disp_capture_config *cfg); 82 s32 disp_al_capture_get_status(u32 disp); 83 s32 disp_al_capture_set_rcq_update(u32 disp, u32 en); 84 s32 disp_al_capture_set_all_rcq_head_dirty(u32 disp, u32 dirty); 85 s32 disp_al_capture_set_irq_enable(u32 disp, u32 irq_flag, u32 en); 86 u32 disp_al_capture_query_irq_state(u32 disp, u32 irq_state); 87 88 s32 disp_al_get_fb_info(u32 disp, struct disp_layer_info *info); 89 s32 disp_al_get_display_size(u32 disp, u32 *width, 90 u32 *height); 91 int disp_exit_al(void); 92 bool disp_al_get_direct_show_state(unsigned int disp); 93 s32 disp_al_capture_set_mode(u32 disp, enum de_rtwb_mode mode); 94 95 void disp_al_flush_layer_address(u32 disp, u32 chn, u32 layer_id); 96 97 #endif /* #ifndef _DISP_AL_DE_H_ */ 98