Przeglądaj źródła

Merge branch 'bugfix/sdio_slave_dma_desc_int_v4.2' into 'release/v4.2'

sdio_slave: Fixed the issue that DMA descriptors allocated to non-DMA capable area (v4.2)

See merge request espressif/esp-idf!17139
Zim Kalinowski 4 lat temu
rodzic
commit
15a20d8100
1 zmienionych plików z 2 dodań i 2 usunięć
  1. 2 2
      components/driver/sdio_slave.c

+ 2 - 2
components/driver/sdio_slave.c

@@ -240,7 +240,7 @@ static esp_err_t init_context(const sdio_slave_config_t *config)
     sdio_ringbuf_t *buf = &(context.hal->send_desc_queue);
     //one item is not used.
     buf->size = SDIO_SLAVE_SEND_DESC_SIZE * (config->send_queue_size+1);
-    buf->data = (uint8_t*)heap_caps_malloc(buf->size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
+    buf->data = (uint8_t*)heap_caps_malloc(buf->size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT | MALLOC_CAP_DMA);
     if (buf->data == NULL) goto no_mem;
 
     sdio_slave_hal_init(context.hal);
@@ -694,7 +694,7 @@ sdio_slave_buf_handle_t sdio_slave_recv_register_buf(uint8_t *start)
 {
     SDIO_SLAVE_CHECK(esp_ptr_dma_capable(start) && (uint32_t)start%4==0,
         "buffer to register should be DMA capable and 32-bit aligned", NULL);
-    recv_desc_t *desc = (recv_desc_t*)heap_caps_malloc(sizeof(recv_desc_t), MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
+    recv_desc_t *desc = (recv_desc_t*)heap_caps_malloc(sizeof(recv_desc_t), MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT | MALLOC_CAP_DMA);
     if (desc == NULL) {
         SDIO_SLAVE_LOGE("cannot allocate lldesc for new buffer");
         return NULL;