soc/mediatek/mt8188: Add support for MIPI panel

We need to add DSI and MIPI_TX settings to support MIPI panel.

BUG=b:244208960
TEST=emerge-geralt coreboot

Change-Id: Ib430939b4fa2d517d006b4c23d399754ef4583ff
Signed-off-by: Bo-Chen Chen <rex-bc.chen@mediatek.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70184
Reviewed-by: Yidi Lin <yidilin@google.com>
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Bo-Chen Chen 2022-11-23 17:24:25 +08:00 committed by Felix Held
parent bb4c9ca2d6
commit 35693c5028
3 changed files with 59 additions and 0 deletions

View File

@ -39,6 +39,7 @@ ramstage-y += ../common/dfd.c
ramstage-y += ../common/dp/dp_intf.c ../common/dp/dptx.c ../common/dp/dptx_hal.c dp_intf.c ramstage-y += ../common/dp/dp_intf.c ../common/dp/dptx.c ../common/dp/dptx_hal.c dp_intf.c
ramstage-y += ../common/dpm.c ramstage-y += ../common/dpm.c
ramstage-$(CONFIG_DPM_FOUR_CHANNEL) += ../common/dpm_4ch.c ramstage-$(CONFIG_DPM_FOUR_CHANNEL) += ../common/dpm_4ch.c
ramstage-y += ../common/dsi.c ../common/mtk_mipi_dphy.c
ramstage-y += ../common/emi.c ramstage-y += ../common/emi.c
ramstage-y += ../common/mcu.c ramstage-y += ../common/mcu.c
ramstage-y += ../common/mcupm.c ramstage-y += ../common/mcupm.c

View File

@ -77,6 +77,7 @@ enum {
I2C3_BASE = IO_PHYS + 0x01282000, I2C3_BASE = IO_PHYS + 0x01282000,
SFLASH_REG_BASE = IO_PHYS + 0x0132C000, SFLASH_REG_BASE = IO_PHYS + 0x0132C000,
IOCFG_RM_BASE = IO_PHYS + 0x01C00000, IOCFG_RM_BASE = IO_PHYS + 0x01C00000,
MIPITX_BASE = IO_PHYS + 0x01C80000,
I2C1_BASE = IO_PHYS + 0x01E00000, I2C1_BASE = IO_PHYS + 0x01E00000,
I2C4_BASE = IO_PHYS + 0x01E01000, I2C4_BASE = IO_PHYS + 0x01E01000,
IOCFG_LT_BASE = IO_PHYS + 0x01E10000, IOCFG_LT_BASE = IO_PHYS + 0x01E10000,
@ -95,6 +96,7 @@ enum {
DISP_AAL0_BASE = IO_PHYS + 0x0C005000, DISP_AAL0_BASE = IO_PHYS + 0x0C005000,
DISP_GAMMA0_BASE = IO_PHYS + 0x0C006000, DISP_GAMMA0_BASE = IO_PHYS + 0x0C006000,
DISP_DITHER0_BASE = IO_PHYS + 0x0C007000, DISP_DITHER0_BASE = IO_PHYS + 0x0C007000,
DSI0_BASE = IO_PHYS + 0x0C008000,
DISP_OVL1_BASE = IO_PHYS + 0x0C00A000, DISP_OVL1_BASE = IO_PHYS + 0x0C00A000,
DP_INTF0_BASE = IO_PHYS + 0x0C015000, DP_INTF0_BASE = IO_PHYS + 0x0C015000,
DISP_MUTEX_BASE = IO_PHYS + 0x0C016000, DISP_MUTEX_BASE = IO_PHYS + 0x0C016000,

View File

@ -0,0 +1,56 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef SOC_MEDIATEK_MT8188_DSI_H
#define SOC_MEDIATEK_MT8188_DSI_H
#include <soc/dsi_common.h>
#include <soc/dsi_register_v2.h>
/* DSI features */
#define MTK_DSI_MIPI_RATIO_NUMERATOR 100
#define MTK_DSI_MIPI_RATIO_DENOMINATOR 100
#define MTK_DSI_DATA_RATE_MIN_MHZ 125
#define MTK_DSI_HAVE_SIZE_CON 1
#define PIXEL_STREAM_CUSTOM_HEADER 0xb
/* MIPITX is SOC specific and cannot live in common. */
/* MIPITX_REG */
struct mipi_tx_regs {
u32 reserved0[3];
u32 lane_con;
u32 reserved1[6];
u32 pll_pwr;
u32 pll_con0;
u32 pll_con1;
u32 pll_con2;
u32 pll_con3;
u32 pll_con4;
u32 reserved2[65];
u32 d2_sw_ctl_en;
u32 reserved3[63];
u32 d0_sw_ctl_en;
u32 reserved4[56];
u32 ck_ckmode_en;
u32 reserved5[6];
u32 ck_sw_ctl_en;
u32 reserved6[63];
u32 d1_sw_ctl_en;
u32 reserved7[63];
u32 d3_sw_ctl_en;
};
check_member(mipi_tx_regs, pll_con4, 0x3c);
check_member(mipi_tx_regs, d3_sw_ctl_en, 0x544);
static struct mipi_tx_regs *const mipi_tx = (void *)MIPITX_BASE;
/* Register values */
#define DSI_CK_CKMODE_EN BIT(0)
#define DSI_SW_CTL_EN BIT(0)
#define AD_DSI_PLL_SDM_PWR_ON BIT(0)
#define AD_DSI_PLL_SDM_ISO_EN BIT(1)
#define RG_DSI_PLL_EN BIT(4)
#define RG_DSI_PLL_POSDIV (0x7 << 8)
#endif