• 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_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