mbox series

[0/2] mmc: host: renesas_sdhi: Fix incorrect auto retuning for an SDIO card

Message ID 20250610072545.2001435-1-yoshihiro.shimoda.uh@renesas.com
Headers show
Series mmc: host: renesas_sdhi: Fix incorrect auto retuning for an SDIO card | expand

Message

Yoshihiro Shimoda June 10, 2025, 7:25 a.m. UTC
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(-)