This is an automated email from the ASF dual-hosted git repository.

acassis 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 c4780f1a69 drivers/spi_slave: call SPIS_DEV_NOTIFY when rx or tx 
complete for all spi slave driver
c4780f1a69 is described below

commit c4780f1a6964085a7464a84508c16ffe960897d8
Author: dongjiuzhu1 <[email protected]>
AuthorDate: Sat Oct 19 23:08:21 2024 +0800

    drivers/spi_slave: call SPIS_DEV_NOTIFY when rx or tx complete for all spi 
slave driver
    
    Signed-off-by: dongjiuzhu1 <[email protected]>
---
 arch/arm/src/samv7/sam_spi_slave.c                 | 2 ++
 arch/arm/src/stm32h7/stm32_spi_slave.c             | 2 ++
 arch/risc-v/src/common/espressif/esp_spi_slave.c   | 2 ++
 arch/risc-v/src/esp32c3-legacy/esp32c3_spi_slave.c | 2 ++
 arch/xtensa/src/esp32/esp32_spi_slave.c            | 4 ++++
 arch/xtensa/src/esp32s2/esp32s2_spi_slave.c        | 2 ++
 arch/xtensa/src/esp32s3/esp32s3_spi_slave.c        | 2 ++
 7 files changed, 16 insertions(+)

diff --git a/arch/arm/src/samv7/sam_spi_slave.c 
b/arch/arm/src/samv7/sam_spi_slave.c
index 2b8a2a560b..e9dbf72c4a 100644
--- a/arch/arm/src/samv7/sam_spi_slave.c
+++ b/arch/arm/src/samv7/sam_spi_slave.c
@@ -462,6 +462,7 @@ static int spi_interrupt(int irq, void *context, void *arg)
 
           SPIS_DEV_RECEIVE(priv->dev, (const uint16_t *)&data,
                            sizeof(data));
+          SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_RX_COMPLETE);
         }
 
       /* When a transfer starts, the data shifted out is the data present
@@ -509,6 +510,7 @@ static int spi_interrupt(int irq, void *context, void *arg)
 
           regval = spi_dequeue(priv);
           spi_putreg(priv, regval, SAM_SPI_TDR_OFFSET);
+          SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_TX_COMPLETE);
         }
 
       /* The SPI slave hardware provides only an event when NSS rises
diff --git a/arch/arm/src/stm32h7/stm32_spi_slave.c 
b/arch/arm/src/stm32h7/stm32_spi_slave.c
index b8e9e7e90e..a320c80c2f 100644
--- a/arch/arm/src/stm32h7/stm32_spi_slave.c
+++ b/arch/arm/src/stm32h7/stm32_spi_slave.c
@@ -710,6 +710,7 @@ static void spi_dmarxcallback(DMA_HANDLE handle, uint8_t 
isr, void *arg)
   /* Wake-up the SPI driver */
 
   priv->rxresult = isr | 0x080;  /* OR'ed with 0x80 to assure non-zero */
+  SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_RX_COMPLETE);
 }
 #endif
 
@@ -729,6 +730,7 @@ static void spi_dmatxcallback(DMA_HANDLE handle, uint8_t 
isr, void *arg)
   /* Wake-up the SPI driver */
 
   priv->txresult = isr | 0x080;  /* OR'ed with 0x80 to assure non-zero */
+  SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_TX_COMPLETE);
 }
 #endif
 
diff --git a/arch/risc-v/src/common/espressif/esp_spi_slave.c 
b/arch/risc-v/src/common/espressif/esp_spi_slave.c
index a33057d5f5..6d0adc8a89 100644
--- a/arch/risc-v/src/common/espressif/esp_spi_slave.c
+++ b/arch/risc-v/src/common/espressif/esp_spi_slave.c
@@ -578,6 +578,7 @@ static int spislave_periph_interrupt(int irq, void 
*context, void *arg)
     {
       spi_slave_hal_store_result(&priv->ctx);
       priv->rx_length += transfer_size;
+      SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_RX_COMPLETE);
     }
 
 #ifdef CONFIG_ESPRESSIF_SPI2_DMA
@@ -592,6 +593,7 @@ static int spislave_periph_interrupt(int irq, void 
*context, void *arg)
   if (transfer_size > 0 && priv->is_tx_enabled)
     {
       spislave_evict_sent_data(priv, transfer_size);
+      SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_TX_COMPLETE);
     }
 
   priv->ctx.bitlen = priv->tx_length;
