dma: add support for MCUX EDMA
1. expand PERIPHERAL_TO_PERIPHERAL 2. add slot size to 128 as i.MX-rt has 127 slot 3. add link_channel member in dma_conf which is used to support chain channel Signed-off-by: Hake Huang <hake.huang@oss.nxp.com>
This commit is contained in:
parent
abce94bb98
commit
77c4015082
1 changed files with 21 additions and 14 deletions
|
@ -31,7 +31,8 @@ extern "C" {
|
||||||
enum dma_channel_direction {
|
enum dma_channel_direction {
|
||||||
MEMORY_TO_MEMORY = 0x0,
|
MEMORY_TO_MEMORY = 0x0,
|
||||||
MEMORY_TO_PERIPHERAL,
|
MEMORY_TO_PERIPHERAL,
|
||||||
PERIPHERAL_TO_MEMORY
|
PERIPHERAL_TO_MEMORY,
|
||||||
|
PERIPHERAL_TO_PERIPHERAL /*only supported in NXP EDMA*/
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Valid values for @a source_addr_adj and @a dest_addr_adj */
|
/** Valid values for @a source_addr_adj and @a dest_addr_adj */
|
||||||
|
@ -98,25 +99,30 @@ struct dma_block_config {
|
||||||
/**
|
/**
|
||||||
* @brief DMA configuration structure.
|
* @brief DMA configuration structure.
|
||||||
*
|
*
|
||||||
* dma_slot [ 0 : 5 ] - which peripheral and direction
|
* dma_slot [ 0 : 6 ] - which peripheral and direction
|
||||||
* (HW specific)
|
* (HW specific)
|
||||||
* channel_direction [ 6 : 8 ] - 000-memory to memory, 001-memory to
|
* channel_direction [ 7 : 9 ] - 000-memory to memory,
|
||||||
* peripheral, 010-peripheral to memory,
|
* 001-memory to peripheral,
|
||||||
|
* 010-peripheral to memory,
|
||||||
|
* 011-peripheral to peripheral,
|
||||||
* ...
|
* ...
|
||||||
* complete_callback_en [ 9 ] - 0-callback invoked at completion only
|
* complete_callback_en [ 10 ] - 0-callback invoked at completion only
|
||||||
* 1-callback invoked at completion of
|
* 1-callback invoked at completion of
|
||||||
* each block
|
* each block
|
||||||
* error_callback_en [ 10 ] - 0-error callback enabled
|
* error_callback_en [ 11 ] - 0-error callback enabled
|
||||||
* 1-error callback disabled
|
* 1-error callback disabled
|
||||||
* source_handshake [ 11 ] - 0-HW, 1-SW
|
* source_handshake [ 12 ] - 0-HW, 1-SW
|
||||||
* dest_handshake [ 12 ] - 0-HW, 1-SW
|
* dest_handshake [ 13 ] - 0-HW, 1-SW
|
||||||
* channel_priority [ 13 : 16 ] - DMA channel priority
|
* channel_priority [ 14 : 17 ] - DMA channel priority
|
||||||
* source_chaining_en [ 17 ] - enable/disable source block chaining
|
* source_chaining_en [ 18 ] - enable/disable source block chaining
|
||||||
* 0-disable, 1-enable
|
* 0-disable, 1-enable
|
||||||
* dest_chaining_en [ 18 ] - enable/disable destination block
|
* dest_chaining_en [ 19 ] - enable/disable destination block
|
||||||
* chaining.
|
* chaining.
|
||||||
* 0-disable, 1-enable
|
* 0-disable, 1-enable
|
||||||
* reserved [ 19 : 31 ]
|
* linked_channel [ 20 : 26 ] - after channel count exhaust will
|
||||||
|
* initiate a channel service request
|
||||||
|
* at this channel
|
||||||
|
* reserved [ 27 : 31 ]
|
||||||
*
|
*
|
||||||
* source_data_size [ 0 : 15 ] - width of source data (in bytes)
|
* source_data_size [ 0 : 15 ] - width of source data (in bytes)
|
||||||
* dest_data_size [ 16 : 31 ] - width of dest data (in bytes)
|
* dest_data_size [ 16 : 31 ] - width of dest data (in bytes)
|
||||||
|
@ -133,7 +139,7 @@ struct dma_block_config {
|
||||||
* (error_code: zero-transfer success, non zero-error happens).
|
* (error_code: zero-transfer success, non zero-error happens).
|
||||||
*/
|
*/
|
||||||
struct dma_config {
|
struct dma_config {
|
||||||
uint32_t dma_slot : 6;
|
uint32_t dma_slot : 7;
|
||||||
uint32_t channel_direction : 3;
|
uint32_t channel_direction : 3;
|
||||||
uint32_t complete_callback_en : 1;
|
uint32_t complete_callback_en : 1;
|
||||||
uint32_t error_callback_en : 1;
|
uint32_t error_callback_en : 1;
|
||||||
|
@ -142,7 +148,8 @@ struct dma_config {
|
||||||
uint32_t channel_priority : 4;
|
uint32_t channel_priority : 4;
|
||||||
uint32_t source_chaining_en : 1;
|
uint32_t source_chaining_en : 1;
|
||||||
uint32_t dest_chaining_en : 1;
|
uint32_t dest_chaining_en : 1;
|
||||||
uint32_t reserved : 13;
|
uint32_t linked_channel : 7;
|
||||||
|
uint32_t reserved : 5;
|
||||||
uint32_t source_data_size : 16;
|
uint32_t source_data_size : 16;
|
||||||
uint32_t dest_data_size : 16;
|
uint32_t dest_data_size : 16;
|
||||||
uint32_t source_burst_length : 16;
|
uint32_t source_burst_length : 16;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue