coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
ddp.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef _MT8183_SOC_DDP_H_
4 #define _MT8183_SOC_DDP_H_
5 
6 #include <soc/addressmap.h>
7 #include <soc/ddp_common.h>
8 #include <types.h>
9 
10 #define MAIN_PATH_OVL_NR 2
11 
12 struct mmsys_cfg_regs {
13  u32 reserved_0x000[64]; /* 0x000 */
14  u32 mmsys_cg_con0; /* 0x100 */
15  u32 mmsys_cg_set0; /* 0x104 */
16  u32 mmsys_cg_clr0; /* 0x108 */
17  u32 reserved_0x10C; /* 0x10C */
18  u32 mmsys_cg_con1; /* 0x110 */
19  u32 mmsys_cg_set1; /* 0x114 */
20  u32 mmsys_cg_clr1; /* 0x118 */
21  u32 reserved_0x11C[33]; /* 0x11C */
22  u32 mmsys_cg_con2; /* 0x1A0 */
23  u32 mmsys_cg_set2; /* 0x1A4 */
24  u32 mmsys_cg_clr2; /* 0x1A8 */
25  u32 reserved_0x1AC[853]; /* 0x1AC */
26  u32 reserved_0xF00; /* 0xF00 */
27  u32 mmsys_ovl_mout_en; /* 0xF04 */
28  u32 reserved_0xF08; /* 0xF08 */
29  u32 reserved_0xF0C; /* 0xF0C */
30  u32 reserved_0xF10; /* 0xF10 */
31  u32 reserved_0xF14; /* 0xF14 */
32  u32 ovl0_2l_mout_en; /* 0xF18 */
33  u32 ovl0_mout_en; /* 0xF1C */
34  u32 reserved_0xF20; /* 0xF20 */
35  u32 reserved_0xF24; /* 0xF24 */
36  u32 reserved_0xF28; /* 0xF28 */
37  u32 rdma0_sel_in; /* 0xF2C */
38  u32 rdma0_sout_sel; /* 0xF30 */
39  u32 ccorr0_sout_sel; /* 0xF34 */
40  u32 aal0_sel_in; /* 0xF38 */
41  u32 dither0_mout_en; /* 0xF3C*/
42  u32 dsi0_sel_in; /* 0xF40*/
43 };
44 
45 check_member(mmsys_cfg_regs, mmsys_cg_con0, 0x100);
46 check_member(mmsys_cfg_regs, mmsys_cg_con1, 0x110);
47 check_member(mmsys_cfg_regs, mmsys_cg_con2, 0x1A0);
48 check_member(mmsys_cfg_regs, mmsys_ovl_mout_en, 0xF04);
49 check_member(mmsys_cfg_regs, ovl0_2l_mout_en, 0xF18);
50 check_member(mmsys_cfg_regs, dsi0_sel_in, 0xF40);
51 static struct mmsys_cfg_regs *const mmsys_cfg =
52  (void *)MMSYS_BASE;
53 
54 
55 /* DISP_REG_CONFIG_MMSYS_CG_CON0
56  Configures free-run clock gating 0
57  0: Enable clock
58  1: Clock gating */
59 enum {
74 
91  CG_CON0_ALL = 0xffffffff
92 };
93 
94 /* DISP_REG_CONFIG_MMSYS_CG_CON1
95  Configures free-run clock gating 1
96  0: Enable clock
97  1: Clock gating */
98 enum {
101  CG_CON1_ALL = 0xffffffff
102 };
103 
104 enum {
110  CG_CON2_ALL = 0xffffffff
111 };
112 
113 
114 enum {
121 };
122 
123 enum {
129 };
130 
131 struct disp_mutex_regs {
132  u32 inten;
133  u32 intsta;
134  u32 reserved0[6];
135  struct {
136  u32 en;
137  u32 dummy;
138  u32 rst;
139  u32 ctl;
140  u32 mod;
141  u32 reserved[3];
142  } mutex[12];
143 };
144 
145 static struct disp_mutex_regs *const disp_mutex = (void *)DISP_MUTEX_BASE;
146 
147 enum {
166 };
167 
168 enum {
172 };
173 
174 struct disp_ccorr_regs {
175  u32 en;
176  u32 reset;
177  u32 inten;
178  u32 intsta;
179  u32 status;
180  u32 reserved0[3];
181  u32 cfg;
182  u32 reserved1[3];
183  u32 size;
184  u32 reserved2[27];
185  u32 shadow;
186 };
188 
189 struct disp_gamma_regs {
190  u32 en;
191  u32 reset;
192  u32 inten;
193  u32 intsta;
194  u32 status;
195  u32 reserved0[3];
196  u32 cfg;
197  u32 reserved1[3];
198  u32 size;
199 };
201 
202 struct disp_aal_regs {
203  u32 en;
204  u32 reset;
205  u32 inten;
206  u32 intsta;
207  u32 status;
208  u32 reserved0[3];
209  u32 cfg;
210  u32 reserved1[3];
211  u32 size;
212  u32 reserved2[47];
213  u32 shadow;
214  u32 reserved3[249];
216 };
218 check_member(disp_aal_regs, output_size, 0x4D8);
219 
220 struct disp_postmask_regs {
221  u32 en;
222  u32 reset;
223  u32 inten;
224  u32 intsta;
225  u32 reserved0[4];
226  u32 cfg;
227  u32 reserved1[3];
228  u32 size;
229 };
231 
232 struct disp_dither_regs {
233  u32 en;
234  u32 reset;
235  u32 inten;
236  u32 intsta;
237  u32 status;
238  u32 reserved0[3];
239  u32 cfg;
240  u32 reserved1[3];
241  u32 size;
242  u32 reserved2[51];
244 };
246 
247 enum {
248  PQ_EN = BIT(0),
251 };
252 
253 static struct disp_ccorr_regs *const disp_ccorr = (void *)DISP_CCORR0_BASE;
254 
255 static struct disp_aal_regs *const disp_aal = (void *)DISP_AAL0_BASE;
256 
257 static struct disp_gamma_regs *const disp_gamma = (void *)DISP_GAMMA0_BASE;
258 
259 static struct disp_dither_regs *const disp_dither = (void *)DISP_DITHER0_BASE;
260 
261 static struct disp_postmask_regs *const disp_postmask = (void *)DISP_POSTMASK0_BASE;
262 
263 enum {
265 };
266 
267 void mtk_ddp_init(void);
268 void mtk_ddp_mode_set(const struct edid *edid);
269 
270 #endif
#define BIT(nr)
Definition: ec_commands.h:45
@ CG_CON1_ALL
Definition: ddp.h:191
@ MUTEX_MOD_DISP_COLOR0
Definition: ddp.h:236
@ MUTEX_MOD_DISP_RDMA0
Definition: ddp.h:235
@ MUTEX_MOD_DISP_OVL0
Definition: ddp.h:234
@ MUTEX_MOD_MAIN_PATH
Definition: ddp.h:240
@ CG_CON0_DISP_COLOR0
Definition: ddp.h:163
@ CG_CON0_ALL
Definition: ddp.h:172
@ CG_CON0_DISP_OVL0
Definition: ddp.h:156
@ CG_CON0_DISP_RDMA0
Definition: ddp.h:158
@ CG_CON0_SMI_COMMON
Definition: ddp.h:140
void mtk_ddp_init(void)
Definition: ddp.c:61
check_member(mmsys_cfg_regs, mmsys_sw1_rst_b, 0x144)
void mtk_ddp_mode_set(const struct edid *edid)
Definition: ddp.c:66
@ MUTEX_MOD_DISP_GAMMA0
Definition: ddp.h:135
@ MUTEX_MOD_DISP_CCORR0
Definition: ddp.h:133
@ MUTEX_MOD_DISP_AAL0
Definition: ddp.h:134
@ MUTEX_MOD_DISP_OVL0_2L
Definition: ddp.h:129
@ MUTEX_MOD_DISP_DITHER0
Definition: ddp.h:136
@ PQ_EN
Definition: ddp.h:164
@ PQ_RELAY_MODE
Definition: ddp.h:165
@ CG_CON0_DISP_CCORR0
Definition: ddp.h:61
@ CG_CON0_DISP_GAMMA0
Definition: ddp.h:63
@ CG_CON0_DISP_ALL
Definition: ddp.h:65
@ CG_CON0_DISP_AAL0
Definition: ddp.h:62
@ CG_CON0_DISP_OVL0_2L
Definition: ddp.h:55
@ CG_CON0_DISP_DITHER0
Definition: ddp.h:64
@ MUTEX_SOF_DSI0
Definition: ddp.h:147
@ MUTEX_SOF_SINGLE_MODE
Definition: ddp.h:146
@ MUTEX_SOF_DPI0
Definition: ddp.h:148
@ CG_CON0_DISP_MUTEX0
Definition: ddp.h:154
@ CG_CON0_SMI_GALS
Definition: ddp.h:172
@ CG_CON0_DISP_DSI0
Definition: ddp.h:169
@ CG_CON0_SMI_INFRA
Definition: ddp.h:164
@ CG_CON0_DISP_POSTMASK0
Definition: ddp.h:166
@ CG_CON2_DISP_ALL
Definition: ddp.h:195
@ CG_CON2_ALL
Definition: ddp.h:197
@ MUTEX_MOD_DISP_POSTMASK0
Definition: ddp.h:227
@ CG_CON0_DISPSYS_CONFIG
Definition: ddp.h:61
@ SMI_LARB_PORT_L0_OVL_RDMA0
Definition: ddp.h:264
@ CG_CON1_SMI_IOMMU
Definition: ddp.h:99
@ CG_CON1_DISP_ALL
Definition: ddp.h:100
static struct disp_mutex_regs *const disp_mutex
Definition: ddp.h:145
static struct disp_postmask_regs *const disp_postmask
Definition: ddp.h:261
@ OVL0_MOUT_EN_DISP_RDMA0
Definition: ddp.h:119
@ DISP_OVL0_2L_GO_BLEND
Definition: ddp.h:117
@ DISP_OVL0_2L_GO_BG
Definition: ddp.h:118
@ DISP_OVL0_GO_BG
Definition: ddp.h:116
@ DITHER0_MOUT_DSI0
Definition: ddp.h:120
@ DISP_OVL0_GO_BLEND
Definition: ddp.h:115
static struct disp_gamma_regs *const disp_gamma
Definition: ddp.h:257
@ CG_CON2_DPI_DPI0
Definition: ddp.h:106
@ CG_CON2_DSI_DSI0
Definition: ddp.h:105
@ CG_CON2_MM_26MHZ
Definition: ddp.h:107
static struct mmsys_cfg_regs *const mmsys_cfg
Definition: ddp.h:51
@ PQ_ENGINE_EN
Definition: ddp.h:250
@ RDMA0_SEL_IN_OVL0_2L
Definition: ddp.h:124
@ AAL0_SEL_IN_CCORR0
Definition: ddp.h:127
@ CCORR0_SOUT_AAL0
Definition: ddp.h:126
@ DSI0_SEL_IN_DITHER0
Definition: ddp.h:128
@ RDMA0_SOUT_COLOR0
Definition: ddp.h:125
static struct disp_ccorr_regs *const disp_ccorr
Definition: ddp.h:253
static struct disp_aal_regs *const disp_aal
Definition: ddp.h:255
static struct disp_dither_regs *const disp_dither
Definition: ddp.h:259
@ MMSYS_BASE
Definition: addressmap.h:44
@ DISP_MUTEX_BASE
Definition: addressmap.h:56
@ DISP_AAL0_BASE
Definition: addressmap.h:57
@ DISP_GAMMA0_BASE
Definition: addressmap.h:58
@ DISP_CCORR0_BASE
Definition: addressmap.h:56
@ DISP_DITHER0_BASE
Definition: addressmap.h:59
@ DISP_POSTMASK0_BASE
Definition: addressmap.h:91
uint32_t u32
Definition: stdint.h:51
u32 cfg
Definition: ddp.h:109
u32 inten
Definition: ddp.h:105
u32 intsta
Definition: ddp.h:106
u32 reserved2[47]
Definition: ddp.h:112
u32 reserved0[3]
Definition: ddp.h:108
u32 reset
Definition: ddp.h:104
u32 reserved1[3]
Definition: ddp.h:110
u32 status
Definition: ddp.h:107
u32 en
Definition: ddp.h:103
u32 size
Definition: ddp.h:111
u32 output_size
Definition: ddp.h:115
u32 reserved3[249]
Definition: ddp.h:114
u32 shadow
Definition: ddp.h:113
u32 reserved1[3]
Definition: ddp.h:82
u32 reserved2[27]
Definition: ddp.h:84
u32 reset
Definition: ddp.h:76
u32 en
Definition: ddp.h:75
u32 inten
Definition: ddp.h:77
u32 cfg
Definition: ddp.h:81
u32 status
Definition: ddp.h:79
u32 intsta
Definition: ddp.h:78
u32 shadow
Definition: ddp.h:85
u32 size
Definition: ddp.h:83
u32 reserved0[3]
Definition: ddp.h:80
u32 reserved1[3]
Definition: ddp.h:140
u32 status
Definition: ddp.h:137
u32 reserved0[3]
Definition: ddp.h:138
u32 intsta
Definition: ddp.h:136
u32 shadow
Definition: ddp.h:243
u32 reserved2[51]
Definition: ddp.h:142
u32 size
Definition: ddp.h:98
u32 reserved0[3]
Definition: ddp.h:95
u32 reset
Definition: ddp.h:91
u32 en
Definition: ddp.h:90
u32 intsta
Definition: ddp.h:93
u32 cfg
Definition: ddp.h:96
u32 reserved1[3]
Definition: ddp.h:97
u32 status
Definition: ddp.h:94
u32 inten
Definition: ddp.h:92
u32 intsta
Definition: ddp.h:216
u32 inten
Definition: ddp.h:215
u8 reserved0[24]
Definition: ddp.h:217
u32 reserved[3]
Definition: ddp.h:224
struct disp_mutex_regs::@798 mutex[6]
u32 dummy
Definition: ddp.h:220
u32 reserved0[4]
Definition: ddp.h:125
u32 reserved1[3]
Definition: ddp.h:127
Definition: edid.h:49
u32 ccorr0_sout_sel
Definition: ddp.h:39
u32 reserved_0xF00
Definition: ddp.h:26
u32 reserved_0x10C
Definition: ddp.h:17
u32 mmsys_cg_set2
Definition: ddp.h:29
u32 reserved_0xF14
Definition: ddp.h:31
u32 ovl0_mout_en
Definition: ddp.h:33
u32 mmsys_cg_con0
Definition: ddp.h:63
u32 mmsys_cg_clr0
Definition: ddp.h:65
u32 aal0_sel_in
Definition: ddp.h:40
u32 mmsys_cg_set0
Definition: ddp.h:64
u32 dsi0_sel_in
Definition: ddp.h:50
u32 reserved_0xF10[5]
Definition: ddp.h:26
u32 mmsys_cg_con2
Definition: ddp.h:28
u32 reserved_0x000[64]
Definition: ddp.h:13
u32 reserved_0xF08
Definition: ddp.h:28
u32 reserved_0xF20
Definition: ddp.h:34
u32 reserved_0x11C[889]
Definition: ddp.h:21
u32 mmsys_cg_clr2
Definition: ddp.h:30
u32 reserved_0xF24
Definition: ddp.h:35
u32 mmsys_cg_clr1
Definition: ddp.h:69
u32 reserved_0xF28
Definition: ddp.h:28
u32 mmsys_ovl_mout_en
Definition: ddp.h:27
u32 reserved_0xF0C
Definition: ddp.h:29
u32 rdma0_sel_in
Definition: ddp.h:37
u32 mmsys_cg_con1
Definition: ddp.h:67
u32 dither0_mout_en
Definition: ddp.h:41
u32 rdma0_sout_sel
Definition: ddp.h:38
u32 ovl0_2l_mout_en
Definition: ddp.h:32
u32 reserved_0x1AC[853]
Definition: ddp.h:25
u32 mmsys_cg_set1
Definition: ddp.h:68