While debugging something else, I noticed that the SDHI driver doesn't use the 'hw_reset' callback as intended. It was used to reset the tuning block but not the remote card via RSTn. So, this patch series fixes it by moving stuff to the reset callback. In addition, calls within the TMIO core are converted to 'reset' and the 'hw_reset' callback is only used by the MMC core now. This allow for further cleanups which make the code a tad smaller and much more readable. I did some testing here, and tuning etc... still works, no regressions, both with eMMC and SDXC. I send this out as RFT because I want to give our BSP team also a chance to test more advanced cases. Also, I will be thinking of more ways to verify this all is correct. A branch for testing can be found here: git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/sdhi/refactor_hw_reset The branch is based on top of v5.9-rc1. Looking forward to comments! Happy hacking, Wolfram Wolfram Sang (6): mmc: renesas_sdhi: move wrong 'hw_reset' to 'reset' Revert "mmc: tmio: fix reset operation" mmc: tmio: remove indirection of 'hw_reset' callback mmc: tmio: factor out common parts of the reset routine mmc: tmio: don't reset whole IP core when tuning fails mmc: tmio: remove indirection of 'execute_tuning' callback drivers/mmc/host/renesas_sdhi_core.c | 58 ++++++++++++++-------------- drivers/mmc/host/tmio_mmc.c | 8 ---- drivers/mmc/host/tmio_mmc.h | 7 ---- drivers/mmc/host/tmio_mmc_core.c | 45 ++++----------------- drivers/mmc/host/uniphier-sd.c | 5 ++- 5 files changed, 39 insertions(+), 84 deletions(-) -- 2.20.1