API Reference
The NEORV32 RISC-V Processor
Loading...
Searching...
No Matches
neorv32_dma.h
Go to the documentation of this file.
1// ================================================================================ //
2// The NEORV32 RISC-V Processor - https://github.com/stnolting/neorv32 //
3// Copyright (c) NEORV32 contributors. //
4// Copyright (c) 2020 - 2026 Stephan Nolting. All rights reserved. //
5// Licensed under the BSD-3-Clause license, see LICENSE for details. //
6// SPDX-License-Identifier: BSD-3-Clause //
7// ================================================================================ //
8
14#ifndef NEORV32_DMA_H
15#define NEORV32_DMA_H
16
17#include <neorv32.h>
18#include <stdint.h>
19
20/**********************************************************************/
25typedef volatile struct __attribute__((packed,aligned(4))) {
26 uint32_t CTRL;
27 uint32_t DESC;
29
31#define NEORV32_DMA ((neorv32_dma_t*) (NEORV32_DMA_BASE))
32
48
62/**********************************************************************/
73#define DMA_SRC_CONST_BYTE (DMA_TYPE_CONST_BYTE << DMA_CONF_SRC_LSB)
74#define DMA_SRC_CONST_WORD (DMA_TYPE_CONST_WORD << DMA_CONF_SRC_LSB)
75#define DMA_SRC_INC_BYTE (DMA_TYPE_INC_BYTE << DMA_CONF_SRC_LSB)
76#define DMA_SRC_INC_WORD (DMA_TYPE_INC_WORD << DMA_CONF_SRC_LSB)
78#define DMA_DST_CONST_BYTE (DMA_TYPE_CONST_BYTE << DMA_CONF_DST_LSB)
79#define DMA_DST_CONST_WORD (DMA_TYPE_CONST_WORD << DMA_CONF_DST_LSB)
80#define DMA_DST_INC_BYTE (DMA_TYPE_INC_BYTE << DMA_CONF_DST_LSB)
81#define DMA_DST_INC_WORD (DMA_TYPE_INC_WORD << DMA_CONF_DST_LSB)
83#define DMA_BSWAP (1 << DMA_CONF_BSWAP)
86/**********************************************************************/
95
96/**********************************************************************/
100int neorv32_dma_available(void);
104void neorv32_dma_enable(void);
105void neorv32_dma_disable(void);
106void neorv32_dma_irq_ack(void);
107int neorv32_dma_program(uint32_t src_addr, uint32_t dst_addr, uint32_t config);
108void neorv32_dma_program_nocheck(uint32_t src_addr, uint32_t dst_addr, uint32_t config);
109void neorv32_dma_start(void);
110int neorv32_dma_status(void);
113#endif // NEORV32_DMA_H
Main NEORV32 core library / driver / HAL include file.
NEORV32_DMA_STATUS_enum
Definition neorv32_dma.h:89
@ DMA_STATUS_ERROR
Definition neorv32_dma.h:90
@ DMA_STATUS_IDLE
Definition neorv32_dma.h:91
@ DMA_STATUS_BUSY
Definition neorv32_dma.h:92
@ DMA_STATUS_DONE
Definition neorv32_dma.h:93
int neorv32_dma_available(void)
Definition neorv32_dma.c:20
void neorv32_dma_start(void)
Definition neorv32_dma.c:115
NEORV32_DMA_CTRL_enum
Definition neorv32_dma.h:34
@ DMA_CTRL_DFIFO_LSB
Definition neorv32_dma.h:38
@ DMA_CTRL_DONE
Definition neorv32_dma.h:45
@ DMA_CTRL_ERROR
Definition neorv32_dma.h:44
@ DMA_CTRL_DEMPTY
Definition neorv32_dma.h:42
@ DMA_CTRL_DFULL
Definition neorv32_dma.h:43
@ DMA_CTRL_DFIFO_MSB
Definition neorv32_dma.h:39
@ DMA_CTRL_ACK
Definition neorv32_dma.h:41
@ DMA_CTRL_EN
Definition neorv32_dma.h:35
@ DMA_CTRL_BUSY
Definition neorv32_dma.h:46
@ DMA_CTRL_START
Definition neorv32_dma.h:36
void neorv32_dma_disable(void)
Definition neorv32_dma.c:64
NEORV32_DMA_CONF_enum
Definition neorv32_dma.h:50
@ DMA_CONF_BSWAP
Definition neorv32_dma.h:54
@ DMA_CONF_NUM_LSB
Definition neorv32_dma.h:51
@ DMA_CONF_SRC_MSB
Definition neorv32_dma.h:56
@ DMA_CONF_NUM_MSB
Definition neorv32_dma.h:52
@ DMA_CONF_DST_LSB
Definition neorv32_dma.h:57
@ DMA_CONF_DST_MSB
Definition neorv32_dma.h:58
@ DMA_CONF_SRC_LSB
Definition neorv32_dma.h:55
int neorv32_dma_descriptor_fifo_empty(void)
Definition neorv32_dma.c:48
int neorv32_dma_status(void)
Definition neorv32_dma.c:124
int neorv32_dma_program(uint32_t src_addr, uint32_t dst_addr, uint32_t config)
Definition neorv32_dma.c:87
void neorv32_dma_irq_ack(void)
Definition neorv32_dma.c:73
int neorv32_dma_get_descriptor_fifo_depth(void)
Definition neorv32_dma.c:29
void neorv32_dma_enable(void)
Definition neorv32_dma.c:56
int neorv32_dma_descriptor_fifo_full(void)
Definition neorv32_dma.c:39
NEORV32_DMA_TYPE_enum
Definition neorv32_dma.h:66
@ DMA_TYPE_INC_BYTE
Definition neorv32_dma.h:69
@ DMA_TYPE_INC_WORD
Definition neorv32_dma.h:70
@ DMA_TYPE_CONST_BYTE
Definition neorv32_dma.h:67
@ DMA_TYPE_CONST_WORD
Definition neorv32_dma.h:68
void neorv32_dma_program_nocheck(uint32_t src_addr, uint32_t dst_addr, uint32_t config)
Definition neorv32_dma.c:105
Definition neorv32_dma.h:25
uint32_t DESC
Definition neorv32_dma.h:27
uint32_t CTRL
Definition neorv32_dma.h:26