diff --git a/arch/risc-v/src/esp32c3-legacy/esp32c3_spi_slave.c 
b/arch/risc-v/src/esp32c3-legacy/esp32c3_spi_slave.c
index 3bc8e8b9b3..93ddf17930 100644
--- a/arch/risc-v/src/esp32c3-legacy/esp32c3_spi_slave.c
+++ b/arch/risc-v/src/esp32c3-legacy/esp32c3_spi_slave.c
@@ -863,6 +863,7 @@ static int spislave_periph_interrupt(int irq, void 
*context, void *arg)
   if (transfer_size > 0)
     {
       spislave_store_result(priv, transfer_size);
+      SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_RX_COMPLETE);
     }
 
   spislave_prepare_next_rx(priv);
@@ -872,6 +873,7 @@ static int spislave_periph_interrupt(int irq, void 
*context, void *arg)
   if (transfer_size > 0 && priv->is_tx_enabled)
     {
       spislave_evict_sent_data(priv, transfer_size);
+      SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_TX_COMPLETE);
     }
 
   spislave_prepare_next_tx(priv);
diff --git a/arch/xtensa/src/esp32/esp32_spi_slave.c 
b/arch/xtensa/src/esp32/esp32_spi_slave.c
index cb8a34417e..0de9852f35 100644
--- a/arch/xtensa/src/esp32/esp32_spi_slave.c
+++ b/arch/xtensa/src/esp32/esp32_spi_slave.c
@@ -840,6 +840,8 @@ static int esp32_spislv_interrupt(int irq, void *context, 
void *arg)
           tmp = esp32_spi_get_reg(priv, SPI_W0_OFFSET + i);
           memcpy(priv->rxbuffer + priv->rxlen + i, &tmp, 4);
         }
+
+      SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_RX_COMPLETE);
     }
 
   priv->rxlen += n;
@@ -861,6 +863,8 @@ static int esp32_spislv_interrupt(int irq, void *context, 
void *arg)
           priv->txlen = 0;
           priv->txen = false;
         }
+
+      SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_TX_COMPLETE);
     }
 
   if (priv->txlen)
diff --git a/arch/xtensa/src/esp32s2/esp32s2_spi_slave.c 
b/arch/xtensa/src/esp32s2/esp32s2_spi_slave.c
index edf2c60f08..397aefb105 100644
--- a/arch/xtensa/src/esp32s2/esp32s2_spi_slave.c
+++ b/arch/xtensa/src/esp32s2/esp32s2_spi_slave.c
@@ -966,6 +966,7 @@ static int spislave_periph_interrupt(int irq, void 
*context, void *arg)
   if (transfer_size > 0)
     {
       spislave_store_result(priv, transfer_size);
+      SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_RX_COMPLETE);
     }
 
 #ifdef CONFIG_ESP32S2_SPI_DMA
@@ -977,6 +978,7 @@ static int spislave_periph_interrupt(int irq, void 
*context, void *arg)
   if (priv->is_tx_enabled && transfer_size > 0)
     {
       spislave_evict_sent_data(priv, transfer_size);
+      SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_TX_COMPLETE);
     }
 
   spislave_prepare_next_tx(priv);
diff --git a/arch/xtensa/src/esp32s3/esp32s3_spi_slave.c 
b/arch/xtensa/src/esp32s3/esp32s3_spi_slave.c
index d6a18d3d69..0731025150 100644
--- a/arch/xtensa/src/esp32s3/esp32s3_spi_slave.c
+++ b/arch/xtensa/src/esp32s3/esp32s3_spi_slave.c
@@ -1054,6 +1054,7 @@ static int spislave_periph_interrupt(int irq, void 
*context, void *arg)
       if (transfer_size > 0)
         {
           spislave_store_result(priv, transfer_size);
+          SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_RX_COMPLETE);
         }
 
 #ifdef CONFIG_ESP32S3_SPI_DMA
@@ -1074,6 +1075,7 @@ static int spislave_periph_interrupt(int irq, void 
*context, void *arg)
       if (priv->is_tx_enabled && transfer_size > 0)
         {
           spislave_evict_sent_data(priv, transfer_size);
+          SPIS_DEV_NOTIFY(priv->dev, SPISLAVE_TX_COMPLETE);
         }
 
       spislave_prepare_next_tx(priv);

Reply via email to