API Reference
The NEORV32 RISC-V Processor
Loading...
Searching...
No Matches
neorv32_dma.c File Reference

Direct Memory Access Controller (DMA) HW driver source file. More...

#include <neorv32.h>

Functions

int neorv32_dma_available (void)
 
int neorv32_dma_get_descriptor_fifo_depth (void)
 
int neorv32_dma_descriptor_fifo_full (void)
 
int neorv32_dma_descriptor_fifo_empty (void)
 
void neorv32_dma_enable (void)
 
void neorv32_dma_disable (void)
 
void neorv32_dma_irq_ack (void)
 
int neorv32_dma_program (uint32_t src_addr, uint32_t dst_addr, uint32_t config)
 
void neorv32_dma_program_nocheck (uint32_t src_addr, uint32_t dst_addr, uint32_t config)
 
void neorv32_dma_start (void)
 
int neorv32_dma_status (void)
 

Detailed Description

Direct Memory Access Controller (DMA) HW driver source file.

Function Documentation

◆ neorv32_dma_available()

int neorv32_dma_available ( void )

Check if DMA controller was synthesized.

Returns
0 if DMA was not synthesized, non-zero if DMA is available.

◆ neorv32_dma_descriptor_fifo_empty()

int neorv32_dma_descriptor_fifo_empty ( void )

Check if descriptor FIFO is empty.

Returns
Non-zero if FIFO is empty, zero otherwise.

◆ neorv32_dma_descriptor_fifo_full()

int neorv32_dma_descriptor_fifo_full ( void )

Check if descriptor FIFO is full.

Returns
Non-zero if FIFO is full, zero otherwise.

◆ neorv32_dma_disable()

void neorv32_dma_disable ( void )

Disable DMA. This will reset the DMA and will also terminate the current transfer.

◆ neorv32_dma_enable()

void neorv32_dma_enable ( void )

Enable DMA.

◆ neorv32_dma_get_descriptor_fifo_depth()

int neorv32_dma_get_descriptor_fifo_depth ( void )

Get DMA descriptor FIFO depth.

Returns
FIFO depth (number of entries)

◆ neorv32_dma_irq_ack()

void neorv32_dma_irq_ack ( void )

Manually clear pending DMA interrupt. This will also clear the transfer-error and transfer-done status flags.

◆ neorv32_dma_program()

int neorv32_dma_program ( uint32_t src_addr,
uint32_t dst_addr,
uint32_t config )

Program DMA descriptor.

Parameters
[in]base_srcSource data base address.
[in]base_dstDestination data base address.
[in]configTransfer type configuration (NEORV32_DMA_CONF_enum).
Returns
0 if programming was successful; if the descriptor FIFO does not provide enough space for the entire descriptor, a negative value is returned that represents the number of missing FIFO entries.

◆ neorv32_dma_program_nocheck()

void neorv32_dma_program_nocheck ( uint32_t src_addr,
uint32_t dst_addr,
uint32_t config )

Program DMA descriptor (without checking FIFO level).

Warning
Descriptor FIFO might overflow. Use with care.
Parameters
[in]base_srcSource data base address.
[in]base_dstDestination data base address.
[in]configTransfer type configuration (NEORV32_DMA_CONF_enum).

◆ neorv32_dma_start()

void neorv32_dma_start ( void )

Trigger pre-programmed DMA transfer(s)

◆ neorv32_dma_status()

int neorv32_dma_status ( void )

Get DMA status.

Returns
Current DMA status (NEORV32_DMA_STATUS_enum)