mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 17:54:13 +08:00
mmc: sdhi: fill in actual_clock
Save set clock in mmc_host actual_clock enabling exporting it via debugfs. This will indicate the precise SD clock in I/O settings rather than only the sometimes misleading requested clock. Signed-off-by: Tamás Szűcs <tszucs@protonmail.ch> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
38eee2e82c
commit
75eaf49f5d
@ -124,7 +124,7 @@ static unsigned int renesas_sdhi_clk_update(struct tmio_mmc_host *host,
|
||||
{
|
||||
struct renesas_sdhi *priv = host_to_priv(host);
|
||||
unsigned int freq, diff, best_freq = 0, diff_min = ~0;
|
||||
int i, ret;
|
||||
int i;
|
||||
|
||||
/* tested only on R-Car Gen2+ currently; may work for others */
|
||||
if (!(host->pdata->flags & TMIO_MMC_MIN_RCAR2))
|
||||
@ -153,9 +153,9 @@ static unsigned int renesas_sdhi_clk_update(struct tmio_mmc_host *host,
|
||||
}
|
||||
}
|
||||
|
||||
ret = clk_set_rate(priv->clk, best_freq);
|
||||
clk_set_rate(priv->clk, best_freq);
|
||||
|
||||
return ret == 0 ? best_freq : clk_get_rate(priv->clk);
|
||||
return clk_get_rate(priv->clk);
|
||||
}
|
||||
|
||||
static void renesas_sdhi_set_clock(struct tmio_mmc_host *host,
|
||||
@ -166,10 +166,13 @@ static void renesas_sdhi_set_clock(struct tmio_mmc_host *host,
|
||||
sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, ~CLK_CTL_SCLKEN &
|
||||
sd_ctrl_read16(host, CTL_SD_CARD_CLK_CTL));
|
||||
|
||||
if (new_clock == 0)
|
||||
if (new_clock == 0) {
|
||||
host->mmc->actual_clock = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
clock = renesas_sdhi_clk_update(host, new_clock) / 512;
|
||||
host->mmc->actual_clock = renesas_sdhi_clk_update(host, new_clock);
|
||||
clock = host->mmc->actual_clock / 512;
|
||||
|
||||
for (clk = 0x80000080; new_clock >= (clock << 1); clk >>= 1)
|
||||
clock <<= 1;
|
||||
|
Loading…
Reference in New Issue
Block a user