VSF Documented
dma.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18/*============================ INCLUDES ======================================*/
19#ifndef __HAL_DRIVER_NUVOTON_M480_DMA_H__
20#define __HAL_DRIVER_NUVOTON_M480_DMA_H__
21
22/*============================ INCLUDES ======================================*/
23
24#include "hal/vsf_hal_cfg.h"
25#include "../../__device.h"
26
27/*============================ MACROS ========================================*/
28
29#define M484_DMA_REQUEST_MAX_SIZE 65536
30
31/*============================ MACROFIED FUNCTIONS ===========================*/
32/*============================ TYPES =========================================*/
33
34typedef struct m484_dma_cfg_t {
37
108
109 M484_DMA_TRANSFER_WIDTH_8_BIT = 0 << PDMA_DSCT_CTL_TXWIDTH_Pos,
110 M484_DMA_TRANSFER_WIDTH_16_BIT = 1 << PDMA_DSCT_CTL_TXWIDTH_Pos,
111 M484_DMA_TRANSFER_WIDTH_32_BIT = 2 << PDMA_DSCT_CTL_TXWIDTH_Pos,
112
113 M484_DMA_TRANSFER_SOURCE_INC = 0 << PDMA_DSCT_CTL_SAINC_Pos,
114 M484_DMA_TRANSFER_SOURCE_FIXED = 3 << PDMA_DSCT_CTL_SAINC_Pos,
115
116 M484_DMA_TRANSFER_DESTINATION_INC = 0 << PDMA_DSCT_CTL_DAINC_Pos,
117 M484_DMA_TRANSFER_DESTINATION_FIXED = 3 << PDMA_DSCT_CTL_DAINC_Pos,
118
119
120
121 // TODO: support brust mode; In M484, brust only work for MEM to MEM
123
126 /*
127 TODO: add table and timeout interrupt support
128 M484_DMA_TABLE_EMPTY_INTERRUPT = 1 << 1,
129 M484_DMA_TIMEOUT_INTERRUPT = 1 << 2,
130 */
132
133typedef void m484_dma_isr_handler_t(void *target_ptr, uint32_t irq_mask);
134
135typedef struct m484_dma_isr_t {
139
147
148typedef struct m484_dma_channel_t {
153
154/*============================ GLOBAL VARIABLES ==============================*/
155/*============================ PROTOTYPES ====================================*/
156
158
163
166
167
168
169
170#endif
vsf_err_t
Definition __type.h:42
vsf_err_t m484_dma_cancel_transfer(int8_t channel)
Definition dma.c:130
m484_dma_irq_mask_t
Definition dma.h:124
@ M484_DMA_TRANSFER_DONE_INTERRUPT
Definition dma.h:125
int_fast32_t m484_dma_get_transferred_count(int8_t channel)
Definition dma.c:136
bool m484_dma_channel_is_done(uint8_t channel)
Definition dma.c:104
vsf_err_t m484_dma_init(m484_dma_cfg_t *cfg_ptr)
Definition dma.c:37
vsf_err_t m484_dma_channel_config(uint8_t channel, m484_dma_channel_cfg_t *cfg_ptr)
Definition dma.c:60
vsf_err_t m484_dma_channel_irq_enable(uint8_t channel, uint32_t irq_mask)
Definition dma.c:112
m484_dma_transfer_mode_t
Definition dma.h:38
@ M484_DMA_EPWM1_P3_RX
Definition dma.h:75
@ M484_DMA_I2C0_TX
Definition dma.h:76
@ M484_DMA_SPI1_RX
Definition dma.h:63
@ M484_DMA_EPWM0_CH0_TX
Definition dma.h:91
@ M484_DMA_UART0_RX
Definition dma.h:43
@ M484_DMA_UART6_TX
Definition dma.h:103
@ M484_DMA_USB_RX
Definition dma.h:41
@ M484_DMA_UART5_RX
Definition dma.h:53
@ M484_DMA_EPWM0_CH5_TX
Definition dma.h:96
@ M484_DMA_EPWM1_CH5_TX
Definition dma.h:102
@ M484_DMA_TRANSFER_WIDTH_16_BIT
Definition dma.h:110
@ M484_DMA_UART7_RX
Definition dma.h:106
@ M484_DMA_UART1_RX
Definition dma.h:45
@ M484_DMA_QSPI0_TX
Definition dma.h:58
@ M484_DMA_EPWM0_CH2_TX
Definition dma.h:93
@ M484_DMA_UART2_TX
Definition dma.h:46
@ M484_DMA_QSPI0_RX
Definition dma.h:59
@ M484_DMA_EPWM1_P1_RX
Definition dma.h:73
@ M484_DMA_TRANSFER_WIDTH_32_BIT
Definition dma.h:111
@ M484_DMA_EPWM1_P2_RX
Definition dma.h:74
@ M484_DMA_TRANSFER_DESTINATION_INC
Definition dma.h:116
@ M484_DMA_I2C1_RX
Definition dma.h:79
@ M484_DMA_EPWM0_P1_RX
Definition dma.h:70
@ M484_DMA_TRANSFER_WIDTH_8_BIT
Definition dma.h:109
@ M484_DMA_SPI3_RX
Definition dma.h:67
@ M484_DMA_I2C2_TX
Definition dma.h:80
@ M484_DMA_EPWM1_CH3_TX
Definition dma.h:100
@ M484_DMA_EADC0_RX
Definition dma.h:88
@ M484_DMA_DAC0_TX
Definition dma.h:89
@ M484_DMA_EPWM1_CH4_TX
Definition dma.h:101
@ M484_DMA_USB_TX
Definition dma.h:40
@ M484_DMA_EPWM1_CH2_TX
Definition dma.h:99
@ M484_DMA_UART6_RX
Definition dma.h:104
@ M484_DMA_UART5_TX
Definition dma.h:52
@ M484_DMA_EPWM0_P2_RX
Definition dma.h:71
@ M484_DMA_TMR2
Definition dma.h:86
@ M484_DMA_EPWM0_CH3_TX
Definition dma.h:94
@ M484_DMA_TMR0
Definition dma.h:84
@ M484_DMA_DAC1_TX
Definition dma.h:90
@ M484_DMA_SPI0_TX
Definition dma.h:60
@ M484_DMA_EADC1_RX
Definition dma.h:107
@ M484_DMA_UART0_TX
Definition dma.h:42
@ M484_DMA_UART3_TX
Definition dma.h:48
@ M484_DMA_USCI0_RX
Definition dma.h:55
@ M484_DMA_EPWM0_CH4_TX
Definition dma.h:95
@ M484_DMA_I2S0_TX
Definition dma.h:82
@ M484_DMA_I2C0_RX
Definition dma.h:77
@ M484_DMA_QSPI1_RX
Definition dma.h:69
@ M484_DMA_UART4_RX
Definition dma.h:51
@ M484_DMA_USCI1_RX
Definition dma.h:57
@ M484_DMA_QSPI1_TX
Definition dma.h:68
@ M484_DMA_SPI1_TX
Definition dma.h:62
@ M484_DMA_I2S0_RX
Definition dma.h:83
@ M484_DMA_TRANSFER_SOURCE_FIXED
Definition dma.h:114
@ M484_DMA_EPWM0_P3_RX
Definition dma.h:72
@ M484_DMA_SPI2_TX
Definition dma.h:64
@ M484_DMA_I2C1_TX
Definition dma.h:78
@ M484_DMA_TRANSFER_DESTINATION_FIXED
Definition dma.h:117
@ M484_DMA_UART4_TX
Definition dma.h:50
@ M484_DMA_TRANSFER_SOURCE_INC
Definition dma.h:113
@ M484_DMA_SPI3_TX
Definition dma.h:66
@ M484_DMA_USCI0_TX
Definition dma.h:54
@ M484_DMA_SPI2_RX
Definition dma.h:65
@ M484_DMA_SPI0_RX
Definition dma.h:61
@ M484_DMA_UART7_TX
Definition dma.h:105
@ M484_DMA_UART3_RX
Definition dma.h:49
@ M484_DMA_EPWM1_CH1_TX
Definition dma.h:98
@ M484_DMA_EPWM0_CH1_TX
Definition dma.h:92
@ M484_DMA_EPWM1_CH0_TX
Definition dma.h:97
@ M484_DMA_UART2_RX
Definition dma.h:47
@ M484_DMA_TMR3
Definition dma.h:87
@ M484_DMA_TMR1
Definition dma.h:85
@ M484_DMA_I2C2_RX
Definition dma.h:81
@ M484_DMA_USCI1_TX
Definition dma.h:56
@ M484_DMA_UART1_TX
Definition dma.h:44
@ M484_DMA_MEM
Definition dma.h:39
vsf_err_t m484_dma_channel_irq_disable(uint8_t channel, uint32_t irq_mask)
Definition dma.c:121
void m484_dma_isr_handler_t(void *target_ptr, uint32_t irq_mask)
Definition dma.h:133
vsf_arch_prio_t
Definition cortex_a_generic.h:88
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
int int_fast32_t
Definition stdint.h:26
unsigned char uint8_t
Definition stdint.h:5
signed char int8_t
Definition stdint.h:4
Definition dma.h:34
vsf_arch_prio_t prio
Definition dma.h:35
Definition dma.h:140
uint32_t mode
Definition dma.h:141
uint32_t count
Definition dma.h:145
m484_dma_isr_t isr
Definition dma.h:142
void * src_address
Definition dma.h:143
void * dst_address
Definition dma.h:144
Definition dma.h:148
m484_dma_isr_t isr
Definition dma.h:150
uint16_t count
Definition dma.h:149
m484_dma_irq_mask_t irq_mask
Definition dma.h:151
Definition dma.h:135
void * target_ptr
Definition dma.h:137
m484_dma_isr_handler_t * handler_fn
Definition dma.h:136