Lines Matching refs:dma

561 static esp_err_t i2s_destroy_dma_object(i2s_port_t i2s_num, i2s_dma_t **dma)  in i2s_destroy_dma_object()  argument
565 if (!(*dma)) { in i2s_destroy_dma_object()
569 i2s_delete_dma_buffer(i2s_num, (*dma)); in i2s_destroy_dma_object()
571 if ((*dma)->desc) { in i2s_destroy_dma_object()
572 free((*dma)->desc); in i2s_destroy_dma_object()
573 (*dma)->desc = NULL; in i2s_destroy_dma_object()
576 if ((*dma)->buf) { in i2s_destroy_dma_object()
577 free((*dma)->buf); in i2s_destroy_dma_object()
578 (*dma)->buf = NULL; in i2s_destroy_dma_object()
581 vSemaphoreDelete((*dma)->mux); in i2s_destroy_dma_object()
583 vQueueDelete((*dma)->queue); in i2s_destroy_dma_object()
585 free(*dma); in i2s_destroy_dma_object()
586 *dma = NULL; in i2s_destroy_dma_object()
591 static esp_err_t i2s_create_dma_object(i2s_port_t i2s_num, i2s_dma_t **dma) in i2s_create_dma_object() argument
593 ESP_RETURN_ON_FALSE(dma, ESP_ERR_INVALID_ARG, TAG, "DMA object secondary pointer is NULL"); in i2s_create_dma_object()
594 ESP_RETURN_ON_FALSE((*dma == NULL), ESP_ERR_INVALID_ARG, TAG, "DMA object has been created"); in i2s_create_dma_object()
597 *dma = (i2s_dma_t *) calloc(1, sizeof(i2s_dma_t)); in i2s_create_dma_object()
598 ESP_RETURN_ON_FALSE(*dma, ESP_ERR_NO_MEM, TAG, "DMA object allocate failed"); in i2s_create_dma_object()
600 (*dma)->buf = (char **)heap_caps_calloc(buf_cnt, sizeof(char *), MALLOC_CAP_DMA); in i2s_create_dma_object()
601 if (!(*dma)->buf) { in i2s_create_dma_object()
605 (*dma)->desc = (lldesc_t **)heap_caps_calloc(buf_cnt, sizeof(lldesc_t *), MALLOC_CAP_DMA); in i2s_create_dma_object()
606 if (!(*dma)->desc) { in i2s_create_dma_object()
610 (*dma)->queue = xQueueCreate(buf_cnt - 1, sizeof(char *)); in i2s_create_dma_object()
611 if (!(*dma)->queue) { in i2s_create_dma_object()
614 (*dma)->mux = xSemaphoreCreateMutex(); in i2s_create_dma_object()
615 if (!(*dma)->mux) { in i2s_create_dma_object()
623 i2s_destroy_dma_object(i2s_num, dma); in i2s_create_dma_object()