coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
ddp.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <device/mmio.h>
4 #include <edid.h>
5 #include <soc/addressmap.h>
6 #include <soc/ddp.h>
7 #include <types.h>
8 
10 {
16 }
17 
18 static void disp_config_main_path_mutex(void)
19 {
21 
22  /* Clock source from DSI0 */
23  write32(&disp_mutex->mutex[0].sof, BIT(0));
24  write32(&disp_mutex->mutex[0].en, BIT(0));
25 }
26 
27 static void od_start(u32 width, u32 height)
28 {
29  write32(&disp_od->size, width << 16 | height);
31 
32  write32(&disp_od->en, 1);
33 }
34 
35 static void main_disp_path_setup(u32 width, u32 height, u32 pixel_clk)
36 {
37  ovl_set_roi(0, width, height, 0);
38  rdma_config(width, height, pixel_clk, 8 * KiB);
44 }
45 
46 static void disp_clock_on(void)
47 {
56 
59 }
60 
61 void mtk_ddp_init(void)
62 {
63  disp_clock_on();
64 }
65 
66 void mtk_ddp_mode_set(const struct edid *edid)
67 {
68  u32 fmt = OVL_INFMT_RGBA8888;
70 
73 
74  rdma_start();
75  ovl_layer_config(fmt, bpp, edid->mode.ha, edid->mode.va);
76 }
static void write32(void *addr, uint32_t val)
Definition: mmio.h:40
static int width
Definition: bochs.c:42
#define KiB
Definition: helpers.h:75
void color_start(u32 width, u32 height)
Definition: ddp.c:47
void rdma_config(u32 width, u32 height, u32 pixel_clk, u32 fifo_size)
Definition: ddp.c:23
void ovl_set_roi(u32 idx, u32 width, u32 height, u32 color)
Definition: ddp.c:12
void rdma_start(void)
Definition: ddp.c:18
void ovl_layer_config(u32 fmt, u32 bpp, u32 width, u32 height)
Definition: ddp.c:56
@ OVL_INFMT_RGBA8888
Definition: ddp_common.h:123
#define BIT(nr)
Definition: ec_commands.h:45
#define clrbits32(addr, clear)
Definition: mmio.h:26
static void main_disp_path_setup(u32 width, u32 height, u32 pixel_clk)
Definition: ddp.c:35
void mtk_ddp_init(void)
Definition: ddp.c:61
static void od_start(u32 width, u32 height)
Definition: ddp.c:27
static void disp_config_main_path_connection(void)
Definition: ddp.c:9
static void disp_clock_on(void)
Definition: ddp.c:46
void mtk_ddp_mode_set(const struct edid *edid)
Definition: ddp.c:66
static void disp_config_main_path_mutex(void)
Definition: ddp.c:18
@ UFO_BYPASS
Definition: ddp.h:300
@ CG_CON1_DSI0_DIGITAL
Definition: ddp.h:185
@ CG_CON1_DSI0_ENGINE
Definition: ddp.h:184
@ MUTEX_MOD_MAIN_PATH
Definition: ddp.h:240
static struct disp_ufoe_regs *const disp_ufoe
Definition: ddp.h:297
static struct disp_od_regs *const disp_od
Definition: ddp.h:264
static struct disp_mutex_regs *const disp_mutex
Definition: ddp.h:231
@ CG_CON0_DISP_COLOR0
Definition: ddp.h:163
@ CG_CON0_SMI_LARB0
Definition: ddp.h:141
@ CG_CON0_MUTEX_32K
Definition: ddp.h:155
@ CG_CON0_DISP_UFOE
Definition: ddp.h:167
@ CG_CON0_DISP_OVL0
Definition: ddp.h:156
@ CG_CON0_DISP_OD
Definition: ddp.h:171
@ CG_CON0_DISP_RDMA0
Definition: ddp.h:158
@ CG_CON0_SMI_COMMON
Definition: ddp.h:140
@ OVL0_MOUT_EN_COLOR0
Definition: ddp.h:195
@ UFOE_MOUT_EN_DSI0
Definition: ddp.h:197
@ OD_MOUT_EN_RDMA0
Definition: ddp.h:196
static struct mmsys_cfg_regs *const mmsys_cfg
Definition: ddp.h:133
@ DSI0_SEL_IN_UFOE
Definition: ddp.h:203
@ COLOR0_SEL_IN_OVL0
Definition: ddp.h:202
@ OD_RELAY_MODE
Definition: ddp.h:267
uint32_t u32
Definition: stdint.h:51
struct disp_mutex_regs::@798 mutex[6]
u32 size
Definition: ddp.h:256
u32 en
Definition: ddp.h:246
u32 cfg
Definition: ddp.h:252
u32 start
Definition: ddp.h:271
unsigned int va
Definition: edid.h:30
unsigned int ha
Definition: edid.h:25
unsigned int pixel_clock
Definition: edid.h:22
Definition: edid.h:49
unsigned int framebuffer_bits_per_pixel
Definition: edid.h:58
struct edid_mode mode
Definition: edid.h:72
u32 mmsys_cg_con0
Definition: ddp.h:63
u32 disp_ovl0_mout_en
Definition: ddp.h:25
u32 dsi0_sel_in
Definition: ddp.h:50
u32 disp_od_mout_en
Definition: ddp.h:27
u32 disp_color0_sel_in
Definition: ddp.h:42
u32 disp_ufoe_mout_en
Definition: ddp.h:29
u32 mmsys_cg_con1
Definition: ddp.h:67
#define height