[PATCH 1/3] mci: rockchip-dwcmshc-sdhci: poll DATA_AVAIL for tuning commands
Sascha Hauer
s.hauer at pengutronix.de
Thu May 21 01:05:05 PDT 2026
Per SDHCI v3.00 the controller only generates Buffer Read Ready
(SDHCI_INT_DATA_AVAIL) during a tuning sequence; CMD_COMPLETE does
not fire. Switch the wait mask for CMD19/21 so HS200 tuning can
converge. Mirrors the arasan-sdhci driver.
This is done only to put the finger on this issue. The next commit
will replace the rockchip specific rk_sdhci_send_cmd() with the
generic sdhci_send_command() which does the same.
Assisted-by: Claude Opus 4.7
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
drivers/mci/rockchip-dwcmshc-sdhci.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/mci/rockchip-dwcmshc-sdhci.c b/drivers/mci/rockchip-dwcmshc-sdhci.c
index 57d5fe1369..1fdea7c4ab 100644
--- a/drivers/mci/rockchip-dwcmshc-sdhci.c
+++ b/drivers/mci/rockchip-dwcmshc-sdhci.c
@@ -333,6 +333,10 @@ static int rk_sdhci_send_cmd(struct mci_host *mci, struct mci_cmd *cmd)
sdhci_write32(&host->sdhci, SDHCI_ARGUMENT, cmd->cmdarg);
sdhci_write16(&host->sdhci, SDHCI_COMMAND, command);
+ /* CMD19/21 generate _only_ Buffer Read Ready interrupt */
+ if (mmc_op_tuning(cmd->cmdidx))
+ mask = SDHCI_INT_DATA_AVAIL;
+
ret = sdhci_wait_for_done(&host->sdhci, mask);
if (ret) {
sdhci_teardown_data(&host->sdhci, data, dma);
--
2.47.3
More information about the barebox
mailing list