mmc: fsl_esdhc: get clock directly from global data
authorYangbo Lu <yangbo.lu@nxp.com>
Tue, 12 Nov 2019 11:28:36 +0000 (19:28 +0800)
committerPeng Fan <peng.fan@nxp.com>
Wed, 27 Nov 2019 08:55:56 +0000 (16:55 +0800)
This patch is to get clock directly from global data.

- Remove uclass clk api method. This was what i.MX platforms were
  using, while QorIQ platforms weren't.
- Get clock only from global data, dropping mxc_get_clock().
  QorIQ eSDHC controllers on one silicon use same reference clock.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
drivers/mmc/fsl_esdhc.c

index 8ff84aa3a8de63085a7c9f1e1c42aab9b6883dff..09cb773fe9cf7712d63e451826641de5d579ca70 100644 (file)
@@ -12,7 +12,6 @@
 #include <config.h>
 #include <common.h>
 #include <command.h>
-#include <clk.h>
 #include <errno.h>
 #include <hwconfig.h>
 #include <mmc.h>
@@ -81,7 +80,6 @@ struct fsl_esdhc_plat {
 struct fsl_esdhc_priv {
        struct fsl_esdhc *esdhc_regs;
        unsigned int sdhc_clk;
-       struct clk per_clk;
        unsigned int clock;
 #if !CONFIG_IS_ENABLED(DM_MMC)
        struct mmc *mmc;
@@ -831,9 +829,6 @@ int fsl_esdhc_mmc_init(bd_t *bis)
        return fsl_esdhc_initialize(bis, cfg);
 }
 #else /* DM_MMC */
-#ifndef CONFIG_PPC
-#include <asm/arch/clock.h>
-#endif
 static int fsl_esdhc_probe(struct udevice *dev)
 {
        struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
@@ -841,7 +836,6 @@ static int fsl_esdhc_probe(struct udevice *dev)
        struct fsl_esdhc_priv *priv = dev_get_priv(dev);
        fdt_addr_t addr;
        struct mmc *mmc;
-       int ret;
 
        addr = dev_read_addr(dev);
        if (addr == FDT_ADDR_T_NONE)
@@ -853,30 +847,10 @@ static int fsl_esdhc_probe(struct udevice *dev)
 #endif
        priv->dev = dev;
 
-       if (IS_ENABLED(CONFIG_CLK)) {
-               /* Assigned clock already set clock */
-               ret = clk_get_by_name(dev, "per", &priv->per_clk);
-               if (ret) {
-                       printf("Failed to get per_clk\n");
-                       return ret;
-               }
-               ret = clk_enable(&priv->per_clk);
-               if (ret) {
-                       printf("Failed to enable per_clk\n");
-                       return ret;
-               }
-
-               priv->sdhc_clk = clk_get_rate(&priv->per_clk);
-       } else {
-#ifndef CONFIG_PPC
-               priv->sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK + dev->seq);
-#else
-               priv->sdhc_clk = gd->arch.sdhc_clk;
-#endif
-               if (priv->sdhc_clk <= 0) {
-                       dev_err(dev, "Unable to get clk for %s\n", dev->name);
-                       return -EINVAL;
-               }
+       priv->sdhc_clk = gd->arch.sdhc_clk;
+       if (priv->sdhc_clk <= 0) {
+               dev_err(dev, "Unable to get clk for %s\n", dev->name);
+               return -EINVAL;
        }
 
        fsl_esdhc_get_cfg_common(priv, &plat->cfg);