S32 SDK
edma_driver.h File Reference
#include "device_registers.h"
#include "edma_hal.h"
#include "dmamux_hal.h"
#include "clock_manager.h"
#include "status.h"
#include <stddef.h>

Go to the source code of this file.

Data Structures

struct  edma_user_config_t
 The user configuration structure for the eDMA driver. More...
 
struct  edma_chn_state_t
 Data structure for the eDMA channel state. Implements : edma_chn_state_t_Class. More...
 
struct  edma_channel_config_t
 The user configuration structure for the an eDMA driver channel. More...
 
struct  edma_scatter_gather_list_t
 Data structure for configuring a discrete memory transfer. Implements : edma_scatter_gather_list_t_Class. More...
 
struct  edma_state_t
 Runtime state structure for the eDMA driver. More...
 
struct  edma_loop_transfer_config_t
 eDMA loop transfer configuration. More...
 
struct  edma_transfer_config_t
 eDMA transfer size configuration. More...
 
struct  edma_software_tcd_t
 eDMA TCD Implements : edma_software_tcd_t_Class More...
 

Macros

#define STCD_SIZE(number)    (((number) * 32U) - 1U)
 Macro for the memory size needed for the software TCD. More...
 
#define STCD_ADDR(address)    (((uint32_t)address + 31UL) & ~0x1FUL)
 
#define EDMA_ERR_LSB_MASK   1U
 Macro for accessing the least significant bit of the ERR register. More...
 

Typedefs

typedef void(* edma_callback_t) (void *parameter, edma_chn_status_t status)
 Definition for the eDMA channel callback function. More...
 

Enumerations

enum  edma_chn_status_t { EDMA_CHN_NORMAL = 0U, EDMA_CHN_IDLE, EDMA_CHN_ERROR }
 Channel status for eDMA channel. More...
 
enum  edma_transfer_type_t { EDMA_TRANSFER_PERIPH2MEM, EDMA_TRANSFER_MEM2PERIPH, EDMA_TRANSFER_MEM2MEM }
 A type for the DMA transfer. Implements : edma_transfer_type_t_Class. More...
 

Functions

eDMA peripheral driver module level functions
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. More...
 
status_t EDMA_DRV_Deinit (void)
 De-initializes the eDMA module. More...
 
eDMA peripheral driver channel management functions
status_t EDMA_DRV_ChannelInit (edma_chn_state_t *edmaChannelState, const edma_channel_config_t *edmaChannelConfig)
 Initializes an eDMA channel. More...
 
status_t EDMA_DRV_ReleaseChannel (uint8_t channel)
 Releases an eDMA channel. More...
 
eDMA peripheral driver transfer setup functions
void EDMA_DRV_PushConfigToReg (uint8_t channel, const edma_transfer_config_t *tcd)
 Copies the channel configuration to the TCD registers. More...
 
void EDMA_DRV_PushConfigToSTCD (const edma_transfer_config_t *config, edma_software_tcd_t *stcd)
 Copies the channel configuration to the software TCD structure. More...
 
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. More...
 
status_t EDMA_DRV_ConfigLoopTransfer (uint8_t channel, const edma_transfer_config_t *transferConfig)
 Configures the DMA transfer in loop mode. More...
 
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. More...
 
eDMA Peripheral driver channel operation functions
status_t EDMA_DRV_StartChannel (uint8_t channel)
 Starts an eDMA channel. More...
 
status_t EDMA_DRV_StopChannel (uint8_t channel)
 Stops the eDMA channel. More...
 
eDMA Peripheral callback and interrupt functions
status_t EDMA_DRV_InstallCallback (uint8_t channel, edma_callback_t callback, void *parameter)
 Registers the callback function and the parameter for eDMA channel. More...
 
eDMA Peripheral driver miscellaneous functions
edma_chn_status_t EDMA_DRV_GetChannelStatus (uint8_t channel)
 Gets the eDMA channel status. More...
 

Variables

DMA_Type *const g_edmaBase [DMA_INSTANCE_COUNT]
 Array for the eDMA module register base address. More...
 
DMAMUX_Type *const g_dmamuxBase [DMAMUX_INSTANCE_COUNT]
 Array for DMAMUX module register base address. More...
 
const IRQn_Type g_edmaIrqId [FEATURE_CHANNEL_INTERRUPT_LINES]
 Array for eDMA channel interrupt vector number. More...
 
const clock_names_t g_edmaClockNames [DMA_INSTANCE_COUNT]
 Array for eDMA clock sources. More...
 
const clock_names_t g_dmamuxClockNames [DMAMUX_INSTANCE_COUNT]
 
const IRQn_Type g_edmaErrIrqId [FEATURE_ERROR_INTERRUPT_LINES]
 Array for eDMA module's error interrupt vector number. More...