mirror of https://gitee.com/openkylin/linux.git
mmc: meson-gx: rework set_ios function
Remove conditional write of cfg register. Warn if set_clk fails for some reason. Consistently use host->dev instead of mixing with mmc_dev(mmc) Reviewed-by: Kevin Hilman <khilman@baylibre.com> Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
3c39e2ca88
commit
c36cf1257b
|
@ -444,8 +444,8 @@ static void meson_mmc_set_tuning_params(struct mmc_host *mmc)
|
||||||
static void meson_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
static void meson_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
||||||
{
|
{
|
||||||
struct meson_host *host = mmc_priv(mmc);
|
struct meson_host *host = mmc_priv(mmc);
|
||||||
u32 bus_width;
|
u32 bus_width, val;
|
||||||
u32 val, orig;
|
int err;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GPIO regulator, only controls switching between 1v8 and
|
* GPIO regulator, only controls switching between 1v8 and
|
||||||
|
@ -473,7 +473,7 @@ static void meson_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
||||||
int ret = regulator_enable(mmc->supply.vqmmc);
|
int ret = regulator_enable(mmc->supply.vqmmc);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
dev_err(mmc_dev(mmc),
|
dev_err(host->dev,
|
||||||
"failed to enable vqmmc regulator\n");
|
"failed to enable vqmmc regulator\n");
|
||||||
else
|
else
|
||||||
host->vqmmc_enabled = true;
|
host->vqmmc_enabled = true;
|
||||||
|
@ -482,9 +482,6 @@ static void meson_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
meson_mmc_clk_set(host, ios->clock);
|
|
||||||
|
|
||||||
/* Bus width */
|
/* Bus width */
|
||||||
switch (ios->bus_width) {
|
switch (ios->bus_width) {
|
||||||
case MMC_BUS_WIDTH_1:
|
case MMC_BUS_WIDTH_1:
|
||||||
|
@ -503,8 +500,6 @@ static void meson_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
||||||
}
|
}
|
||||||
|
|
||||||
val = readl(host->regs + SD_EMMC_CFG);
|
val = readl(host->regs + SD_EMMC_CFG);
|
||||||
orig = val;
|
|
||||||
|
|
||||||
val &= ~CFG_BUS_WIDTH_MASK;
|
val &= ~CFG_BUS_WIDTH_MASK;
|
||||||
val |= FIELD_PREP(CFG_BUS_WIDTH_MASK, bus_width);
|
val |= FIELD_PREP(CFG_BUS_WIDTH_MASK, bus_width);
|
||||||
|
|
||||||
|
@ -518,11 +513,12 @@ static void meson_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
||||||
if (ios->timing == MMC_TIMING_MMC_HS400)
|
if (ios->timing == MMC_TIMING_MMC_HS400)
|
||||||
val |= CFG_CHK_DS;
|
val |= CFG_CHK_DS;
|
||||||
|
|
||||||
if (val != orig) {
|
err = meson_mmc_clk_set(host, ios->clock);
|
||||||
writel(val, host->regs + SD_EMMC_CFG);
|
if (err)
|
||||||
dev_dbg(host->dev, "%s: SD_EMMC_CFG: 0x%08x -> 0x%08x\n",
|
dev_err(host->dev, "Failed to set clock: %d\n,", err);
|
||||||
__func__, orig, val);
|
|
||||||
}
|
writel(val, host->regs + SD_EMMC_CFG);
|
||||||
|
dev_dbg(host->dev, "SD_EMMC_CFG: 0x%08x\n", val);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void meson_mmc_request_done(struct mmc_host *mmc,
|
static void meson_mmc_request_done(struct mmc_host *mmc,
|
||||||
|
|
Loading…
Reference in New Issue