From f3254097844540ee6de9ff1b95740194cf2c2031 Mon Sep 17 00:00:00 2001 From: Mengqi Zhang Date: Fri, 28 Feb 2025 15:13:40 +0800 Subject: [PATCH] soc/mediatek/mt8189: Add SD card support Add GPIO configuration of SD card. BUG=b:379008996 BRANCH=none TEST=build pass Signed-off-by: Mengqi Zhang Change-Id: If34841dddeb93a8622dda8e011cd1f29ec9c541d Reviewed-on: https://review.coreboot.org/c/coreboot/+/87863 Reviewed-by: Yidi Lin Tested-by: build bot (Jenkins) Reviewed-by: Yu-Ping Wu --- src/soc/mediatek/mt8189/msdc.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/soc/mediatek/mt8189/msdc.c b/src/soc/mediatek/mt8189/msdc.c index 1ebb78ef41..3454a75b3a 100644 --- a/src/soc/mediatek/mt8189/msdc.c +++ b/src/soc/mediatek/mt8189/msdc.c @@ -9,6 +9,7 @@ #include #include #include +#include #include static const struct pad_func emmc_pins[] = { @@ -25,6 +26,15 @@ static const struct pad_func emmc_pins[] = { PAD_FUNC_UP(EMMC_DAT7, MSDC0_DAT7), }; +static const struct pad_func sdcard_pins[] = { + PAD_FUNC_DOWN(MSDC1_CLK, MSDC1_CLK), + PAD_FUNC_UP(MSDC1_CMD, MSDC1_CMD), + PAD_FUNC_UP(MSDC1_DAT0, MSDC1_DAT0), + PAD_FUNC_UP(MSDC1_DAT1, MSDC1_DAT1), + PAD_FUNC_UP(MSDC1_DAT2, MSDC1_DAT2), + PAD_FUNC_UP(MSDC1_DAT3, MSDC1_DAT3), +}; + void mtk_msdc_configure_emmc(bool is_early_init) { size_t i; @@ -38,3 +48,21 @@ void mtk_msdc_configure_emmc(bool is_early_init) if (is_early_init) mtk_emmc_early_init((void *)MSDC0_BASE, (void *)MSDC0_TOP_BASE); } + +void mtk_msdc_configure_sdcard(void) +{ + size_t i; + + for (i = 0; i < ARRAY_SIZE(sdcard_pins); i++) { + gpio_set_mode(sdcard_pins[i].gpio, sdcard_pins[i].func); + gpio_set_pull(sdcard_pins[i].gpio, GPIO_PULL_ENABLE, sdcard_pins[i].select); + gpio_set_driving(sdcard_pins[i].gpio, GPIO_DRV_8_MA); + } + + mt6359p_init_pmif_arb(); + /* enable SD card power */ + mainboard_set_regulator_voltage(MTK_REGULATOR_VMCH, 3000000); + mainboard_set_regulator_voltage(MTK_REGULATOR_VMC, 3000000); + mainboard_enable_regulator(MTK_REGULATOR_VMCH, true); + mainboard_enable_regulator(MTK_REGULATOR_VMC, true); +}