diff --git a/drivers/mmc/rockchip_dw_mmc.c b/drivers/mmc/rockchip_dw_mmc.c index d159c6f64c..fdd49294e6 100644 --- a/drivers/mmc/rockchip_dw_mmc.c +++ b/drivers/mmc/rockchip_dw_mmc.c @@ -37,6 +37,10 @@ struct rockchip_dwmmc_priv { u32 minmax[2]; }; +#ifdef CONFIG_SPL_BUILD +__weak void mmc_gpio_init_direct(void) {} +#endif + static uint rockchip_dwmmc_get_mmc_clk(struct dwmci_host *host, uint freq) { struct udevice *dev = host->priv; @@ -158,6 +162,9 @@ static int rockchip_dwmmc_probe(struct udevice *dev) struct udevice *pwr_dev __maybe_unused; int ret; +#ifdef CONFIG_SPL_BUILD + mmc_gpio_init_direct(); +#endif #if CONFIG_IS_ENABLED(OF_PLATDATA) struct dtd_rockchip_rk3288_dw_mshc *dtplat = &plat->dtplat; diff --git a/include/mmc.h b/include/mmc.h index e3e1bbaeaf..8bf4761457 100644 --- a/include/mmc.h +++ b/include/mmc.h @@ -766,5 +766,12 @@ int mmc_get_env_dev(void); */ struct blk_desc *mmc_get_blk_desc(struct mmc *mmc); + +/** + * mmc_gpio_init_direct() + * + */ +void mmc_gpio_init_direct(void); + #endif /* _MMC_H_ */