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[889]; /* 0x11C */
22  u32 disp_ovl0_mout_en; /* 0xF00 */
26  u32 reserved_0xF10[5]; /* 0xF10 - 0xF20 */
27  u32 disp_path0_sel_in; /* 0xF24 */
28  u32 reserved_0xF28; /* 0xF28 */
29  u32 dsi0_sel_in; /* 0xF2C */
30  u32 dpi0_sel_in; /* 0xF30 */
31  u32 reserved_0xF34; /* 0xF34 */
32  u32 disp_ovl0_2l_sel_in; /* 0xF38 */
33  u32 reserved_0xF3C[5]; /* 0xF3C - 0xF4C */
34  u32 disp_rdma0_sout_sel_in; /* 0xF50 */
35  u32 disp_rdma1_sout_sel_in; /* 0xF54 */
36  u32 reserved_0xF58[3]; /* 0xF58 - 0xF60 */
38 };
39 
40 check_member(mmsys_cfg_regs, mmsys_cg_con0, 0x100);
41 check_member(mmsys_cfg_regs, dpi0_sel_sout_sel_in, 0xF64);
42 static struct mmsys_cfg_regs *const mmsys_cfg =
43  (void *)MMSYS_BASE;
44 
45 /* DISP_REG_CONFIG_MMSYS_CG_CON0
46  Configures free-run clock gating 0
47  0: Enable clock
48  1: Clock gating */
49 enum {
77  CG_CON0_ALL = 0xffffffff
78 };
79 
80 /* DISP_REG_CONFIG_MMSYS_CG_CON1
81  Configures free-run clock gating 1
82  0: Enable clock
83  1: Clock gating */
84 enum {
88 
89  CG_CON1_ALL = 0xffffffff
90 };
91 
92 enum {
98 };
99 
100 enum {
107 };
108 
109 struct disp_mutex_regs {
110  u32 inten;
111  u32 intsta;
113  struct {
114  u32 en;
115  u32 dummy;
116  u32 rst;
118  u32 mod;
119  u32 reserved[3];
120  } mutex[12];
121 };
122 
123 static struct disp_mutex_regs *const disp_mutex = (void *)DISP_MUTEX_BASE;
124 
125 enum {
143 };
144 
145 enum {
149 };
150 
151 struct disp_pq_regs {
161 };
162 
163 enum {
164  PQ_EN = BIT(0),
166 };
167 
168 static struct disp_pq_regs *const disp_ccorr = (void *)DISP_CCORR0_BASE;
169 
170 static struct disp_pq_regs *const disp_aal = (void *)DISP_AAL0_BASE;
171 
172 static struct disp_pq_regs *const disp_gamma = (void *)DISP_GAMMA0_BASE;
173 
174 static struct disp_pq_regs *const disp_dither = (void *)DISP_DITHER0_BASE;
175 
176 enum {
178 };
179 
180 void mtk_ddp_init(void);
181 void mtk_ddp_mode_set(const struct edid *edid);
182 
183 #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_WDMA0
Definition: ddp.h:161
@ CG_CON0_DISP_RDMA1
Definition: ddp.h:159
@ CG_CON0_SMI_LARB0
Definition: ddp.h:141
@ 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
@ DISP_PATH0_SEL_IN_OVL0
Definition: ddp.h:101
@ DISP_PATH0_SEL_IN_OVL0_2L
Definition: ddp.h:102
@ DSI0_SEL_IN_RDMA0
Definition: ddp.h:104
@ DSI0_SEL_IN_DITHER0_MOUT
Definition: ddp.h:103
@ RDMA0_SOUT_SEL_IN_COLOR
Definition: ddp.h:106
@ RDMA0_SOUT_SEL_IN_DSI0
Definition: ddp.h:105
@ MUTEX_MOD_DISP_GAMMA0
Definition: ddp.h:135
@ MUTEX_MOD_DISP_OVL1_2L
Definition: ddp.h:130
@ MUTEX_MOD_DISP_CCORR0
Definition: ddp.h:133
@ MUTEX_MOD_DISP_AAL0
Definition: ddp.h:134
@ MUTEX_MOD_DISP_WDMA0
Definition: ddp.h:131
@ MUTEX_MOD_DISP_RDMA1
Definition: ddp.h:127
@ MUTEX_MOD_DISP_PWM0
Definition: ddp.h:137
@ MUTEX_MOD_DISP_OVL0_2L
Definition: ddp.h:129
@ MUTEX_MOD_DISP_DITHER0
Definition: ddp.h:136
static struct disp_pq_regs *const disp_ccorr
Definition: ddp.h:168
static struct disp_mutex_regs *const disp_mutex
Definition: ddp.h:123
static struct disp_pq_regs *const disp_aal
Definition: ddp.h:170
@ SMI_LARB_NON_SEC_CON
Definition: ddp.h:177
@ PQ_EN
Definition: ddp.h:164
@ PQ_RELAY_MODE
Definition: ddp.h:165
@ OVL0_MOUT_EN_OVL0_2L
Definition: ddp.h:94
@ OVL0_2L_MOUT_EN_DISP_PATH0
Definition: ddp.h:95
@ OVL1_2L_MOUT_EN_DISP_RDMA1
Definition: ddp.h:96
@ OVL0_MOUT_EN_RDMA0
Definition: ddp.h:93
@ DITHER0_MOUT_EN_DISP_DSI0
Definition: ddp.h:97
static struct mmsys_cfg_regs *const mmsys_cfg
Definition: ddp.h:42
static struct disp_pq_regs *const disp_gamma
Definition: ddp.h:172
@ CG_CON0_DISP_CCORR0
Definition: ddp.h:61
@ CG_CON0_DISP_GAMMA0
Definition: ddp.h:63
@ CG_CON0_GALS_COMMON1
Definition: ddp.h:53
@ CG_CON0_DISP_ALL
Definition: ddp.h:65
@ CG_CON0_DISP_AAL0
Definition: ddp.h:62
@ CG_CON0_DISP_OVL1_2L
Definition: ddp.h:56
@ CG_CON0_DISP_OVL0_2L
Definition: ddp.h:55
@ CG_CON0_GALS_COMMON0
Definition: ddp.h:52
@ CG_CON0_DISP_DITHER0
Definition: ddp.h:64
static struct disp_pq_regs *const disp_dither
Definition: ddp.h:174
@ MUTEX_SOF_DSI0
Definition: ddp.h:147
@ MUTEX_SOF_SINGLE_MODE
Definition: ddp.h:146
@ MUTEX_SOF_DPI0
Definition: ddp.h:148
@ CG_CON1_DISP_26M
Definition: ddp.h:87
@ CG_CON1_DISP_DSI0
Definition: ddp.h:85
@ CG_CON1_DISP_DSI0_INTERFACE
Definition: ddp.h:86
@ 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
uint32_t u32
Definition: stdint.h:51
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 en
Definition: ddp.h:152
u32 cfg
Definition: ddp.h:158
u32 inten
Definition: ddp.h:154
u32 status
Definition: ddp.h:156
u32 reserved0[3]
Definition: ddp.h:157
u32 intsta
Definition: ddp.h:155
u32 size
Definition: ddp.h:160
u32 reserved1[3]
Definition: ddp.h:159
u32 reset
Definition: ddp.h:153
Definition: edid.h:49
u32 reserved_0xF34
Definition: ddp.h:31
u32 reserved_0x10C
Definition: ddp.h:17
u32 disp_ovl0_2l_mout_en
Definition: ddp.h:23
u32 disp_dither0_mout_en
Definition: ddp.h:25
u32 disp_rdma0_sout_sel_in
Definition: ddp.h:53
u32 dpi0_sel_sout_sel_in
Definition: ddp.h:37
u32 mmsys_cg_con0
Definition: ddp.h:63
u32 disp_ovl1_2l_mout_en
Definition: ddp.h:24
u32 mmsys_cg_clr0
Definition: ddp.h:65
u32 disp_ovl0_mout_en
Definition: ddp.h:25
u32 mmsys_cg_set0
Definition: ddp.h:64
u32 reserved_0xF58[3]
Definition: ddp.h:36
u32 dsi0_sel_in
Definition: ddp.h:50
u32 reserved_0xF10[5]
Definition: ddp.h:26
u32 reserved_0x000[64]
Definition: ddp.h:13
u32 disp_path0_sel_in
Definition: ddp.h:45
u32 reserved_0x11C[889]
Definition: ddp.h:21
u32 dpi0_sel_in
Definition: ddp.h:30
u32 disp_ovl0_2l_sel_in
Definition: ddp.h:32
u32 mmsys_cg_clr1
Definition: ddp.h:69
u32 reserved_0xF28
Definition: ddp.h:28
u32 reserved_0xF3C[5]
Definition: ddp.h:33
u32 mmsys_cg_con1
Definition: ddp.h:67
u32 disp_rdma1_sout_sel_in
Definition: ddp.h:54
u32 mmsys_cg_set1
Definition: ddp.h:68