This again took a while since v1 because the issue was so hard to trigger. But I finally found a way to inject the flaw, so this series could be tested and it fixes the issue. Changes since v1: * introduce a new flag to MMC core indicating any kind of tuning not only retune * use the new flag to keep SCC flag active * new patch 4, minor cleanup to MMC core A branch including the DEBUG patch can be found here: git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/sdhi/new_manual_calib-for-5.10 If you revert patch 3, you should have the SCC hang during boot again. For the record, let me copy some findings I mentioned in another thread: === Interesting news: The hang comes from a code path I would have not expected. It is not because of accessing an SCC register, it is this line from renesas_sdhi_set_clock() which causes the issue: 186 sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, clk & CLK_CTL_DIV_MASK); I mean I can guess that the clock setting has something to do with the SCC, but I can't see the direct connection with the documentation I have. === Tested on R-Car H3 ES2.0 and M3-N and patches based on mmc/next. Another hope this is gone for good now... Kind regards, Wolfram Wolfram Sang (4): mmc: core: when downgrading HS400, callback into drivers earlier mmc: core: add a 'doing_init_tune' flag and a 'mmc_doing_tune' helper mmc: renesas_sdhi: keep SCC clock active when tuning mmc: core: simplify an expression drivers/mmc/core/mmc.c | 16 ++++++++++------ drivers/mmc/host/renesas_sdhi_core.c | 8 ++++++-- include/linux/mmc/host.h | 6 ++++++ 3 files changed, 22 insertions(+), 8 deletions(-) -- 2.20.1