[PATCH v2 2/2] mmc: stm32_sdmmc2: Use mmc_of_parse() to read host capabilities
Patrice CHOTARD
patrice.chotard at st.com
Fri Oct 2 11:32:38 CEST 2020
Hi Alexandru
On 9/15/20 9:51 PM, Alexandru Gagniuc wrote:
> mmc_of_parse() can populate the 'f_max' and 'host_caps' fields of
> struct mmc_config from devicetree.
> The same logic is duplicated in stm32_sdmmc2_probe(). Use
> mmc_of_parse(), which is more generic.
>
> Signed-off-by: Alexandru Gagniuc <mr.nuke.me at gmail.com>
> ---
> Changes from v1:
> - Check the return value of mmc_of_parse().
> - The call to mmc_of_parse() is moved further up. This means we can just
> 'return err' on error instead of exiting via goto.
>
> drivers/mmc/stm32_sdmmc2.c | 24 ++++++------------------
> 1 file changed, 6 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/mmc/stm32_sdmmc2.c b/drivers/mmc/stm32_sdmmc2.c
> index 6d50356217..a29657429c 100644
> --- a/drivers/mmc/stm32_sdmmc2.c
> +++ b/drivers/mmc/stm32_sdmmc2.c
> @@ -653,6 +653,12 @@ static int stm32_sdmmc2_probe(struct udevice *dev)
> if (priv->base == FDT_ADDR_T_NONE)
> return -EINVAL;
>
> + cfg->host_caps = 0;
> + cfg->f_max = 52000000;
> + ret = mmc_of_parse(dev, cfg);
> + if (ret < 0)
> + return ret;
> +
> if (dev_read_bool(dev, "st,neg-edge"))
> priv->clk_reg_msk |= SDMMC_CLKCR_NEGEDGE;
> if (dev_read_bool(dev, "st,sig-dir"))
> @@ -676,28 +682,10 @@ static int stm32_sdmmc2_probe(struct udevice *dev)
> GPIOD_IS_IN);
>
> cfg->f_min = 400000;
> - cfg->f_max = dev_read_u32_default(dev, "max-frequency", 52000000);
> cfg->voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195;
> cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
> cfg->name = "STM32 SD/MMC";
>
> - cfg->host_caps = 0;
> - if (cfg->f_max > 25000000)
> - cfg->host_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS;
> -
> - switch (dev_read_u32_default(dev, "bus-width", 1)) {
> - case 8:
> - cfg->host_caps |= MMC_MODE_8BIT;
> - /* fall through */
> - case 4:
> - cfg->host_caps |= MMC_MODE_4BIT;
> - break;
> - case 1:
> - break;
> - default:
> - pr_err("invalid \"bus-width\" property, force to 1\n");
> - }
> -
> upriv->mmc = &plat->mmc;
>
> /* SDMMC init */
Reviewed-by: Patrice Chotard <patrice.chotard at st.com>
Thanks
More information about the U-Boot
mailing list