diff mbox series

[resend] mmc: mtk-sd: don't ignore max-frequency from device tree

Message ID YE99v02mQEZKjbr2@makrotopia.org
State Accepted
Commit 30e76b755b2a52e74bf916716a83deaf775664bb
Delegated to: Tom Rini
Headers show
Series [resend] mmc: mtk-sd: don't ignore max-frequency from device tree | expand

Commit Message

Daniel Golle March 15, 2021, 3:31 p.m. UTC
commit e58e68d9 ("mmc: mtk-sd: assign plat->cfg.f_max with a correct value")
wrongly assumed that plat->cfg.f_max is always unset at the time
mscd_drv_probe() is run. This is not true in case max-frequency being
defined in device tree, as it is then already set by mmc_of_parse()
in msdc_of_to_plat().
Only set plat->cfg.f_max to the default maximum value in case it is
not already set to a sane value.

Fixes: e58e68d93e ("mmc: mtk-sd: assign plat->cfg.f_max with a correct value")
Cc: Stefan Roese <sr@denx.de>
Cc: Weijie Gao <weijie.gao@mediatek.com>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 drivers/mmc/mtk-sd.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Tom Rini March 18, 2021, 4:56 p.m. UTC | #1
On Mon, Mar 15, 2021 at 03:31:11PM +0000, Daniel Golle wrote:

> commit e58e68d9 ("mmc: mtk-sd: assign plat->cfg.f_max with a correct value")
> wrongly assumed that plat->cfg.f_max is always unset at the time
> mscd_drv_probe() is run. This is not true in case max-frequency being
> defined in device tree, as it is then already set by mmc_of_parse()
> in msdc_of_to_plat().
> Only set plat->cfg.f_max to the default maximum value in case it is
> not already set to a sane value.
> 
> Fixes: e58e68d93e ("mmc: mtk-sd: assign plat->cfg.f_max with a correct value")
> Cc: Stefan Roese <sr@denx.de>
> Cc: Weijie Gao <weijie.gao@mediatek.com>
> Signed-off-by: Daniel Golle <daniel@makrotopia.org>

Applied to u-boot/master, thanks!
diff mbox series

Patch

diff --git a/drivers/mmc/mtk-sd.c b/drivers/mmc/mtk-sd.c
index 3b9c12266a..48a764be82 100644
--- a/drivers/mmc/mtk-sd.c
+++ b/drivers/mmc/mtk-sd.c
@@ -1639,7 +1639,8 @@  static int msdc_drv_probe(struct udevice *dev)
 	else
 		cfg->f_min = host->src_clk_freq / (4 * 4095);
 
-	cfg->f_max = host->src_clk_freq;
+	if (cfg->f_max < cfg->f_min || cfg->f_max > host->src_clk_freq)
+		cfg->f_max = host->src_clk_freq;
 
 	cfg->b_max = 1024;
 	cfg->voltages = MMC_VDD_32_33 | MMC_VDD_33_34;