projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
fef12d9
)
mmc: host: renesas_sdhi: Fix the actual clock
author
Biju Das
<biju.das.jz@bp.renesas.com>
Sun, 29 Jun 2025 20:38:56 +0000
(21:38 +0100)
committer
Ulf Hansson
<ulf.hansson@linaro.org>
Tue, 19 Aug 2025 12:34:14 +0000
(14:34 +0200)
Wrong actual clock reported, if the SD clock division ratio is other
than 1:1(bits DIV[7:0] in SD_CLK_CTRL are set to
11111111
).
On high speed mode, cat /sys/kernel/debug/mmc1/ios
Without the patch:
clock:
50000000
Hz
actual clock:
200000000
Hz
After the fix:
clock:
50000000
Hz
actual clock:
50000000
Hz
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Link:
https://lore.kernel.org/r/20250629203859.170850-1-biju.das.jz@bp.renesas.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/renesas_sdhi_core.c
patch
|
blob
|
history
diff --git
a/drivers/mmc/host/renesas_sdhi_core.c
b/drivers/mmc/host/renesas_sdhi_core.c
index
fb8ca03
..
a41291a
100644
(file)
--- a/
drivers/mmc/host/renesas_sdhi_core.c
+++ b/
drivers/mmc/host/renesas_sdhi_core.c
@@
-222,7
+222,11
@@
static void renesas_sdhi_set_clock(struct tmio_mmc_host *host,
clk &= ~0xff;
}
- sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, clk & CLK_CTL_DIV_MASK);
+ clock = clk & CLK_CTL_DIV_MASK;
+ if (clock != 0xff)
+ host->mmc->actual_clock /= (1 << (ffs(clock) + 1));
+
+ sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, clock);
if (!(host->pdata->flags & TMIO_MMC_MIN_RCAR2))
usleep_range(10000, 11000);