mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
mmc: fsl_esdhc: get clock directly from global data
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>
This commit is contained in:
parent
1b71695228
commit
5e81cbff37
1 changed files with 4 additions and 30 deletions
|
@ -12,7 +12,6 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <command.h>
|
#include <command.h>
|
||||||
#include <clk.h>
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <hwconfig.h>
|
#include <hwconfig.h>
|
||||||
#include <mmc.h>
|
#include <mmc.h>
|
||||||
|
@ -81,7 +80,6 @@ struct fsl_esdhc_plat {
|
||||||
struct fsl_esdhc_priv {
|
struct fsl_esdhc_priv {
|
||||||
struct fsl_esdhc *esdhc_regs;
|
struct fsl_esdhc *esdhc_regs;
|
||||||
unsigned int sdhc_clk;
|
unsigned int sdhc_clk;
|
||||||
struct clk per_clk;
|
|
||||||
unsigned int clock;
|
unsigned int clock;
|
||||||
#if !CONFIG_IS_ENABLED(DM_MMC)
|
#if !CONFIG_IS_ENABLED(DM_MMC)
|
||||||
struct mmc *mmc;
|
struct mmc *mmc;
|
||||||
|
@ -831,9 +829,6 @@ int fsl_esdhc_mmc_init(bd_t *bis)
|
||||||
return fsl_esdhc_initialize(bis, cfg);
|
return fsl_esdhc_initialize(bis, cfg);
|
||||||
}
|
}
|
||||||
#else /* DM_MMC */
|
#else /* DM_MMC */
|
||||||
#ifndef CONFIG_PPC
|
|
||||||
#include <asm/arch/clock.h>
|
|
||||||
#endif
|
|
||||||
static int fsl_esdhc_probe(struct udevice *dev)
|
static int fsl_esdhc_probe(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct mmc_uclass_priv *upriv = dev_get_uclass_priv(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);
|
struct fsl_esdhc_priv *priv = dev_get_priv(dev);
|
||||||
fdt_addr_t addr;
|
fdt_addr_t addr;
|
||||||
struct mmc *mmc;
|
struct mmc *mmc;
|
||||||
int ret;
|
|
||||||
|
|
||||||
addr = dev_read_addr(dev);
|
addr = dev_read_addr(dev);
|
||||||
if (addr == FDT_ADDR_T_NONE)
|
if (addr == FDT_ADDR_T_NONE)
|
||||||
|
@ -853,30 +847,10 @@ static int fsl_esdhc_probe(struct udevice *dev)
|
||||||
#endif
|
#endif
|
||||||
priv->dev = dev;
|
priv->dev = dev;
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_CLK)) {
|
priv->sdhc_clk = gd->arch.sdhc_clk;
|
||||||
/* Assigned clock already set clock */
|
if (priv->sdhc_clk <= 0) {
|
||||||
ret = clk_get_by_name(dev, "per", &priv->per_clk);
|
dev_err(dev, "Unable to get clk for %s\n", dev->name);
|
||||||
if (ret) {
|
return -EINVAL;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fsl_esdhc_get_cfg_common(priv, &plat->cfg);
|
fsl_esdhc_get_cfg_common(priv, &plat->cfg);
|
||||||
|
|
Loading…
Reference in a new issue