This is an automated email from the ASF dual-hosted git repository.
xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 35a64f7cdc3 arch/arm/stm32h7: remove non-existent QSPI_CR_DMAEN
references
35a64f7cdc3 is described below
commit 35a64f7cdc33adfb74bb09e0b43b710835f66b04
Author: Sarthak Pandey <[email protected]>
AuthorDate: Wed Oct 14 01:25:03 2026 +0530
arch/arm/stm32h7: remove non-existent QSPI_CR_DMAEN references
In STM32H7 (RM0433), QUADSPI_CR Bit 2 is reserved and does not contain a
DMAEN bit (unlike STM32F7/L4). DMA requests are generated automatically by
hardware based on the FIFO threshold.
This commit removes all references to QSPI_CR_DMAEN in stm32_qspi.c, fixing
compilation failure when CONFIG_STM32_QSPI_DMA is enabled.
Fixes: #16366
Signed-off-by: Sarthak Pandey <[email protected]>
---
arch/arm/src/stm32h7/stm32_qspi.c | 54 ++++++++++++++++-----------------------
1 file changed, 22 insertions(+), 32 deletions(-)
diff --git a/arch/arm/src/stm32h7/stm32_qspi.c
b/arch/arm/src/stm32h7/stm32_qspi.c
index f09d07c0d57..53619b2b9ba 100644
--- a/arch/arm/src/stm32h7/stm32_qspi.c
+++ b/arch/arm/src/stm32h7/stm32_qspi.c
@@ -507,13 +507,12 @@ static void qspi_dumpregs(struct stm32h7_qspidev_s *priv,
const char *msg)
regval = getreg32(priv->base + STM32_QUADSPI_CR_OFFSET); /* Control
Register */
spiinfo("CR:%08" PRIx32 "\n", regval);
- spiinfo(" EN:%1d ABORT:%1d DMAEN:%1d TCEN:%1d SSHIFT:%1d\n"
+ spiinfo(" EN:%1d ABORT:%1d TCEN:%1d SSHIFT:%1d\n"
" FTHRES: %d\n"
" TEIE:%1d TCIE:%1d FTIE:%1d SMIE:%1d TOIE:%1d APMS:%1d PMM:%1d\n"
" PRESCALER: %d\n",
(regval & QSPI_CR_EN) ? 1 : 0,
(regval & QSPI_CR_ABORT) ? 1 : 0,
- (regval & QSPI_CR_DMAEN) ? 1 : 0,
(regval & QSPI_CR_TCEN) ? 1 : 0,
(regval & QSPI_CR_SSHIFT) ? 1 : 0,
(regval & QSPI_CR_FTHRES_MASK) >> QSPI_CR_FTHRES_SHIFT,
@@ -585,6 +584,7 @@ static void qspi_dumpregs(struct stm32h7_qspidev_s *priv,
const char *msg)
static void qspi_dumpgpioconfig(const char *msg)
{
uint32_t regval;
+
spiinfo("%s:\n", msg);
/* Port B */
@@ -1044,12 +1044,14 @@ static void qspi_waitstatusflags(struct
stm32h7_qspidev_s *priv,
if (polarity)
{
while (!((regval = qspi_getreg(priv, STM32_QUADSPI_SR_OFFSET)) & mask))
- ;
+ {
+ }
}
else
{
while (((regval = qspi_getreg(priv, STM32_QUADSPI_SR_OFFSET)) & mask))
- ;
+ {
+ }
}
}
@@ -1380,6 +1382,7 @@ static int qspi0_interrupt(int irq, void *context, void
*arg)
static void qspi_dma_timeout(wdparm_t arg)
{
struct stm32h7_qspidev_s *priv = (struct stm32h7_qspidev_s *)arg;
+
DEBUGASSERT(priv != NULL);
/* Sample DMA registers at the time of the timeout */
@@ -1416,6 +1419,7 @@ static void qspi_dma_timeout(wdparm_t arg)
static void qspi_dma_callback(DMA_HANDLE handle, uint8_t isr, void *arg)
{
struct stm32h7_qspidev_s *priv = (struct stm32h7_qspidev_s *)arg;
+
DEBUGASSERT(priv != NULL);
/* Cancel the watchdog timeout */
@@ -1490,7 +1494,6 @@ static int qspi_memory_dma(struct stm32h7_qspidev_s *priv,
struct qspi_xctnspec_s *xctn)
{
uint32_t dmaflags;
- uint32_t regval;
int ret;
/* Initialize register sampling */
@@ -1522,12 +1525,6 @@ static int qspi_memory_dma(struct stm32h7_qspidev_s
*priv,
qspi_dma_sample(priv, DMA_AFTER_SETUP);
- /* Enable the memory transfer */
-
- regval = qspi_getreg(priv, STM32_QUADSPI_CR_OFFSET);
- regval |= QSPI_CR_DMAEN;
- qspi_putreg(priv, regval, STM32_QUADSPI_CR_OFFSET);
-
/* Set up the Communications Configuration Register as per command info */
qspi_ccrconfig(priv, xctn,
@@ -1556,7 +1553,7 @@ static int qspi_memory_dma(struct stm32h7_qspidev_s *priv,
qspi_dma_timeout, (wdparm_t)priv);
if (ret < 0)
{
- spierr("ERROR: wd_start failed: %d\n", ret);
+ spierr("ERROR: wd_start failed: %d\n", ret);
}
/* Wait for the DMA complete */
@@ -1584,9 +1581,6 @@ static int qspi_memory_dma(struct stm32h7_qspidev_s *priv,
if (ret != -EINTR)
{
DEBUGPANIC();
- regval = qspi_getreg(priv, STM32_QUADSPI_CR_OFFSET);
- regval &= ~QSPI_CR_DMAEN;
- qspi_putreg(priv, regval, STM32_QUADSPI_CR_OFFSET);
return ret;
}
}
@@ -1616,10 +1610,6 @@ static int qspi_memory_dma(struct stm32h7_qspidev_s
*priv,
stm32_dmastop(priv->dmach);
- regval = qspi_getreg(priv, STM32_QUADSPI_CR_OFFSET);
- regval &= ~QSPI_CR_DMAEN;
- qspi_putreg(priv, regval, STM32_QUADSPI_CR_OFFSET);
-
/* Complain if the DMA fails */
if (priv->result)
@@ -1961,19 +1951,19 @@ static void qspi_setmode(struct qspi_dev_s *dev, enum
qspi_mode_e mode)
switch (mode)
{
- case QSPIDEV_MODE0: /* CPOL=0; CPHA=0 */
- break;
-
- case QSPIDEV_MODE3: /* CPOL=1; CPHA=1 */
- regval |= (QSPI_DCR_CKMODE);
- break;
-
- case QSPIDEV_MODE1: /* CPOL=0; CPHA=1 */
- case QSPIDEV_MODE2: /* CPOL=1; CPHA=0 */
- spiinfo("unsupported mode=%d\n", mode);
- default:
- DEBUGASSERT(FALSE);
- return;
+ case QSPIDEV_MODE0: /* CPOL=0; CPHA=0 */
+ break;
+
+ case QSPIDEV_MODE3: /* CPOL=1; CPHA=1 */
+ regval |= (QSPI_DCR_CKMODE);
+ break;
+
+ case QSPIDEV_MODE1: /* CPOL=0; CPHA=1 */
+ case QSPIDEV_MODE2: /* CPOL=1; CPHA=0 */
+ spiinfo("unsupported mode=%d\n", mode);
+ default:
+ DEBUGASSERT(FALSE);
+ return;
}
qspi_putreg(priv, regval, STM32_QUADSPI_DCR_OFFSET);