Microchip® Advanced Software Framework

dma_descriptor_config Struct Reference

DMA transfer descriptor configuration.

When the source or destination address increment is enabled, the addresses stored into the configuration structure must correspond to the end of the transfer.

#include <dma.h>

Data Fields

enum dma_beat_size beat_size
 Beat size is configurable as 8-bit, 16-bit, or 32-bit. More...
 
enum dma_block_action block_action
 Action taken when a block transfer is completed. More...
 
uint16_t block_transfer_count
 It is the number of beats in a block. More...
 
bool descriptor_valid
 Descriptor valid flag used to identify whether a descriptor is valid or not. More...
 
uint32_t destination_address
 Transfer destination address. More...
 
bool dst_increment_enable
 Used for enabling the destination address increment. More...
 
enum dma_event_output_selection event_output_selection
 This is used to generate an event on specific transfer action in a channel. More...
 
uint32_t next_descriptor_address
 Set to zero for static descriptors. More...
 
uint32_t source_address
 Transfer source address. More...
 
bool src_increment_enable
 Used for enabling the source address increment. More...
 
enum dma_step_selection step_selection
 This bit selects whether the source or destination address is using the step size settings. More...
 
enum dma_address_increment_stepsize step_size
 The step size for source/destination address increment. More...
 

enum dma_beat_size dma_descriptor_config::beat_size

Beat size is configurable as 8-bit, 16-bit, or 32-bit.

Referenced by configure_dma_aes_rd(), configure_dma_aes_wr(), dma_descriptor_create(), and dma_descriptor_get_config_defaults().

enum dma_block_action dma_descriptor_config::block_action

Action taken when a block transfer is completed.

Referenced by dma_descriptor_create(), and dma_descriptor_get_config_defaults().

uint16_t dma_descriptor_config::block_transfer_count

It is the number of beats in a block.

This count value is decremented by one after each beat data transfer.

Referenced by configure_dma_aes_rd(), configure_dma_aes_wr(), dma_descriptor_create(), and dma_descriptor_get_config_defaults().

bool dma_descriptor_config::descriptor_valid

Descriptor valid flag used to identify whether a descriptor is valid or not.

Referenced by dma_descriptor_create(), and dma_descriptor_get_config_defaults().

uint32_t dma_descriptor_config::destination_address
bool dma_descriptor_config::dst_increment_enable

Used for enabling the destination address increment.

Referenced by configure_dma_aes_wr(), dma_descriptor_create(), and dma_descriptor_get_config_defaults().

enum dma_event_output_selection dma_descriptor_config::event_output_selection

This is used to generate an event on specific transfer action in a channel.

Supported only in four lower channels.

Referenced by dma_descriptor_create(), and dma_descriptor_get_config_defaults().

uint32_t dma_descriptor_config::next_descriptor_address

Set to zero for static descriptors.

This must have a valid memory address for linked descriptors.

Referenced by dma_descriptor_create(), and dma_descriptor_get_config_defaults().

uint32_t dma_descriptor_config::source_address
bool dma_descriptor_config::src_increment_enable

Used for enabling the source address increment.

Referenced by configure_dma_aes_rd(), dma_descriptor_create(), and dma_descriptor_get_config_defaults().

enum dma_step_selection dma_descriptor_config::step_selection

This bit selects whether the source or destination address is using the step size settings.

Referenced by dma_descriptor_create(), and dma_descriptor_get_config_defaults().

enum dma_address_increment_stepsize dma_descriptor_config::step_size

The step size for source/destination address increment.

The next address is calculated as next_addr = addr + (2^step_size * beat size).

Referenced by dma_descriptor_create(), and dma_descriptor_get_config_defaults().