83 lines
2.1 KiB
C
83 lines
2.1 KiB
C
/*
|
|
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#pragma once
|
|
#include <stddef.h>
|
|
#include "stdbool.h"
|
|
#include "hal/spi_types.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if !SOC_GDMA_SUPPORTED
|
|
/**
|
|
* @brief Enumeration of SPI_DMA channel direction
|
|
*/
|
|
typedef enum {
|
|
DMA_CHANNEL_DIRECTION_TX, /*!< DMA channel direction: TX */
|
|
DMA_CHANNEL_DIRECTION_RX, /*!< DMA channel direction: RX */
|
|
} spi_dma_chan_dir_t;
|
|
|
|
typedef struct {
|
|
spi_host_device_t host_id;
|
|
spi_dma_chan_dir_t dir;
|
|
int chan_id;
|
|
} spi_dma_chan_handle_t;
|
|
|
|
/**
|
|
* Enable/Disable data/desc burst for spi_dma channel
|
|
*
|
|
* @param chan_handle Context of the spi_dma channel.
|
|
* @param data_burst enable or disable data burst
|
|
* @param desc_burst enable or disable desc burst
|
|
*/
|
|
void spi_dma_enable_burst(spi_dma_chan_handle_t chan_handle, bool data_burst, bool desc_burst);
|
|
|
|
/**
|
|
* Get the alignment constraints for DMA
|
|
*
|
|
* @param chan_handle Context of the spi_dma channel.
|
|
* @param internal_size The alignment size for internal memory.
|
|
* @param external_size The alignment size for external memory.
|
|
*/
|
|
void spi_dma_get_alignment_constraints(spi_dma_chan_handle_t chan_handle, size_t *internal_size, size_t *external_size);
|
|
|
|
/**
|
|
* Re-trigger a HW pre-load to pick up appended linked descriptor
|
|
*
|
|
* @param chan_handle Context of the spi_dma channel.
|
|
*/
|
|
void spi_dma_append(spi_dma_chan_handle_t chan_handle);
|
|
|
|
/**
|
|
* Reset dma channel for spi_dma
|
|
*
|
|
* @param chan_handle Context of the spi_dma channel.
|
|
*/
|
|
void spi_dma_reset(spi_dma_chan_handle_t chan_handle);
|
|
|
|
/**
|
|
* Start dma channel for spi_dma
|
|
*
|
|
* @param chan_handle Context of the spi_dma channel.
|
|
* @param addr Addr of linked dma descriptor to mount
|
|
*/
|
|
void spi_dma_start(spi_dma_chan_handle_t chan_handle, void *addr);
|
|
|
|
/**
|
|
* Get EOF descriptor for a dma channel
|
|
*
|
|
* @param chan_handle Context of the spi_dma channel.
|
|
*/
|
|
uint32_t spi_dma_get_eof_desc(spi_dma_chan_handle_t chan_handle);
|
|
|
|
#endif //!SOC_GDMA_SUPPORTED
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|