This host controller is possible to change incorrect tap if an SDIO card is used because DAT1 is used for interrupt signal on SDIO standard but the contoller doesn't take care of it. So, in the worst case, this behavior causes a CRC error. To resolve the issue, add some new ops into the tmio core and add fixed code into the renesas_sdhi driver. This patch set tested on RZ/G2M (r8a774a1-hihope-rzg2m-ex.dtb) with EmbeddedArtists 1ZM module. Before I don't apply this patch set, the RVSCNTL value was changed unexpectidly like below. [ 687.103589] renesas_sdhi_internal_dmac ee100000.mmc: renesas_sdhi_auto_correction: rvscntl = 00000701 ... [ 768.490979] renesas_sdhi_internal_dmac ee100000.mmc: renesas_sdhi_auto_correction: rvscntl = 00000501 [ 768.500307] renesas_sdhi_internal_dmac ee100000.mmc: renesas_sdhi_auto_correction: rvscntl = 00000401 [ 768.509640] renesas_sdhi_internal_dmac ee100000.mmc: renesas_sdhi_auto_correction: rvscntl = 00000501 [ 768.518947] renesas_sdhi_internal_dmac ee100000.mmc: renesas_sdhi_auto_correction: rvscntl = 00000501 [ 768.528217] renesas_sdhi_internal_dmac ee100000.mmc: renesas_sdhi_auto_correction: rvscntl = 00000501 [ 768.537494] renesas_sdhi_internal_dmac ee100000.mmc: renesas_sdhi_auto_correction: rvscntl = 00000601 Yoshihiro Shimoda (2): mmc: host: tmio: Add .sdio_irq() mmc: host: renesas_sdhi: Fix incorrect auto retuning for an SDIO card drivers/mmc/host/renesas_sdhi.h | 1 + drivers/mmc/host/renesas_sdhi_core.c | 48 ++++++++++++++++++++++++---- drivers/mmc/host/tmio_mmc.h | 1 + drivers/mmc/host/tmio_mmc_core.c | 5 ++- 4 files changed, 47 insertions(+), 8 deletions(-) -- 2.43.0