31#include "dma_registers.h"
32#include "syna_device.h"
36#define DMA_DESCRIPTOR_BIT_COUNT 32
1207 uint32_t* remaining);
dma_transfer_mode_en
DMA transfer modes.
Definition dma.h:201
dma_state_en
DMA instance state indicators.
Definition dma.h:193
dma_interrupt_flags_en
DMA interrupt flags.
Definition dma.h:397
dma_trigger_target_en
DMA trigger targets.
Definition dma.h:336
dma_security_en
DMA security attributes.
Definition dma.h:233
dma_status_en
DMA error codes.
Definition dma.h:407
dma_trigger_mode_en
DMA software trigger modes (maps to trigger mode field in hardware)
Definition dma.h:462
dma_burst_size_en
DMA burst lengths (maps to hardware MAXBURSTLEN field)
Definition dma.h:277
dma_reg_reload_type_en
DMA register reload types (maps to hardware AUTOCFG register)
Definition dma.h:322
dma_transfer_options_en
DMA transfer options for simple API.
Definition dma.h:434
dma_privilege_en
DMA privilege attributes.
Definition dma.h:241
dma_fifo_depth_en
DMA FIFO depths (extensible for future hardware)
Definition dma.h:288
dma_sw_trigger_type_en
DMA software trigger types (maps to hardware CMD register fields)
Definition dma.h:364
dma_transfer_type_en
DMA transfer types.
Definition dma.h:444
dma_operation_type_en
DMA operation types (maps to hardware XTYPE/YTYPE fields)
Definition dma.h:223
dma_donetype_en
DMA Done Types.
Definition dma.h:474
dma_status_flags_en
DMA status flags (maps to hardware CH_STATUS register)
Definition dma.h:384
dma_unit_size_en
DMA transfer unit sizes (maps to hardware TRANSIZE field)
Definition dma.h:255
dma_trigger_type_en
DMA trigger types.
Definition dma.h:374
@ DMA_TRANSFER_MODE_2D
Definition dma.h:203
@ DMA_TRANSFER_MODE_1D
Definition dma.h:202
@ DMA_INSTANCE_NOT_INITIALIZED
Definition dma.h:195
@ DMA_INSTANCE_INITIALIZED
Definition dma.h:194
@ DMA_INT_DISABLED
Definition dma.h:400
@ DMA_INT_ERROR
Definition dma.h:399
@ DMA_INT_STOPPED
Definition dma.h:401
@ DMA_INT_DONE
Definition dma.h:398
@ DMA_TRIGGER_SOURCE
Definition dma.h:337
@ DMA_TRIGGER_DEST
Definition dma.h:338
@ DMA_SECURITY_SECURE
Definition dma.h:234
@ DMA_SECURITY_NON_SECURE
Definition dma.h:235
@ DMA_ERROR_BURST_MISMATCH
Definition dma.h:418
@ DMA_ERROR_CHANNEL_BUSY
Definition dma.h:413
@ DMA_ERROR_MEMORY_ALLOC
Definition dma.h:427
@ DMA_ERROR_INVALID_CHANNEL
Definition dma.h:411
@ DMA_ERROR_SEMAPHORE_ALLOC
Definition dma.h:426
@ DMA_ERROR_INVALID_SIZE
Definition dma.h:417
@ DMA_ERROR_2D_NOT_SUPPORTED
Definition dma.h:421
@ DMA_ERROR_ALIGNMENT
Definition dma.h:419
@ DMA_OK
Definition dma.h:409
@ DMA_ERROR_TRANSFER_FAIL
Definition dma.h:428
@ DMA_ERROR_TEMPLATE_NOT_SUPPORTED
Definition dma.h:420
@ DMA_ERROR_HARDWARE_ERROR
Definition dma.h:415
@ DMA_ERROR_INVALID_PARAMETER
Definition dma.h:423
@ DMA_ERROR_TRIGGER_CONFLICT
Definition dma.h:422
@ DMA_ERROR_NO_CHANNELS
Definition dma.h:414
@ DMA_ERROR_INVALID_CONFIG
Definition dma.h:412
@ DMA_ERROR_ALREADY_INITIALIZED
Definition dma.h:424
@ DMA_ERROR_INVALID_ADDRESS
Definition dma.h:416
@ DMA_ERROR_INVALID_INSTANCE
Definition dma.h:410
@ DMA_ERROR_NOT_INITIALIZED
Definition dma.h:425
@ DMA_TRIG_MODE_INTERNAL
Definition dma.h:467
@ DMA_TRIG_MODE_FLOW
Definition dma.h:466
@ DMA_TRIG_MODE_COMMAND
Definition dma.h:464
@ DMA_TRIG_MODE_RESERVED
Definition dma.h:465
@ DMA_BURST_SIZE_4
Definition dma.h:280
@ DMA_BURST_SIZE_1
Definition dma.h:278
@ DMA_BURST_SIZE_2
Definition dma.h:279
@ DMA_BURST_SIZE_8
Definition dma.h:281
@ DMA_BURST_SIZE_16
Definition dma.h:282
@ DMA_REG_RELOAD_SRC_ADDR_AND_SIZES
Definition dma.h:326
@ DMA_REG_RELOAD_DISABLED
Definition dma.h:323
@ DMA_REG_RELOAD_SIZE_ONLY
Definition dma.h:324
@ DMA_REG_RELOAD_ALL_ADDR_AND_SIZES
Definition dma.h:329
@ DMA_REG_RELOAD_DEST_ADDR_AND_SIZES
Definition dma.h:327
@ DMA_OPTION_PRIVILEGED
Definition dma.h:438
@ DMA_OPTION_HIGH_PRIORITY
Definition dma.h:436
@ DMA_OPTION_SECURE
Definition dma.h:437
@ DMA_OPTION_NONE
Definition dma.h:435
@ DMA_PRIVILEGE_UNPRIVILEGED
Definition dma.h:243
@ DMA_PRIVILEGE_PRIVILEGED
Definition dma.h:242
@ DMA_FIFO_DEPTH_8
Definition dma.h:292
@ DMA_FIFO_DEPTH_2
Definition dma.h:290
@ DMA_FIFO_DEPTH_1
Definition dma.h:289
@ DMA_FIFO_DEPTH_16
Definition dma.h:293
@ DMA_FIFO_DEPTH_32
Definition dma.h:294
@ DMA_CHANNEL_FIFO_DEPTH_ANY
Definition dma.h:297
@ DMA_FIFO_DEPTH_4
Definition dma.h:291
@ DMA_FIFO_DEPTH_128
Definition dma.h:296
@ DMA_FIFO_DEPTH_64
Definition dma.h:295
@ DMA_SW_TRIG_LAST_SINGLE
Definition dma.h:366
@ DMA_SW_TRIG_SINGLE
Definition dma.h:365
@ DMA_SW_TRIG_LAST_BLOCK
Definition dma.h:368
@ DMA_SW_TRIG_BLOCK
Definition dma.h:367
@ DMA_TRANSFER_TYPE_STATIC
Definition dma.h:448
@ DMA_TRANSFER_TYPE_MEM2PERIPH
Definition dma.h:447
@ DMA_TRANSFER_TYPE_PERIPH2MEM
Definition dma.h:446
@ DMA_TRANSFER_TYPE_MEM2MEM
Definition dma.h:445
@ DMA_OP_FILL
Definition dma.h:227
@ DMA_OP_DISABLE
Definition dma.h:224
@ DMA_OP_WRAP
Definition dma.h:226
@ DMA_OP_CONTINUE
Definition dma.h:225
@ DMA_DONE_TYPE_AUTO_RESTART
Definition dma.h:477
@ DMA_DONE_TYPE_NONE
Definition dma.h:475
@ DMA_DONE_TYPE_DEFAULT
Definition dma.h:476
@ DMA_STATUS_STOPPED
Definition dma.h:388
@ DMA_STATUS_WAITING
Definition dma.h:391
@ DMA_STATUS_DISABLED
Definition dma.h:387
@ DMA_STATUS_PAUSED
Definition dma.h:389
@ DMA_STATUS_ERROR
Definition dma.h:386
@ DMA_STATUS_BUSY
Definition dma.h:390
@ DMA_STATUS_DONE
Definition dma.h:385
@ DMA_UNIT_SIZE_2BYTES
Definition dma.h:257
@ DMA_UNIT_SIZE_16BYTES
Definition dma.h:260
@ DMA_UNIT_SIZE_1BYTE
Definition dma.h:256
@ DMA_UNIT_SIZE_4BYTES
Definition dma.h:258
@ DMA_UNIT_SIZE_8BYTES
Definition dma.h:259
@ DMA_TRIG_INTERNAL_REQ
Definition dma.h:378
@ DMA_TRIG_HW_REQ
Definition dma.h:377
@ DMA_TRIG_RESERVED
Definition dma.h:376
@ DMA_TRIG_SW_REQ
Definition dma.h:375
dma_status_en dma_create_descriptor(dma_instance_en instance, uint32_t channel, const dma_channel_config_t *config, dma_descriptor_handle_t *descriptor_out)
dma_status_en dma_prepare_transfer(dma_instance_en instance, uint32_t channel, dma_channel_config_t *config)
dma_status_en dma_sw_trig(dma_instance_en instance, uint32_t channel, dma_trigger_target_en trigger_target)
dma_status_en dma_deinit(dma_instance_en instance)
dma_status_en dma_link_descriptors(dma_descriptor_handle_t first_desc, dma_descriptor_handle_t second_desc)
dma_status_en dma_start_descriptor_chain(dma_instance_en instance, uint32_t channel, dma_descriptor_handle_t *first_desc)
dma_status_en dma_get_status(dma_instance_en instance, uint32_t channel, uint32_t *status)
dma_status_en dma_abort_transfer(dma_instance_en instance, uint32_t channel)
dma_status_en dma_free_descriptor(dma_descriptor_handle_t descriptor)
dma_status_en dma_init(dma_instance_en instance)
dma_status_en dma_resume_transfer(dma_instance_en instance, uint32_t channel)
dma_status_en dma_channel_request(dma_instance_en instance, uint32_t *channel, dma_channel_attr_t *attr)
dma_status_en dma_free_channel(dma_instance_en instance, uint32_t channel)
dma_status_en dma_start_transfer(dma_instance_en instance, uint32_t channel)
dma_status_en dma_disable_ints(dma_instance_en instance, uint32_t channel, uint32_t mask)
dma_status_en dma_clear_status(dma_instance_en instance, uint32_t channel, uint32_t mask)
dma_status_en dma_stop_transfer(dma_instance_en instance, uint32_t channel)
dma_status_en dma_enable_ints(dma_instance_en instance, uint32_t channel, uint32_t mask)
dma_status_en dma_get_remaining_bytes(dma_instance_en instance, uint32_t channel, uint32_t *remaining)
dma_status_en dma_sw_trig_config(dma_instance_en instance, uint32_t channel, const dma_sw_trigger_config_t *config)
dma_status_en dma_get_error(dma_instance_en instance, uint32_t channel, uint32_t *error)
dma_status_en dma_request_specific_channel(dma_instance_en instance, uint32_t channel)
dma_status_en dma_pause_transfer(dma_instance_en instance, uint32_t channel)
dma_status_en dma_channel_is_active(dma_instance_en instance, uint32_t channel, bool *active)
const dma_channel_config_t DMA_CONFIG_MEMORY_COPY
Basic memory-to-memory copy.
const dma_channel_config_t DMA_CONFIG_PERIPHERAL_TO_MEMORY
Peripheral-to-memory transfer.
const dma_channel_config_t DMA_CONFIG_MEMORY_TO_PERIPHERAL
Memory-to-peripheral transfer.
const dma_channel_config_t DMA_CONFIG_2D_IMAGE_COPY
2D image/buffer copy
void(* dma_event_callback_t)(dma_instance_en instance, uint32_t channel, uint32_t event, void *user_data)
DMA event callback function type.
Definition dma.h:165
uint8_t dma_peripheral_trigger_t
SOC-agnostic DMA peripheral trigger identifier.
Definition dma.h:150
uint32_t * dma_descriptor_handle_t
Handle to a DMA descriptor.
Definition dma.h:180
DMA 1D transfer configuration.
Definition dma.h:582
uint32_t dest_addr
Definition dma.h:586
int32_t src_x_increment
Definition dma.h:594
uint32_t transfer_size
Definition dma.h:588
uint32_t link_addr
Definition dma.h:601
uint32_t src_addr
Definition dma.h:585
dma_burst_size_en src_burst_size
Definition dma.h:591
dma_template_config_t template_config
Definition dma.h:599
int32_t dest_x_increment
Definition dma.h:595
dma_operation_type_en x_type
Definition dma.h:583
dma_unit_size_en unit_size
Definition dma.h:589
dma_burst_size_en dest_burst_size
Definition dma.h:592
uint32_t fill_value
Definition dma.h:597
DMA 2D transfer configuration.
Definition dma.h:607
uint32_t src_y_size
Definition dma.h:618
dma_burst_size_en src_burst_size
Definition dma.h:622
dma_operation_type_en y_type
Definition dma.h:609
uint32_t fill_value
Definition dma.h:630
int32_t src_y_stride
Definition dma.h:627
dma_unit_size_en unit_size
Definition dma.h:621
uint32_t dest_x_size
Definition dma.h:617
int32_t dest_y_stride
Definition dma.h:628
int32_t src_x_increment
Definition dma.h:625
uint32_t src_addr
Definition dma.h:612
dma_burst_size_en dest_burst_size
Definition dma.h:623
uint32_t dest_addr
Definition dma.h:613
uint32_t link_addr
Definition dma.h:632
uint32_t src_x_size
Definition dma.h:616
dma_operation_type_en x_type
Definition dma.h:608
uint32_t dest_y_size
Definition dma.h:619
int32_t dest_x_increment
Definition dma.h:626
DMA auto-restart configuration.
Definition dma.h:518
bool infinite_restart
Definition dma.h:521
uint16_t restart_count
Definition dma.h:522
bool enable_auto_restart
Definition dma.h:520
DMA channel request configuration and capabilities.
Definition dma.h:668
uint8_t trig_in_sel
Definition dma.h:681
bool support_2d
Definition dma.h:671
uint32_t wrap_supported
Definition dma.h:673
dma_fifo_depth_en required_fifo_depth
Definition dma.h:675
dma_privilege_en privilege
Definition dma.h:679
bool is_free
Definition dma.h:669
dma_security_en security
Definition dma.h:678
uint32_t base_address
Definition dma.h:683
uint32_t cmd_link_supported
Definition dma.h:674
bool template_supported
Definition dma.h:672
DMA channel configuration.
Definition dma.h:638
uint8_t priority
Definition dma.h:646
dma_transfer_mode_en mode
Definition dma.h:639
dma_2d_config_t config_2d
Definition dma.h:643
dma_hw_trigger_config_t src_trigger
Definition dma.h:653
dma_auto_restart_config_t auto_restart
Definition dma.h:657
dma_event_callback_t callback
Definition dma.h:661
dma_reg_reload_type_en reg_reload_type
Definition dma.h:658
dma_security_en dest_security
Definition dma.h:648
dma_privilege_en dest_privilege
Definition dma.h:650
dma_privilege_en src_privilege
Definition dma.h:649
dma_hw_trigger_config_t dest_trigger
Definition dma.h:654
void * user_data
Definition dma.h:662
dma_1d_config_t config_1d
Definition dma.h:642
dma_security_en src_security
Definition dma.h:647
DMA hardware trigger configuration.
Definition dma.h:542
uint8_t trigger_port
Definition dma.h:544
bool trigger_level
Definition dma.h:545
bool enable
Definition dma.h:543
bool trigger_edge
Definition dma.h:546
DMA software trigger configuration.
Definition dma.h:529
dma_sw_trigger_type_en sw_trig_type
Definition dma.h:532
dma_trigger_mode_en mode
Definition dma.h:533
dma_trigger_type_en trig_type
Definition dma.h:531
uint8_t block_size
Definition dma.h:535
DMA template configuration (used with 1D transfers only)
Definition dma.h:571
uint32_t dest_template
Definition dma.h:576
bool enable_template
Definition dma.h:572
uint32_t src_template
Definition dma.h:575
uint8_t dest_template_size
Definition dma.h:574
uint8_t src_template_size
Definition dma.h:573