diff --git a/src/soc/mediatek/common/dsi_common.c b/src/soc/mediatek/common/dsi_common.c index 027c748d0b..f9e7e2954b 100644 --- a/src/soc/mediatek/common/dsi_common.c +++ b/src/soc/mediatek/common/dsi_common.c @@ -76,24 +76,7 @@ static void mtk_dsi_dphy_timing(u32 data_rate, struct mtk_phy_timing *timing) u32 timcon0, timcon1, timcon2, timcon3; u32 data_rate_mhz = DIV_ROUND_UP(data_rate, MHz); - timing->lpx = (60 * data_rate_mhz / (8 * 1000)) + 1; - timing->da_hs_prepare = (80 * data_rate_mhz + 4 * 1000) / 8000; - timing->da_hs_zero = (170 * data_rate_mhz + 10 * 1000) / 8000 + 1 - - timing->da_hs_prepare; - timing->da_hs_trail = timing->da_hs_prepare + 1; - - timing->ta_go = 4 * timing->lpx - 2; - timing->ta_sure = timing->lpx + 2; - timing->ta_get = 4 * timing->lpx; - timing->da_hs_exit = 2 * timing->lpx + 1; - - timing->da_hs_sync = 1; - - timing->clk_hs_prepare = 70 * data_rate_mhz / (8 * 1000); - timing->clk_hs_post = timing->clk_hs_prepare + 8; - timing->clk_hs_trail = timing->clk_hs_prepare; - timing->clk_hs_zero = timing->clk_hs_trail * 4; - timing->clk_hs_exit = 2 * timing->clk_hs_trail; + mtk_dsi_dphy_timing_calculation(data_rate_mhz, timing); /* Allow board-specific tuning. */ mtk_dsi_override_phy_timing(timing); diff --git a/src/soc/mediatek/common/include/soc/dsi_common.h b/src/soc/mediatek/common/include/soc/dsi_common.h index d741db0f1d..97161be45b 100644 --- a/src/soc/mediatek/common/include/soc/dsi_common.h +++ b/src/soc/mediatek/common/include/soc/dsi_common.h @@ -218,6 +218,7 @@ void mtk_dsi_cphy_vdo_timing(const u32 lanes, const struct edid *edid, s32 *hbp_byte, s32 *hfp_byte, u32 *hsync_active_byte); void mtk_dsi_cphy_disable_ck_mode(void); void mtk_dsi_dphy_disable_ck_mode(void); +void mtk_dsi_dphy_timing_calculation(u32 data_rate_mhz, struct mtk_phy_timing *timing); void mtk_dsi_configure_mipi_tx(u32 data_rate, u32 lanes, bool is_cphy); int mtk_dsi_init(u32 mode_flags, u32 format, u32 lanes, const struct edid *edid, const u8 *init_commands); diff --git a/src/soc/mediatek/common/mtk_mipi_dphy_v1.c b/src/soc/mediatek/common/mtk_mipi_dphy_v1.c new file mode 100644 index 0000000000..65b21b064a --- /dev/null +++ b/src/soc/mediatek/common/mtk_mipi_dphy_v1.c @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR MIT */ + +#include +#include + +void mtk_dsi_dphy_timing_calculation(u32 data_rate_mhz, struct mtk_phy_timing *timing) +{ + timing->lpx = (60 * data_rate_mhz / (8 * 1000)) + 1; + timing->da_hs_prepare = (80 * data_rate_mhz + 4 * 1000) / 8000; + timing->da_hs_zero = (170 * data_rate_mhz + 10 * 1000) / 8000 + 1 - + timing->da_hs_prepare; + timing->da_hs_trail = timing->da_hs_prepare + 1; + + timing->ta_go = 4 * timing->lpx - 2; + timing->ta_sure = timing->lpx + 2; + timing->ta_get = 4 * timing->lpx; + timing->da_hs_exit = 2 * timing->lpx + 1; + timing->da_hs_sync = 1; + + timing->clk_hs_prepare = 70 * data_rate_mhz / (8 * 1000); + timing->clk_hs_post = timing->clk_hs_prepare + 8; + timing->clk_hs_trail = timing->clk_hs_prepare; + timing->clk_hs_zero = timing->clk_hs_trail * 4; + timing->clk_hs_exit = 2 * timing->clk_hs_trail; +} diff --git a/src/soc/mediatek/mt8173/Makefile.mk b/src/soc/mediatek/mt8173/Makefile.mk index ef969ab24d..e149d9f6ac 100644 --- a/src/soc/mediatek/mt8173/Makefile.mk +++ b/src/soc/mediatek/mt8173/Makefile.mk @@ -72,6 +72,7 @@ ramstage-y += ../common/usb.c usb.c ramstage-y += ../common/ddp.c ddp.c ramstage-y += ../common/dsi_common.c dsi.c +ramstage-y += ../common/mtk_mipi_dphy_v1.c BL31_MAKEARGS += PLAT=mt8173 diff --git a/src/soc/mediatek/mt8183/Makefile.mk b/src/soc/mediatek/mt8183/Makefile.mk index 70f1b2a664..e1955d84c7 100644 --- a/src/soc/mediatek/mt8183/Makefile.mk +++ b/src/soc/mediatek/mt8183/Makefile.mk @@ -50,6 +50,7 @@ ramstage-y += emi.c ramstage-y += ../common/auxadc.c ramstage-y += ../common/ddp.c ddp.c ramstage-y += ../common/dsi_common.c ../common/dsi_v1.c ../common/mtk_mipi_dphy.c +ramstage-y += ../common/mtk_mipi_dphy_v1.c ramstage-y += ../common/gpio_eint_v1.c ../common/gpio.c gpio.c ramstage-y += ../common/i2c.c i2c.c ramstage-y += ../common/mcu.c diff --git a/src/soc/mediatek/mt8186/Makefile.mk b/src/soc/mediatek/mt8186/Makefile.mk index f066b4bb3a..a956db51ce 100644 --- a/src/soc/mediatek/mt8186/Makefile.mk +++ b/src/soc/mediatek/mt8186/Makefile.mk @@ -41,6 +41,7 @@ ramstage-y += ../common/devapc.c devapc.c ramstage-y += ../common/dfd.c ramstage-y += ../common/display.c ramstage-y += ../common/dsi_common.c ../common/dsi_v1.c ../common/mtk_mipi_dphy.c +ramstage-y += ../common/mtk_mipi_dphy_v1.c ramstage-y += ../common/emi.c ramstage-y += ../common/l2c_ops.c ramstage-y += ../common/mcu.c diff --git a/src/soc/mediatek/mt8188/Makefile.mk b/src/soc/mediatek/mt8188/Makefile.mk index 74ccbbdfac..5ae55587b9 100644 --- a/src/soc/mediatek/mt8188/Makefile.mk +++ b/src/soc/mediatek/mt8188/Makefile.mk @@ -46,6 +46,7 @@ ramstage-y += ../common/dpm.c ramstage-y += ../common/dpm_v1.c ramstage-$(CONFIG_DPM_FOUR_CHANNEL) += ../common/dpm_4ch.c ramstage-y += ../common/dsi_common.c ../common/dsi_v1.c ../common/mtk_mipi_dphy.c +ramstage-y += ../common/mtk_mipi_dphy_v1.c ramstage-y += ../common/emi.c ramstage-y += ../common/l2c_ops.c ramstage-y += ../common/mcu.c diff --git a/src/soc/mediatek/mt8189/Makefile.mk b/src/soc/mediatek/mt8189/Makefile.mk index fe4c7d931b..8fda85b5d0 100644 --- a/src/soc/mediatek/mt8189/Makefile.mk +++ b/src/soc/mediatek/mt8189/Makefile.mk @@ -57,6 +57,7 @@ ramstage-y += ../common/mt6359p.c mt6359p.c ramstage-y += ../common/mtcmos.c mtcmos.c ramstage-y += ../common/mtk_fsp.c ramstage-y += ../common/mtk_mipi_cphy.c ../common/mtk_mipi_dphy.c +ramstage-y += ../common/mtk_mipi_dphy_v1.c ramstage-y += ../common/pi_image.c ramstage-y += ../common/pmif.c ../common/pmif_clk.c ../common/pmif_init.c pmif_clk.c ramstage-y += ../common/pmif_spi.c pmif_spi.c diff --git a/src/soc/mediatek/mt8192/Makefile.mk b/src/soc/mediatek/mt8192/Makefile.mk index 8bbc8215b9..b60e8a7764 100644 --- a/src/soc/mediatek/mt8192/Makefile.mk +++ b/src/soc/mediatek/mt8192/Makefile.mk @@ -41,6 +41,7 @@ ramstage-y += ../common/dfd.c ramstage-y += ../common/dpm.c ramstage-y += ../common/dpm_v1.c ramstage-y += ../common/dsi_common.c ../common/dsi_v1.c ../common/mtk_mipi_dphy.c +ramstage-y += ../common/mtk_mipi_dphy_v1.c ramstage-y += ../common/l2c_ops.c ramstage-y += ../common/mcu.c ramstage-y += ../common/mcupm.c