(I fixed the typo in patch 1 and retested again. Sorry for the noise!) TMIO has a HW busy timeout detection which was always running but the driver did not handle it yet in a proper way. This series fixes that. Patch 1 sets max_busy_timeout, so the MMC core will not use R1B when it is beyond the maximum HW timeout. Patch 2 adds proper handling of the timeout interrupt. After ensuring both, we can finally enable the WAIT_WHILE_BUSY capability to save the polling. This was tested using my Renesas Salvator-XS (R-Car M3-N) and Lager (R-Car H2). However, more advanced testing from the BSP team and/or Shimoda-san would be much appreciated. The branch is based on mmc/next plus one patch "[PATCH RFT v2] mmc: tmio: Fix command error processing". A branch is available here: git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/sdhi/busy_timeout Yamada-san: I enabled setting max_busy_timeout for Uniphier as well because I am quite sure this HW supports it and it will fix timeout issues with long erase timeouts. I did not enable WAIT_WHILE_BUSY because this is "only" an improvement and not a fix. I think opt-in after some testing is good for that case. I think all patches are 5.11 material to get enough testing. Patch 1 is IMHO stable material, nonetheless. I am open for discussions, of course. Looking forward to comments, reviews, tags... Thanks and happy hacking, Wolfram Masaharu Hayakawa (1): mmc: tmio: Add data timeout error detection Wolfram Sang (2): mmc: tmio: set max_busy_timeout mmc: renesas_sdhi: enable WAIT_WHILE_BUSY drivers/mmc/host/renesas_sdhi_core.c | 3 ++ drivers/mmc/host/renesas_sdhi_internal_dmac.c | 4 +-- drivers/mmc/host/renesas_sdhi_sys_dmac.c | 7 ++-- drivers/mmc/host/tmio_mmc.h | 8 +++-- drivers/mmc/host/tmio_mmc_core.c | 32 +++++++++++++++---- drivers/mmc/host/uniphier-sd.c | 1 + include/linux/mfd/tmio.h | 7 +++- 7 files changed, 48 insertions(+), 14 deletions(-) -- 2.28.0