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...@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 */
-- 
2.25.4

Reply via email to