You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2023/12/06 10:30:10 UTC
(nuttx) branch master updated: xtensa/esp32s3: QSPI disable DMA when sending command to slave
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang 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 d9b543e465 xtensa/esp32s3: QSPI disable DMA when sending command to slave
d9b543e465 is described below
commit d9b543e465b6598964396744345fb036e318347b
Author: Dong Heng <do...@espressif.com>
AuthorDate: Thu Nov 23 10:31:13 2023 +0800
xtensa/esp32s3: QSPI disable DMA when sending command to slave
---
arch/xtensa/src/esp32s3/esp32s3_qspi.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/arch/xtensa/src/esp32s3/esp32s3_qspi.c b/arch/xtensa/src/esp32s3/esp32s3_qspi.c
index 903e1b497c..544dfc4607 100644
--- a/arch/xtensa/src/esp32s3/esp32s3_qspi.c
+++ b/arch/xtensa/src/esp32s3/esp32s3_qspi.c
@@ -725,6 +725,17 @@ static int esp32s3_qspi_command(struct qspi_dev_s *dev,
/* Initiliaze QSPI user register */
+#ifdef CONFIG_ESP32S3_SPI_DMA
+
+ /* Disable QSPI DMA */
+
+ regval = getreg32(SPI_DMA_CONF_REG(id));
+ regval &= ~(SPI_DMA_TX_ENA_M | SPI_DMA_RX_ENA_M);
+ putreg32(regval, SPI_DMA_CONF_REG(id));
+
+ putreg32(0, SPI_DMA_INT_ENA_REG(id));
+#endif
+
user_reg &= ~(SPI_USR_ADDR_M |
SPI_USR_MOSI_M |
SPI_USR_MISO_M |
@@ -753,7 +764,8 @@ static int esp32s3_qspi_command(struct qspi_dev_s *dev,
user_reg |= SPI_USR_ADDR_M;
- putreg32(cmdinfo->addr, SPI_ADDR_REG(id));
+ regval = cmdinfo->addr << (32 - cmdinfo->addrlen * 8);
+ putreg32(regval, SPI_ADDR_REG(id));
}
/* Set dummy */
@@ -944,7 +956,8 @@ static int esp32s3_qspi_memory(struct qspi_dev_s *dev,
user1_reg &= ~SPI_USR_ADDR_BITLEN_M;
user1_reg |= (meminfo->addrlen * 8 - 1) << SPI_USR_ADDR_BITLEN_S;
- putreg32(meminfo->addr, SPI_ADDR_REG(id));
+ regval = meminfo->addr << (32 - meminfo->addrlen * 8);
+ putreg32(regval, SPI_ADDR_REG(id));
/* Set dummy */