rockchip: sdhci: Fix RK3399 eMMC PHY power cycling
authorAlper Nebi Yasak <alpernebiyasak@gmail.com>
Fri, 28 Jan 2022 22:42:37 +0000 (01:42 +0300)
committerTom Rini <trini@konsulko.com>
Mon, 14 Mar 2022 16:44:51 +0000 (12:44 -0400)
commitee5a284b296f31302fe2aaddd07af9b04d3ce54f
tree850ddf721214a618250dc2cc57d6e9db811f1865
parent630a306c1a74a58f447c805656802d026ae10780
rockchip: sdhci: Fix RK3399 eMMC PHY power cycling

The Rockchip RK3399 eMMC PHY has to be power-cycled while changing its
clock speed to some higher speeds. This is dependent on the desired
SDHCI clock speed, and it looks like the PHY should be powered off while
setting the SDHCI clock in these cases.

Commit ac804143cfd1 ("mmc: rockchip_sdhci: add phy and clock config for
rk3399") attempts to do this in the set_ios_post() hook by setting the
SDHCI clock once more while the PHY is turned off/on as necessary, as
the SDHCI framework does not provide a way to override how it sets its
clock. However, the commit breaks reinitializing the eMMC on a few
boards including chromebook_kevin and reportedly ROCKPro64.

This patch reworks the power cycling to utilize the SDHCI framework
slightly better (using the set_control_reg() hook to power off the PHY
and set_ios_post() hook to power it back on) which happens to fix the
issue, at least on a chromebook_kevin.

Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/mmc/rockchip_sdhci.c