Skip to content

Commit 8f0584c

Browse files
committed
Merge branch 'refactor/adc_dma_memory_allocation_v5.3' into 'release/v5.3'
ADC & AES: use heap component API to allocate cached aligned DMA buffer (v5.3) See merge request espressif/esp-idf!31723
2 parents 02fb7ad + 3e3e1c7 commit 8f0584c

File tree

4 files changed

+7
-18
lines changed

4 files changed

+7
-18
lines changed

components/esp_adc/adc_continuous.c

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
#include "adc_continuous_internal.h"
3838
#include "esp_private/adc_dma.h"
3939
#include "adc_dma_internal.h"
40-
#include "esp_dma_utils.h"
4140
#if SOC_CACHE_INTERNAL_MEM_VIA_L1CACHE
4241
#include "esp_cache.h"
4342
#include "esp_private/esp_cache_private.h"
@@ -192,11 +191,7 @@ esp_err_t adc_continuous_new_handle(const adc_continuous_handle_cfg_t *hdl_confi
192191
}
193192

194193
//malloc internal buffer used by DMA
195-
esp_dma_mem_info_t dma_mem_info = {
196-
.extra_heap_caps = (MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA),
197-
.dma_alignment_bytes = 4,
198-
};
199-
esp_dma_capable_calloc(1, hdl_config->conv_frame_size * INTERNAL_BUF_NUM, &dma_mem_info, (void **)&adc_ctx->rx_dma_buf, NULL);
194+
adc_ctx->rx_dma_buf = heap_caps_calloc(INTERNAL_BUF_NUM, hdl_config->conv_frame_size, MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA | MALLOC_CAP_8BIT);
200195
if (!adc_ctx->rx_dma_buf) {
201196
ret = ESP_ERR_NO_MEM;
202197
goto cleanup;
@@ -205,7 +200,7 @@ esp_err_t adc_continuous_new_handle(const adc_continuous_handle_cfg_t *hdl_confi
205200
//malloc dma descriptor
206201
uint32_t dma_desc_num_per_frame = (hdl_config->conv_frame_size + DMA_DESCRIPTOR_BUFFER_MAX_SIZE_4B_ALIGNED - 1) / DMA_DESCRIPTOR_BUFFER_MAX_SIZE_4B_ALIGNED;
207202
uint32_t dma_desc_max_num = dma_desc_num_per_frame * INTERNAL_BUF_NUM;
208-
esp_dma_capable_calloc(1, (sizeof(dma_descriptor_t)) * dma_desc_max_num, &dma_mem_info, (void **)&adc_ctx->hal.rx_desc, &adc_ctx->adc_desc_size);
203+
adc_ctx->hal.rx_desc = heap_caps_aligned_calloc(ADC_DMA_DESC_ALIGN, dma_desc_max_num, sizeof(dma_descriptor_t), MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA | MALLOC_CAP_8BIT);
209204
if (!adc_ctx->hal.rx_desc) {
210205
ret = ESP_ERR_NO_MEM;
211206
goto cleanup;
@@ -550,12 +545,12 @@ esp_err_t adc_continuous_flush_pool(adc_continuous_handle_t handle)
550545
return ESP_OK;
551546
}
552547

553-
esp_err_t adc_continuous_io_to_channel(int io_num, adc_unit_t * const unit_id, adc_channel_t * const channel)
548+
esp_err_t adc_continuous_io_to_channel(int io_num, adc_unit_t *const unit_id, adc_channel_t *const channel)
554549
{
555550
return adc_io_to_channel(io_num, unit_id, channel);
556551
}
557552

558-
esp_err_t adc_continuous_channel_to_io(adc_unit_t unit_id, adc_channel_t channel, int * const io_num)
553+
esp_err_t adc_continuous_channel_to_io(adc_unit_t unit_id, adc_channel_t channel, int *const io_num)
559554
{
560555
return adc_channel_to_io(unit_id, channel, io_num);
561556
}

components/esp_adc/adc_dma_internal.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ typedef struct {
3232
intr_handle_t dma_intr_hdl;
3333
} adc_dma_t;
3434

35+
#define ADC_DMA_DESC_ALIGN 4
36+
3537
#ifdef __cplusplus
3638
}
3739
#endif

components/mbedtls/port/aes/dma/esp_aes_dma_core.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include "esp_attr.h"
99
#include "esp_cache.h"
1010
#include "esp_check.h"
11-
#include "esp_dma_utils.h"
1211
#include "esp_err.h"
1312
#include "esp_heap_caps.h"
1413
#include "esp_intr_alloc.h"
@@ -323,13 +322,7 @@ static inline void dma_desc_append(crypto_dma_desc_t **head, crypto_dma_desc_t *
323322

324323
static inline void *aes_dma_calloc(size_t num, size_t size, uint32_t caps, size_t *actual_size)
325324
{
326-
void *ptr = NULL;
327-
esp_dma_mem_info_t dma_mem_info = {
328-
.extra_heap_caps = caps,
329-
.dma_alignment_bytes = DMA_DESC_MEM_ALIGN_SIZE,
330-
};
331-
esp_dma_capable_calloc(num, size, &dma_mem_info, &ptr, actual_size);
332-
return ptr;
325+
return heap_caps_aligned_calloc(DMA_DESC_MEM_ALIGN_SIZE, num, size, caps | MALLOC_CAP_DMA | MALLOC_CAP_8BIT);
333326
}
334327

335328
static inline esp_err_t dma_desc_link(crypto_dma_desc_t *dmadesc, size_t crypto_dma_desc_num, size_t cache_line_size)

components/mbedtls/port/sha/dma/sha.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
#include <stdio.h>
3030
#include <sys/lock.h>
3131

32-
#include "esp_dma_utils.h"
3332
#include "esp_private/esp_crypto_lock_internal.h"
3433
#include "esp_private/esp_cache_private.h"
3534
#include "esp_log.h"

0 commit comments

Comments
 (0)