[PATCH v1 4/7] mci: imx-esdhc: mark the uSDHC ADMA2 descriptor quirks
Johannes Schneider
johannes.schneider at leica-geosystems.com
Sat Jun 27 12:43:21 PDT 2026
The i.MX uSDHC ADMA2 engine cannot handle a length-0 (64 KiB) descriptor and
ignores the END attribute in a trailing NOP descriptor; large ADMA transfers
hang otherwise. Set SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC and
SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC so the shared table builder emits a safe
descriptor shape, matching Linux sdhci-esdhc-imx. esdhc_populate_sdhci() runs
for both the PBL and the proper driver, so this covers every uSDHC ADMA path.
Assisted-by: Claude Opus 4.8 (1M context)
Signed-off-by: Johannes Schneider <johannes.schneider at leica-geosystems.com>
---
drivers/mci/imx-esdhc-common.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/mci/imx-esdhc-common.c b/drivers/mci/imx-esdhc-common.c
index eb6a71915f..d31a2ad779 100644
--- a/drivers/mci/imx-esdhc-common.c
+++ b/drivers/mci/imx-esdhc-common.c
@@ -285,6 +285,14 @@ void esdhc_populate_sdhci(struct fsl_esdhc_host *host)
host->sdhci.read16 = esdhc_op_read16_le_tuning;
host->sdhci.write16 = esdhc_op_write16_le_tuning;
}
+
+ /*
+ * The uSDHC ADMA2 engine mishandles a length-0 (64 KiB) descriptor and
+ * the END attribute in a trailing NOP descriptor.
+ */
+ if (esdhc_is_usdhc(host))
+ host->sdhci.quirks |= SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC |
+ SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC;
}
static bool esdhc_use_pio_mode(void)
--
2.43.0
More information about the barebox
mailing list