44 #if !defined(EDMA_DRIVER_H)
73 #if defined FEATURE_EDMA_HAS_ERROR_IRQ
89 #define STCD_SIZE(number) (((number) * 32U) - 1U)
90 #define STCD_ADDR(address) (((uint32_t)address + 31UL) & ~0x1FUL)
98 #define EDMA_ERR_LSB_MASK 1U
109 #if FEATURE_EDMA_CHANNEL_GROUP_COUNT > 0x1U
111 edma_group_priority_t groupPriority;
277 #if defined(__cplusplus)
417 uint32_t srcAddr, uint32_t destAddr,
545 #if defined(__cplusplus)
void EDMA_DRV_PushConfigToSTCD(const edma_transfer_config_t *config, edma_software_tcd_t *stcd)
Copies the channel configuration to the software TCD structure.
eDMA TCD Implements : edma_software_tcd_t_Class
uint32_t minorByteTransferCount
#define DMAMUX_INSTANCE_COUNT
#define DMA_INSTANCE_COUNT
DMAMUX_Type *const g_dmamuxBase[DMAMUX_INSTANCE_COUNT]
Array for DMAMUX module register base address.
uint8_t minorLoopChnLinkNumber
The user configuration structure for the eDMA driver.
edma_transfer_type_t
A type for the DMA transfer. Implements : edma_transfer_type_t_Class.
The user configuration structure for the an eDMA driver channel.
#define FEATURE_EDMA_MODULE_CHANNELS
status_t EDMA_DRV_ReleaseChannel(uint8_t channel)
Releases an eDMA channel.
status_t EDMA_DRV_StopChannel(uint8_t channel)
Stops the eDMA channel.
IRQn_Type
Defines the Interrupt Numbers definitions.
uint8_t majorLoopChnLinkNumber
status_t EDMA_DRV_Deinit(void)
De-initializes the eDMA module.
status_t EDMA_DRV_Init(edma_state_t *edmaState, const edma_user_config_t *userConfig, edma_chn_state_t *const chnStateArray[], const edma_channel_config_t *const chnConfigArray[], uint8_t chnCount)
Initializes the eDMA module.
edma_channel_priority_t priority
const clock_names_t g_edmaClockNames[DMA_INSTANCE_COUNT]
Array for eDMA clock sources.
dma_request_source_t
Structure for the DMA hardware request.
const IRQn_Type g_edmaIrqId[FEATURE_CHANNEL_INTERRUPT_LINES]
Array for eDMA channel interrupt vector number.
uint32_t scatterGatherNextDescAddr
status_t EDMA_DRV_ConfigLoopTransfer(uint8_t channel, const edma_transfer_config_t *transferConfig)
Configures the DMA transfer in loop mode.
status_t EDMA_DRV_ChannelInit(edma_chn_state_t *edmaChannelState, const edma_channel_config_t *edmaChannelConfig)
Initializes an eDMA channel.
Runtime state structure for the eDMA driver.
edma_chn_status_t
Channel status for eDMA channel.
edma_transfer_size_t destTransferSize
bool majorLoopChnLinkEnable
int32_t srcLastAddrAdjust
edma_arbitration_algorithm_t
eDMA channel arbitration algorithm used for selection among channels. Implements : edma_arbitration_a...
void EDMA_DRV_PushConfigToReg(uint8_t channel, const edma_transfer_config_t *tcd)
Copies the channel configuration to the TCD registers.
edma_arbitration_algorithm_t chnArbitration
uint32_t majorLoopIterationCount
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
status_t EDMA_DRV_ConfigScatterGatherTransfer(uint8_t channel, edma_software_tcd_t *stcd, edma_transfer_size_t transferSize, uint32_t bytesOnEachRequest, const edma_scatter_gather_list_t *srcList, const edma_scatter_gather_list_t *destList, uint8_t tcdCount)
Configures the DMA transfer in a scatter-gather mode.
edma_transfer_size_t srcTransferSize
Data structure for configuring a discrete memory transfer. Implements : edma_scatter_gather_list_t_Cl...
#define FEATURE_CHANNEL_INTERRUPT_LINES
volatile edma_chn_status_t status
edma_transfer_size_t
eDMA transfer configuration Implements : edma_transfer_size_t_Class
edma_chn_status_t EDMA_DRV_GetChannelStatus(uint8_t channel)
Gets the eDMA channel status.
edma_transfer_type_t type
status_t EDMA_DRV_StartChannel(uint8_t channel)
Starts an eDMA channel.
const IRQn_Type g_edmaErrIrqId[FEATURE_ERROR_INTERRUPT_LINES]
Array for eDMA module's error interrupt vector number.
clock_names_t
Clock names.
edma_modulo_t
eDMA modulo configuration Implements : edma_modulo_t_Class
#define FEATURE_ERROR_INTERRUPT_LINES
DMA_Type *const g_edmaBase[DMA_INSTANCE_COUNT]
Array for the eDMA module register base address.
int32_t destLastAddrAdjust
edma_channel_priority_t
eDMA channel priority setting Implements : edma_channel_priority_t_Class
bool minorLoopChnLinkEnable
void(* edma_callback_t)(void *parameter, edma_chn_status_t status)
Definition for the eDMA channel callback function.
dma_request_source_t source
status_t EDMA_DRV_ConfigSingleBlockTransfer(uint8_t channel, edma_transfer_type_t type, uint32_t srcAddr, uint32_t destAddr, edma_transfer_size_t transferSize, uint32_t dataBufferSize)
Configures a simple single block data transfer with DMA.
eDMA loop transfer configuration.
eDMA transfer size configuration.
edma_loop_transfer_config_t * loopTransferConfig
status_t EDMA_DRV_InstallCallback(uint8_t channel, edma_callback_t callback, void *parameter)
Registers the callback function and the parameter for eDMA channel.
const clock_names_t g_dmamuxClockNames[DMAMUX_INSTANCE_COUNT]
Data structure for the eDMA channel state. Implements : edma_chn_state_t_Class.