NEORV32 Software Framework Documentation
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 - 2025 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
13
14#ifndef NEORV32_DMA_H
15#define NEORV32_DMA_H
16
17#include <stdint.h>
18
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
47
59
60
61
62/**********************************************************************/
72
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)
85
86
87/**********************************************************************/
96
97
98/**********************************************************************/
102int neorv32_dma_available(void);
106void neorv32_dma_enable(void);
107void neorv32_dma_disable(void);
108void neorv32_dma_err_ack(void);
109void neorv32_dma_done_ack(void);
110int neorv32_dma_program(uint32_t src_addr, uint32_t dst_addr, uint32_t config);
111void neorv32_dma_start(void);
112int neorv32_dma_status(void);
114
115
116#endif // NEORV32_DMA_H
NEORV32_DMA_STATUS_enum
Definition neorv32_dma.h:90
@ DMA_STATUS_ERROR
Definition neorv32_dma.h:91
@ DMA_STATUS_IDLE
Definition neorv32_dma.h:92
@ DMA_STATUS_BUSY
Definition neorv32_dma.h:93
@ DMA_STATUS_DONE
Definition neorv32_dma.h:94
int neorv32_dma_available(void)
Definition neorv32_dma.c:22
void neorv32_dma_start(void)
Definition neorv32_dma.c:129
void neorv32_dma_done_ack(void)
Definition neorv32_dma.c:97
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:44
@ DMA_CTRL_ERROR
Definition neorv32_dma.h:43
@ DMA_CTRL_DEMPTY
Definition neorv32_dma.h:41
@ DMA_CTRL_DFULL
Definition neorv32_dma.h:42
@ DMA_CTRL_DFIFO_MSB
Definition neorv32_dma.h:39
@ DMA_CTRL_EN
Definition neorv32_dma.h:35
@ DMA_CTRL_BUSY
Definition neorv32_dma.h:45
@ DMA_CTRL_START
Definition neorv32_dma.h:36
void neorv32_dma_disable(void)
Definition neorv32_dma.c:79
NEORV32_DMA_CONF_enum
Definition neorv32_dma.h:49
@ DMA_CONF_BSWAP
Definition neorv32_dma.h:53
@ DMA_CONF_NUM_LSB
Definition neorv32_dma.h:50
@ DMA_CONF_SRC_MSB
Definition neorv32_dma.h:55
@ DMA_CONF_NUM_MSB
Definition neorv32_dma.h:51
@ DMA_CONF_DST_LSB
Definition neorv32_dma.h:56
@ DMA_CONF_DST_MSB
Definition neorv32_dma.h:57
@ DMA_CONF_SRC_LSB
Definition neorv32_dma.h:54
int neorv32_dma_descriptor_fifo_empty(void)
Definition neorv32_dma.c:61
int neorv32_dma_status(void)
Definition neorv32_dma.c:140
int neorv32_dma_program(uint32_t src_addr, uint32_t dst_addr, uint32_t config)
Definition neorv32_dma.c:114
int neorv32_dma_get_descriptor_fifo_depth(void)
Definition neorv32_dma.c:38
void neorv32_dma_enable(void)
Definition neorv32_dma.c:70
int neorv32_dma_descriptor_fifo_full(void)
Definition neorv32_dma.c:50
void neorv32_dma_err_ack(void)
Definition neorv32_dma.c:88
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
Definition neorv32_dma.h:25
uint32_t DESC
Definition neorv32_dma.h:27
uint32_t CTRL
Definition neorv32_dma.h:26