From ab92c23c6e0ac18da604c16d6db63d0a2b7bcf84 Mon Sep 17 00:00:00 2001 From: Jukka Laitinen Date: Mon, 3 Aug 2026 14:40:55 +0300 Subject: [PATCH] arch/arm64/src/imx9/imx9_usdhc.c: Fix imx9 usdhc DMA initialization USDHC_PROCTL selects whether the usdhc uses SDMA or ADMA. This driver only uses the SDMA or no DMA at all, so select that option. There might be a wrong register value left by ROM code or an earlier bootloader which uses ADMA. Signed-off-by: Jukka Laitinen --- arch/arm64/src/imx9/imx9_usdhc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm64/src/imx9/imx9_usdhc.c b/arch/arm64/src/imx9/imx9_usdhc.c index 3e2eaaee7e3..67b59fa4276 100644 --- a/arch/arm64/src/imx9/imx9_usdhc.c +++ b/arch/arm64/src/imx9/imx9_usdhc.c @@ -1477,6 +1477,11 @@ static void imx9_reset(struct sdio_dev_s *dev) mcinfo("Reset complete\n"); + /* Set PROCTL to select SDMA or no DMA. */ + + modifyreg32(priv->addr + IMX9_USDHC_PROCTL_OFFSET, + USDHC_PROCTL_DMAS_MASK, USDHC_PROCTL_DMAS_NODMA); + /* Make sure that all clocking is disabled */ imx9_clock(dev, CLOCK_SDIO_DISABLED);