rockchip: sdhci: rk3568: fix clock setting logic
authorVasily Khoruzhick <anarsoul@gmail.com>
Tue, 7 Mar 2023 21:26:46 +0000 (13:26 -0800)
committerKever Yang <kever.yang@rock-chips.com>
Fri, 21 Apr 2023 07:16:00 +0000 (15:16 +0800)
commit7786710adb76720be8e693c4efcea039af7ae086
tree6a9a5c48e768cbd859ee9e30d672cc851865db21
parent5db4972a5bbdbf9e3af48ffc9bc4fec73b7b6a79
rockchip: sdhci: rk3568: fix clock setting logic

mmc->tran_speed is max clock, but currently rk3568_sdhci_set_ios_post
uses it if its != 0, regardless of mmc->clock value, and it breaks
eMMC controller.

Without this patch 'mmc dev 0; mmc dev 1; mmc dev 0' is enough for
breaking eMMC, since first initialization sets mmc->mmc_tran speed
to non-zero value (26MHz in my case), and on subsequent re-init when
mmc layer asks for 400KHz it sets 26MHz instead.

Fix it by using MAX(mmc->tran_speed, mmc->clock)

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
drivers/mmc/rockchip_sdhci.c