[PATCH 2/5] mmc: meson-gx: enable input clocks
Neil Armstrong
narmstrong at baylibre.com
Fri Dec 20 11:15:01 CET 2019
On 19/12/2019 19:36, Jerome Brunet wrote:
> Until now, the mmc clock was left in a good enough state by the ROM
> code to be used by the controller. However on some SoC, if the ROM
> code finds a bootloader on USB or SPI, it might leave the MMC clock
> in state the controller cannot work with.
>
> Enable the input clocks provided to the mmc controller. While the
> u-boot mmc controller driver is not doing fancy settings like the Linux,
> it at least needs to make these clocks are running.
>
> Signed-off-by: Jerome Brunet <jbrunet at baylibre.com>
> ---
> drivers/mmc/meson_gx_mmc.c | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/meson_gx_mmc.c b/drivers/mmc/meson_gx_mmc.c
> index b5f5122b1b7b..86c1a7164a93 100644
> --- a/drivers/mmc/meson_gx_mmc.c
> +++ b/drivers/mmc/meson_gx_mmc.c
> @@ -4,6 +4,7 @@
> */
>
> #include <common.h>
> +#include <clk.h>
> #include <cpu_func.h>
> #include <dm.h>
> #include <fdtdec.h>
> @@ -241,12 +242,23 @@ static int meson_mmc_probe(struct udevice *dev)
> struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
> struct mmc *mmc = &pdata->mmc;
> struct mmc_config *cfg = &pdata->cfg;
> + struct clk_bulk clocks;
> uint32_t val;
> + int ret;
> +
> #ifdef CONFIG_PWRSEQ
> struct udevice *pwr_dev;
> - int ret;
> #endif
>
> + /* Enable the clocks feeding the MMC controller */
> + ret = clk_get_bulk(dev, &clocks);
> + if (ret)
> + return ret;
> +
> + ret = clk_enable_bulk(&clocks);
> + if (ret)
> + return ret;
> +
> cfg->voltages = MMC_VDD_33_34 | MMC_VDD_32_33 |
> MMC_VDD_31_32 | MMC_VDD_165_195;
> cfg->host_caps = MMC_MODE_8BIT | MMC_MODE_4BIT |
>
Reviewed-by: Neil Armstrong <narmstrong at baylibre.com>
More information about the U-Boot
mailing list