From 150418fb5dc2f8a2013e97695c8a1d5e357dec2a Mon Sep 17 00:00:00 2001 From: Laukik Hase Date: Thu, 27 Nov 2025 16:13:26 +0530 Subject: [PATCH] feat(esp_tee): Enable GDMA burst mode for AES/SHA operations Co-authored-by: Harshal Patil --- .../mbedtls/esp_tee/esp_tee_crypto_shared_gdma.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/components/mbedtls/esp_tee/esp_tee_crypto_shared_gdma.c b/components/mbedtls/esp_tee/esp_tee_crypto_shared_gdma.c index 16ed38ba25..61136196d9 100644 --- a/components/mbedtls/esp_tee/esp_tee_crypto_shared_gdma.c +++ b/components/mbedtls/esp_tee/esp_tee_crypto_shared_gdma.c @@ -6,6 +6,7 @@ #include #include "esp_err.h" +#include "soc/soc_caps.h" #include "mbedtls/aes.h" #include "esp_crypto_dma.h" @@ -49,6 +50,10 @@ #define dma_ll_rx_stop DMA_LL_FUNC(rx_stop) #define dma_ll_tx_set_priority DMA_LL_FUNC(tx_set_priority) #define dma_ll_rx_set_priority DMA_LL_FUNC(rx_set_priority) +#if SOC_AHB_GDMA_VERSION == 2 +#define dma_ll_tx_set_burst_size DMA_LL_FUNC(tx_set_burst_size) +#define dma_ll_rx_set_burst_size DMA_LL_FUNC(rx_set_burst_size) +#endif /* * NOTE: [ESP-TEE] This is a low-level (LL), non-OS version of @@ -66,10 +71,16 @@ static void crypto_shared_gdma_init(void) dma_ll_force_enable_reg_clock(&DMA_DEV, true); // setting the transfer ability +#if SOC_AHB_GDMA_VERSION == 2 + dma_ll_rx_enable_data_burst(&DMA_DEV, TEE_CRYPTO_GDMA_CH, true); + dma_ll_tx_set_burst_size(&DMA_DEV, TEE_CRYPTO_GDMA_CH, 16); + dma_ll_tx_set_burst_size(&DMA_DEV, TEE_CRYPTO_GDMA_CH, 16); +#else + dma_ll_rx_enable_data_burst(&DMA_DEV, TEE_CRYPTO_GDMA_CH, false); +#endif + dma_ll_tx_enable_data_burst(&DMA_DEV, TEE_CRYPTO_GDMA_CH, true); dma_ll_tx_enable_descriptor_burst(&DMA_DEV, TEE_CRYPTO_GDMA_CH, true); - - dma_ll_rx_enable_data_burst(&DMA_DEV, TEE_CRYPTO_GDMA_CH, false); dma_ll_rx_enable_descriptor_burst(&DMA_DEV, TEE_CRYPTO_GDMA_CH, true); dma_ll_tx_reset_channel(&DMA_DEV, TEE_CRYPTO_GDMA_CH);