From f8ea60fe369e4f52dfd28a8d01cbb8a972f9c900 Mon Sep 17 00:00:00 2001 From: Zhou Xiao Date: Tue, 26 May 2026 19:34:37 +0800 Subject: [PATCH] change(ble_log): move spi tx callback to flash when spi isr in iram disabled (cherry picked from commit 725e9ee162837ee2d0d9baebae57295d3cd37e46) Co-authored-by: Zhou Xiao --- .../ble_log/src/prph/ble_log_prph_spi_master_dma.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/components/bt/common/ble_log/src/prph/ble_log_prph_spi_master_dma.c b/components/bt/common/ble_log/src/prph/ble_log_prph_spi_master_dma.c index cbadf799ca5..6c43044bfaa 100644 --- a/components/bt/common/ble_log/src/prph/ble_log_prph_spi_master_dma.c +++ b/components/bt/common/ble_log/src/prph/ble_log_prph_spi_master_dma.c @@ -20,6 +20,12 @@ #define BLE_LOG_SPI_DMA_ALIGN_BYTES (4U) #define BLE_LOG_SPI_ALIGN_LOG_PERIOD (256U) +#if CONFIG_SPI_MASTER_ISR_IN_IRAM +#define BLE_LOG_SPI_MASTER_DMA_CB_ATTR BLE_LOG_IRAM_ATTR +#else +#define BLE_LOG_SPI_MASTER_DMA_CB_ATTR +#endif + /* VARIABLE */ BLE_LOG_STATIC bool prph_inited = false; BLE_LOG_STATIC spi_device_handle_t dev_handle = NULL; @@ -30,7 +36,7 @@ BLE_LOG_STATIC void spi_master_dma_tx_done_cb(spi_transaction_t *spi_trans); BLE_LOG_STATIC void spi_master_dma_pre_tx_cb(spi_transaction_t *spi_trans); /* PRIVATE FUNCTION */ -BLE_LOG_IRAM_ATTR BLE_LOG_STATIC void spi_master_dma_tx_done_cb(spi_transaction_t *spi_trans) +BLE_LOG_SPI_MASTER_DMA_CB_ATTR BLE_LOG_STATIC void spi_master_dma_tx_done_cb(spi_transaction_t *spi_trans) { /* SPI slave performance issue workaround */ last_tx_done_ts = esp_timer_get_time(); @@ -43,7 +49,7 @@ BLE_LOG_IRAM_ATTR BLE_LOG_STATIC void spi_master_dma_tx_done_cb(spi_transaction_ __atomic_store_n(&trans->prph_owned, false, __ATOMIC_RELEASE); } -BLE_LOG_IRAM_ATTR BLE_LOG_STATIC void spi_master_dma_pre_tx_cb(spi_transaction_t *spi_trans) +BLE_LOG_SPI_MASTER_DMA_CB_ATTR BLE_LOG_STATIC void spi_master_dma_pre_tx_cb(spi_transaction_t *spi_trans) { /* SPI slave performance issue workaround */ while ((esp_timer_get_time() - last_tx_done_ts) < BLE_LOG_SPI_TRANS_ITVL_MIN_US) {}