Microchip® Advanced Software Framework

dmac.c File Reference

SAM4E DMA Controller (DMAC) driver.

Copyright (c) 2012-2018 Microchip Technology Inc. and its subsidiaries.

#include "dmac.h"

Macros

#define DMAC_WPMR_WPKEY_PASSWD   DMAC_WPMR_WPKEY(0x444D41u)
 

Functions

void dmac_channel_disable (Dmac *p_dmac, uint32_t ul_num)
 Disable the specified DMA Channel. More...
 
void dmac_channel_enable (Dmac *p_dmac, uint32_t ul_num)
 Enable the specified DMA Channel. More...
 
uint32_t dmac_channel_get_status (Dmac *p_dmac)
 Get the DMAC Channel handler status. More...
 
uint32_t dmac_channel_is_enable (Dmac *p_dmac, uint32_t ul_num)
 Check if the specified DMA Channel is enabled. More...
 
uint32_t dmac_channel_is_transfer_done (Dmac *p_dmac, uint32_t ul_num)
 Check if the data transfer occurring on the specified DMA Channel is complete. More...
 
void dmac_channel_keep (Dmac *p_dmac, uint32_t ul_num)
 Resume the specified DMA Channel from an automatic stall state. More...
 
void dmac_channel_multi_buf_transfer_init (Dmac *p_dmac, uint32_t ul_num, dma_transfer_descriptor_t *p_desc)
 Initialize the DMA Channel for a multiple buffer transfer. More...
 
void dmac_channel_resume (Dmac *p_dmac, uint32_t ul_num)
 Resume the specified DMA Channel transfer (restoring its context). More...
 
void dmac_channel_set_configuration (Dmac *p_dmac, uint32_t ul_num, uint32_t ul_cfg)
 Set the DMAC configuration register of the specified DMA Channel. More...
 
void dmac_channel_set_ctrlA (Dmac *p_dmac, uint32_t ul_num, uint32_t ul_ctrlA)
 Set the DMA control A of the specified DMA Channel. More...
 
void dmac_channel_set_ctrlB (Dmac *p_dmac, uint32_t ul_num, uint32_t ul_ctrlB)
 Set the DMA control B of the specified DMA Channel. More...
 
void dmac_channel_set_descriptor_addr (Dmac *p_dmac, uint32_t ul_num, uint32_t ul_desc)
 Set the DMA descriptor address of the specified DMA Channel. More...
 
void dmac_channel_set_destination_addr (Dmac *p_dmac, uint32_t ul_num, uint32_t ul_addr)
 Set the DMA destination address of the specified DMA Channel. More...
 
void dmac_channel_set_source_addr (Dmac *p_dmac, uint32_t ul_num, uint32_t ul_addr)
 Set the DMA source address of the specified DMA Channel. More...
 
void dmac_channel_single_buf_transfer_init (Dmac *p_dmac, uint32_t ul_num, dma_transfer_descriptor_t *p_desc)
 Initialize the DMA Channel for a single buffer transfer. More...
 
void dmac_channel_stop_transfer (Dmac *p_dmac, uint32_t ul_num)
 Stop a DMA transfer occurring on the specified DMA Channel. More...
 
void dmac_channel_suspend (Dmac *p_dmac, uint32_t ul_num)
 Suspend the specified DMA Channel and its current context. More...
 
void dmac_disable (Dmac *p_dmac)
 Disable the DMA Controller. More...
 
void dmac_disable_interrupt (Dmac *p_dmac, uint32_t ul_mask)
 Disable DMAC interrupts. More...
 
void dmac_enable (Dmac *p_dmac)
 Enable the DMA Controller. More...
 
void dmac_enable_interrupt (Dmac *p_dmac, uint32_t ul_mask)
 Enable DMAC interrupts. More...
 
uint32_t dmac_get_interrupt_mask (Dmac *p_dmac)
 Get the DMAC Interrupt Mask. More...
 
uint32_t dmac_get_status (Dmac *p_dmac)
 Get the DMAC transfer status. More...
 
uint32_t dmac_get_writeprotect_status (Dmac *p_dmac)
 Get the DMAC register's write protect status. More...
 
void dmac_init (Dmac *p_dmac)
 Initialize the DMA controller and disable it. More...
 
void dmac_set_priority_mode (Dmac *p_dmac, dmac_priority_mode_t mode)
 Set the DMA priority mode. More...
 
void dmac_set_writeprotect (Dmac *p_dmac, uint32_t ul_enable)
 Enable/Disable the write protect of DMAC registers. More...
 
void dmac_soft_chunk_transfer_request (Dmac *p_dmac, uint32_t ul_num, uint32_t ul_src_req, uint32_t ul_dst_req)
 DMA Channel software chunk request. More...
 
void dmac_soft_set_last_transfer_flag (Dmac *p_dmac, uint32_t ul_num, uint32_t ul_src_flag, uint32_t ul_dst_flag)
 Set the DMA Channel's last transfer flag. More...
 
void dmac_soft_single_transfer_request (Dmac *p_dmac, uint32_t ul_num, uint32_t ul_src_req, uint32_t ul_dst_req)
 DMA Channel software single request. More...
 

#define DMAC_WPMR_WPKEY_PASSWD   DMAC_WPMR_WPKEY(0x444D41u)

Referenced by dmac_set_writeprotect().

uint32_t dmac_get_writeprotect_status ( Dmac *  p_dmac)

Get the DMAC register's write protect status.

Parameters
[in]p_dmacModule hardware register base address pointer
Returns
Write protect status.

References Assert.

void dmac_set_writeprotect ( Dmac *  p_dmac,
uint32_t  ul_enable 
)

Enable/Disable the write protect of DMAC registers.

Parameters
[out]p_dmacModule hardware register base address pointer
[in]ul_enable1 to enable, 0 to disable

References Assert, and DMAC_WPMR_WPKEY_PASSWD.