VSF Documented
driver.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#if defined(__VSF_HEADER_ONLY_SHOW_ARCH_INFO__)
19
20# include "__device.h"
21
22#else
23
24# ifndef __HAL_DRIVER_MT071_H__
25# define __HAL_DRIVER_MT071_H__
26
27/*============================ INCLUDES ======================================*/
28
29# include "hal/vsf_hal_cfg.h"
30# include "./device.h"
31//# include "./io/io.h"
32# include "./usb/usb.h"
33//# include "./pm/pm.h"
34# include "./usart/usart.h"
35
36/*============================ MACROS ========================================*/
37
38// __WIDTH in [6, 16, 32]
39#define DMA_CTRL_DST_WIDTH(__WIDTH) VSF_MCONNECT2(DMA_CTRL_DST_WIDTH_, __WIDTH)
40// __WIDTH in [6, 16, 32]
41#define DMA_CTRL_SRC_WIDTH(__WIDTH) VSF_MCONNECT2(DMA_CTRL_SRC_WIDTH_, __WIDTH)
42// __SIZE in [1, 4, 8, 16, 32, 64, 128, 256], does 256 supported?
43#define DMA_CTRL_DST_BURST(__SIZE) VSF_MCONNECT2(DMA_CTRL_DST_BURST, __WIDTH)
44// __SIZE in [1, 4, 8, 16, 32, 64, 128, 256], does 256 supported?
45#define DMA_CTRL_SRC_BURST(__SIZE) VSF_MCONNECT2(DMA_CTRL_SRC_BURST, __WIDTH)
46
47/*============================ MACROFIED FUNCTIONS ===========================*/
48/*============================ TYPES =========================================*/
49
50typedef enum __dma_trans_ctrl_t {
51 DMA_CTRL_INT_EN = DMA_CTL_L_INT_EN,
52
56
60
61 DMA_CTRL_DST_INC = (0ul << 7),
62 DMA_CTRL_DST_DEC = (1ul << 7),
63 DMA_CTRL_DST_KEEP = (2ul << 7),
64
65 DMA_CTRL_SRC_INC = (0ul << 9),
66 DMA_CTRL_SRC_DEC = (1ul << 9),
67 DMA_CTRL_SRC_KEEP = (2ul << 9),
68
69 DMA_DST_BURST_1 = (0ul << 11),
70 DMA_DST_BURST_4 = (1ul << 11),
71 DMA_DST_BURST_8 = (2ul << 11),
72 DMA_DST_BURST_16 = (3ul << 11),
73 DMA_DST_BURST_32 = (4ul << 11),
74 DMA_DST_BURST_64 = (5ul << 11),
75 DMA_DST_BURST_128 = (6ul << 11),
76 DMA_DST_BURST_256 = (7ul << 11),
77
78 DMA_SRC_BURST_1 = (0ul << 14),
79 DMA_SRC_BURST_4 = (1ul << 14),
80 DMA_SRC_BURST_8 = (2ul << 14),
81 DMA_SRC_BURST_16 = (3ul << 14),
82 DMA_SRC_BURST_32 = (4ul << 14),
83 DMA_SRC_BURST_64 = (5ul << 14),
84 DMA_SRC_BURST_128 = (6ul << 14),
85 DMA_SRC_BURST_256 = (7ul << 14),
86
92
93typedef struct __dma_trans_t {
94 void *src;
95 void *dst;
96 void *nxt;
97 // mask of DMA_CTRL_XXXX
100
101 // private
105
112
113 struct {
114 void (*fn)(void *param, __dma_channel_t *channel);
115 void *param;
117
118 union {
119 struct {
124 };
125};
126
127/*============================ GLOBAL VARIABLES ==============================*/
128/*============================ LOCAL VARIABLES ===============================*/
129/*============================ PROTOTYPES ====================================*/
130
131extern void __vsf_dma_free_channel(__dma_channel_t *channel);
133
134extern void __vsf_dma_channel_start(__dma_channel_t *channel, uint_fast64_t channel_cfg);
135extern void __vsf_dma_channel_stop(__dma_channel_t *channel);
136
137# endif // __HAL_DRIVER_MT071_H__
138#endif // __VSF_HEADER_ONLY_SHOW_ARCH_INFO__
139/* EOF */
void __vsf_dma_free_channel(__dma_channel_t *channel)
Definition driver.c:143
void __vsf_dma_channel_stop(__dma_channel_t *channel)
Definition driver.c:134
__dma_channel_t * __vsf_dma_alloc_channel(__dma_trans_t *trans, uint_fast8_t trans_num)
Definition driver.c:150
__dma_trans_ctrl_t
Definition driver.h:50
@ DMA_DST_BURST_32
Definition driver.h:73
@ DMA_DST_BURST_16
Definition driver.h:72
@ DMA_DST_BURST_8
Definition driver.h:71
@ DMA_SRC_BURST_256
Definition driver.h:85
@ DMA_SRC_BURST_1
Definition driver.h:78
@ DMA_SRC_BURST_32
Definition driver.h:82
@ DMA_SRC_BURST_64
Definition driver.h:83
@ DMA_DST_BURST_64
Definition driver.h:74
@ DMA_SRC_BURST_4
Definition driver.h:79
@ DMA_DST_BURST_128
Definition driver.h:75
@ DMA_CTRL_SRC_KEEP
Definition driver.h:67
@ DMA_CTRL_SRC_WIDTH_8
Definition driver.h:57
@ DMA_CTRL_DST_KEEP
Definition driver.h:63
@ DMA_DST_BURST_256
Definition driver.h:76
@ DMA_SRC_BURST_16
Definition driver.h:81
@ DMA_CTRL_TRANS_TYPE_P2P
Definition driver.h:90
@ DMA_CTRL_DST_INC
Definition driver.h:61
@ DMA_CTRL_SRC_DEC
Definition driver.h:66
@ DMA_CTRL_SRC_WIDTH_16
Definition driver.h:58
@ DMA_CTRL_SRC_INC
Definition driver.h:65
@ DMA_SRC_BURST_128
Definition driver.h:84
@ DMA_CTRL_TRANS_TYPE_M2M
Definition driver.h:87
@ DMA_CTRL_DST_WIDTH_8
Definition driver.h:53
@ DMA_DST_BURST_1
Definition driver.h:69
@ DMA_CTRL_TRANS_TYPE_P2M
Definition driver.h:89
@ DMA_CTRL_DST_WIDTH_32
Definition driver.h:55
@ DMA_CTRL_INT_EN
Definition driver.h:51
@ DMA_CTRL_DST_WIDTH_16
Definition driver.h:54
@ DMA_DST_BURST_4
Definition driver.h:70
@ DMA_CTRL_SRC_WIDTH_32
Definition driver.h:59
@ DMA_SRC_BURST_8
Definition driver.h:80
@ DMA_CTRL_DST_DEC
Definition driver.h:62
@ DMA_CTRL_TRANS_TYPE_M2P
Definition driver.h:88
void __vsf_dma_channel_start(__dma_channel_t *channel, uint_fast64_t channel_cfg)
Definition driver.c:95
unsigned char uint_fast8_t
Definition stdint.h:23
unsigned uint32_t
Definition stdint.h:9
unsigned long long uint_fast64_t
Definition stdint.h:29
unsigned char uint8_t
Definition stdint.h:5
Definition driver.h:107
__dma_trans_t * trans
Definition driver.h:121
struct __dma_channel_t::@629 callback
bool is_chain
Definition driver.h:110
uint8_t trans_num
Definition driver.h:120
__dma_trans_t trans
Definition driver.h:123
void * param
Definition driver.h:115
void(* fn)(void *param, __dma_channel_t *channel)
Definition driver.h:114
bool is_started
Definition driver.h:111
struct __dma_channel_t::@630::@632 chain
uint8_t id
Definition driver.h:108
bool is_allocated
Definition driver.h:109
Definition driver.h:93
void * dst
Definition driver.h:95
void * src
Definition driver.h:94
void * nxt
Definition driver.h:96
uint32_t __all_count
Definition driver.h:103
uint32_t __remain_count
Definition driver.h:102
uint32_t count
Definition driver.h:99
uint32_t ctrl
Definition driver.h:98