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
48
60
61
62
63/**********************************************************************/
73
74#define DMA_SRC_CONST_BYTE (DMA_TYPE_CONST_BYTE << DMA_CONF_SRC_LSB)
75#define DMA_SRC_CONST_WORD (DMA_TYPE_CONST_WORD << DMA_CONF_SRC_LSB)
76#define DMA_SRC_INC_BYTE (DMA_TYPE_INC_BYTE << DMA_CONF_SRC_LSB)
77#define DMA_SRC_INC_WORD (DMA_TYPE_INC_WORD << DMA_CONF_SRC_LSB)
79#define DMA_DST_CONST_BYTE (DMA_TYPE_CONST_BYTE << DMA_CONF_DST_LSB)
80#define DMA_DST_CONST_WORD (DMA_TYPE_CONST_WORD << DMA_CONF_DST_LSB)
81#define DMA_DST_INC_BYTE (DMA_TYPE_INC_BYTE << DMA_CONF_DST_LSB)
82#define DMA_DST_INC_WORD (DMA_TYPE_INC_WORD << DMA_CONF_DST_LSB)
84#define DMA_BSWAP (1 << DMA_CONF_BSWAP)
86
87
88/**********************************************************************/
97
98
99/**********************************************************************/
103int neorv32_dma_available(void);
107void neorv32_dma_enable(void);
108void neorv32_dma_disable(void);
109void neorv32_dma_irq_ack(void);
110int neorv32_dma_program(uint32_t src_addr, uint32_t dst_addr, uint32_t config);
111void neorv32_dma_program_nocheck(uint32_t src_addr, uint32_t dst_addr, uint32_t config);
112void neorv32_dma_start(void);
113int neorv32_dma_status(void);
115
116
117#endif // NEORV32_DMA_H
NEORV32_DMA_STATUS_enum
Definition neorv32_dma.h:91
@ DMA_STATUS_ERROR
Definition neorv32_dma.h:92
@ DMA_STATUS_IDLE
Definition neorv32_dma.h:93
@ DMA_STATUS_BUSY
Definition neorv32_dma.h:94
@ DMA_STATUS_DONE
Definition neorv32_dma.h:95
int neorv32_dma_available(void)
Definition neorv32_dma.c:22
void neorv32_dma_start(void)
Definition neorv32_dma.c:133
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
@ CMA_CTRL_ACK
Definition neorv32_dma.h:41
@ 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_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:74
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:56
int neorv32_dma_status(void)
Definition neorv32_dma.c:144
int neorv32_dma_program(uint32_t src_addr, uint32_t dst_addr, uint32_t config)
Definition neorv32_dma.c:101
void neorv32_dma_irq_ack(void)
Definition neorv32_dma.c:84
int neorv32_dma_get_descriptor_fifo_depth(void)
Definition neorv32_dma.c:33
void neorv32_dma_enable(void)
Definition neorv32_dma.c:65
int neorv32_dma_descriptor_fifo_full(void)
Definition neorv32_dma.c:45
NEORV32_DMA_TYPE_enum
Definition neorv32_dma.h:67
@ DMA_TYPE_INC_BYTE
Definition neorv32_dma.h:70
@ DMA_TYPE_INC_WORD
Definition neorv32_dma.h:71
@ DMA_TYPE_CONST_BYTE
Definition neorv32_dma.h:68
@ DMA_TYPE_CONST_WORD
Definition neorv32_dma.h:69
void neorv32_dma_program_nocheck(uint32_t src_addr, uint32_t dst_addr, uint32_t config)
Definition neorv32_dma.c:122
Definition neorv32_dma.h:25
uint32_t DESC
Definition neorv32_dma.h:27
uint32_t CTRL
Definition neorv32_dma.h:26