VSF Documented
dma_template.inc
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 VSF_HAL_USE_DMA == ENABLED
19
20/*============================ INCLUDES ======================================*/
21/*============================ MACROS ========================================*/
22
23#define vsf_real_dma_t VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_t)
24#define vsf_real_dma_capability VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_capability)
25#define vsf_real_dma_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_get_configuration)
26#define vsf_real_dma_channel_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_get_configuration)
27#define vsf_real_dma_channel_sg_config_desc VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_sg_config_desc)
28#define vsf_real_dma_channel_sg_start VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_sg_start)
29#define vsf_real_dma_channel_acquire_from_all VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_acquire_from_all)
30
31#ifndef VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY
32# define VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
33#endif
34
35#ifndef VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG_DESC
36# define VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG_DESC DISABLED
37#endif
38
39#ifndef VSF_DMA_CFG_REIMPLEMENT_API_SG_START
40# define VSF_DMA_CFG_REIMPLEMENT_API_SG_START DISABLED
41#endif
42
43#ifndef VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION
44# define VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
45#endif
46
47#ifndef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION
48# define VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION \
49 DISABLED
50#endif
51
52#ifndef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_FROM_ALL
53# define VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_FROM_ALL \
54 DISABLED
55#endif
56
57#ifdef VSF_DMA_CFG_IMP_REMAP_PREFIX
58# undef VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY
59# define VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
60# undef VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION
61# define VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
62# undef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION
63# define VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION ENABLED
64#endif
65
66#if VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
67# ifndef VSF_DMA_CFG_CAPABILITY_IRQ_MASK
68# define VSF_DMA_CFG_CAPABILITY_IRQ_MASK VSF_DMA_IRQ_ALL_BITS_MASK
69# endif
70# ifndef VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
71# define VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT 8
72# endif
73# ifndef VSF_DMA_CFG_CAPABILITY_IRQ_COUNT
74# define VSF_DMA_CFG_CAPABILITY_IRQ_COUNT VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
75# endif
76# ifndef VSF_DMA_CFG_CAPABILITY_SUPPORTED_MODES
77# define VSF_DMA_CFG_CAPABILITY_SUPPORTED_MODES VSF_DMA_MODE_ALL_BITS_MASK
78# endif
79# ifndef VSF_DMA_CFG_CAPABILITY_MAX_TRANSFER_COUNT
80# define VSF_DMA_CFG_CAPABILITY_MAX_TRANSFER_COUNT 0xFFFFFFFF
81# endif
82# ifndef VSF_DMA_CFG_CAPABILITY_ADDR_ALIGNMENT
83# define VSF_DMA_CFG_CAPABILITY_ADDR_ALIGNMENT 1
84# endif
85# ifndef VSF_DMA_CFG_CAPABILITY_SUPPORT_SCATTER_GATHER
86# define VSF_DMA_CFG_CAPABILITY_SUPPORT_SCATTER_GATHER 0
87# endif
88#endif
89
90/*============================ LOCAL VARIABLES ===============================*/
91/*============================ IMPLEMENTATION ================================*/
92
93#if VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
94vsf_dma_capability_t vsf_real_dma_capability(vsf_real_dma_t *dma_ptr)
95{
96 vsf_dma_capability_t dma_capability = {
97 .irq_mask = VSF_DMA_CFG_CAPABILITY_IRQ_MASK,
98 .channel_count = VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT,
99 .irq_count = VSF_DMA_CFG_CAPABILITY_IRQ_COUNT,
100 .supported_modes = VSF_DMA_CFG_CAPABILITY_SUPPORTED_MODES,
101 .max_transfer_count = VSF_DMA_CFG_CAPABILITY_MAX_TRANSFER_COUNT,
102 .addr_alignment = VSF_DMA_CFG_CAPABILITY_ADDR_ALIGNMENT,
103 .support_scatter_gather = VSF_DMA_CFG_CAPABILITY_SUPPORT_SCATTER_GATHER,
104 };
105
106 return dma_capability;
107}
108#endif
109
110#if VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG_DESC == DISABLED
111vsf_err_t vsf_real_dma_channel_sg_config_desc(vsf_real_dma_t *dma_ptr, uint8_t channel, vsf_dma_isr_t isr,
112 vsf_dma_channel_sg_desc_t *sg_desc_ptr, uint32_t sg_count)
113{
114 VSF_HAL_ASSERT(dma_ptr != NULL);
115 VSF_HAL_ASSERT(sg_desc_ptr != NULL);
116 VSF_HAL_ASSERT(sg_count > 0);
117
118 if ((NULL == dma_ptr) || (NULL == sg_desc_ptr) || (sg_count == 0)) {
120 }
121
122 // TODO
123 return VSF_ERR_NOT_SUPPORT;
124}
125#endif
126
127#if VSF_DMA_CFG_REIMPLEMENT_API_SG_START == DISABLED
128vsf_err_t vsf_real_dma_channel_sg_start(vsf_real_dma_t *dma_ptr, uint8_t channel)
129{
130 VSF_HAL_ASSERT(dma_ptr != NULL);
131
132 if (NULL == dma_ptr) {
134 }
135
136 // TODO
137 return VSF_ERR_NOT_SUPPORT;
138}
139#endif
140
141#if VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
142vsf_err_t vsf_real_dma_get_configuration(vsf_real_dma_t *dma_ptr, vsf_dma_cfg_t *cfg_ptr)
143{
144 VSF_HAL_ASSERT(NULL != dma_ptr);
145 VSF_HAL_ASSERT(NULL != cfg_ptr);
146
147 // Default implementation: not supported, trigger assertion
149
150 return VSF_ERR_NOT_SUPPORT;
151}
152#endif
153
154#if VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION == DISABLED
155vsf_err_t vsf_real_dma_channel_get_configuration(vsf_real_dma_t *dma_ptr, uint8_t channel, vsf_dma_channel_cfg_t *cfg_ptr)
156{
157 VSF_HAL_ASSERT(NULL != dma_ptr);
158 VSF_HAL_ASSERT(NULL != cfg_ptr);
159
160 // Default implementation: not supported, trigger assertion
162
163 return VSF_ERR_NOT_SUPPORT;
164}
165#endif
166
167#ifndef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_ADJUST_HINT
168# define VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_ADJUST_HINT DISABLED
169#endif
170
171#if VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_FROM_ALL == DISABLED
172vsf_dma_t * vsf_real_dma_channel_acquire_from_all(vsf_dma_channel_hint_t *channel_hint_ptr)
173{
174 VSF_HAL_ASSERT(channel_hint_ptr != NULL);
175
176# define require_dma_channel(_idx, _hint_ptr) \
177 if (VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_acquire)( \
178 &VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma, _idx), _hint_ptr) == VSF_ERR_NONE) {\
179 return (vsf_dma_t *)&VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma, _idx); \
180 }
181
182# define __VSF_HAL_TEMPLATE_MASK VSF_MCONNECT(VSF_DMA_CFG_IMP_UPCASE_PREFIX, _DMA_MASK)
183# define __VSF_HAL_TEMPLATE_MACRO require_dma_channel
184# define __VSF_HAL_TEMPLATE_ARG channel_hint_ptr
186
187 return NULL;
188}
189#endif
190
191/*============================ MACROS ========================================*/
192
193#undef VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY
194#undef VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION
195#undef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION
196#undef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_ADJUST_HINT
197#undef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_FROM_ALL
198#undef VSF_DMA_CFG_CAPABILITY_IRQ_MASK
199#undef VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
200#undef VSF_DMA_CFG_CAPABILITY_IRQ_COUNT
201#undef VSF_DMA_CFG_CAPABILITY_SUPPORTED_MODES
202#undef VSF_DMA_CFG_CAPABILITY_MAX_TRANSFER_COUNT
203#undef VSF_DMA_CFG_CAPABILITY_ADDR_ALIGNMENT
204#undef VSF_DMA_CFG_CAPABILITY_SUPPORT_SCATTER_GATHER
205#undef vsf_real_dma_t
206#undef vsf_real_dma_capability
207#undef vsf_real_dma_get_configuration
208#undef vsf_real_dma_channel_get_configuration
209#undef vsf_real_dma_channel_sg_config_desc
210#undef vsf_real_dma_channel_sg_start
211#undef vsf_real_dma_channel_acquire_from_all
212
213/*============================ LOCAL VARIABLES ===============================*/
214/*============================ IMPLEMENTATION ================================*/
215/*============================ MACROS ========================================*/
216
217
218#ifdef VSF_DMA_CFG_IMP_REMAP_PREFIX
219# define vsf_imp_dma_t VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_t)
220# define vsf_imp_dma_init VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_init)
221# define vsf_imp_dma_fini VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_fini)
222# define vsf_imp_dma_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_get_configuration)
223# define vsf_imp_dma_capability VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_capability)
224# define vsf_imp_dma_channel_acquire VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_acquire)
225# define vsf_imp_dma_channel_release VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_release)
226# define vsf_imp_dma_channel_config VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_config)
227# define vsf_imp_dma_channel_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_get_configuration)
228# define vsf_imp_dma_channel_start VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_start)
229# define vsf_imp_dma_channel_cancel VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_cancel)
230# define vsf_imp_dma_channel_get_transferred_count VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_get_transferred_count)
231# define vsf_imp_dma_channel_status VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_status)
232
233# define vsf_remap_dma_t VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_t)
234# define vsf_remap_dma_init VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_init)
235# define vsf_remap_dma_fini VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_fini)
236# define vsf_remap_dma_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_get_configuration)
237# define vsf_remap_dma_capability VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_capability)
238# define vsf_remap_dma_channel_acquire VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_acquire)
239# define vsf_remap_dma_channel_release VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_release)
240# define vsf_remap_dma_channel_config VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_config)
241# define vsf_remap_dma_channel_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_get_configuration)
242# define vsf_remap_dma_channel_start VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_start)
243# define vsf_remap_dma_channel_cancel VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_cancel)
244# define vsf_remap_dma_channel_get_transferred_count VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_get_transferred_count)
245# define vsf_remap_dma_channel_status VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_status)
246
247# define VSF_DMA_CFG_IMP_REMAP_FUNCTIONS \
248 vsf_err_t vsf_imp_dma_init(vsf_imp_dma_t *dma_ptr) \
249 { \
250 VSF_HAL_ASSERT(dma_ptr != NULL); \
251 return vsf_remap_dma_init(dma_ptr); \
252 } \
253 void vsf_imp_dma_fini(vsf_imp_dma_t *dma_ptr) \
254 { \
255 VSF_HAL_ASSERT(dma_ptr != NULL); \
256 vsf_remap_dma_fini(dma_ptr); \
257 } \
258 vsf_err_t vsf_imp_dma_get_configuration(vsf_imp_dma_t *dma_ptr, \
259 vsf_dma_cfg_t *cfg_ptr) \
260 { \
261 VSF_HAL_ASSERT(dma_ptr != NULL); \
262 VSF_HAL_ASSERT(cfg_ptr != NULL); \
263 return vsf_remap_dma_get_configuration(dma_ptr, cfg_ptr); \
264 } \
265 vsf_dma_capability_t vsf_imp_dma_capability(vsf_imp_dma_t *dma_ptr) \
266 { \
267 VSF_HAL_ASSERT(dma_ptr != NULL); \
268 return vsf_remap_dma_capability(dma_ptr); \
269 } \
270 vsf_err_t vsf_imp_dma_channel_acquire(vsf_imp_dma_t *dma_ptr, \
271 vsf_dma_channel_hint_t *channel_hint_ptr) \
272 { \
273 VSF_HAL_ASSERT(dma_ptr != NULL); \
274 return vsf_remap_dma_channel_acquire(dma_ptr, channel_hint_ptr); \
275 } \
276 void vsf_imp_dma_channel_release(vsf_imp_dma_t *dma_ptr, int8_t channel) \
277 { \
278 VSF_HAL_ASSERT(dma_ptr != NULL); \
279 vsf_remap_dma_channel_release(dma_ptr, channel); \
280 } \
281 vsf_err_t vsf_imp_dma_channel_config(vsf_imp_dma_t *dma_ptr, int8_t channel, \
282 vsf_dma_channel_cfg_t *cfg_ptr) \
283 { \
284 VSF_HAL_ASSERT(dma_ptr != NULL); \
285 return vsf_remap_dma_channel_config(dma_ptr, channel, cfg_ptr); \
286 } \
287 vsf_err_t vsf_imp_dma_channel_get_configuration(vsf_imp_dma_t *dma_ptr, \
288 int8_t channel, \
289 vsf_dma_channel_cfg_t *cfg_ptr) \
290 { \
291 VSF_HAL_ASSERT(dma_ptr != NULL); \
292 VSF_HAL_ASSERT(cfg_ptr != NULL); \
293 return vsf_remap_dma_channel_get_configuration(dma_ptr, channel, cfg_ptr); \
294 } \
295 vsf_err_t vsf_imp_dma_channel_start(vsf_imp_dma_t *dma_ptr, int8_t channel, \
296 uint32_t src_address, uint32_t dst_address, \
297 uint32_t count) \
298 { \
299 VSF_HAL_ASSERT(dma_ptr != NULL); \
300 return vsf_remap_dma_channel_start(dma_ptr, channel, src_address, \
301 dst_address, count); \
302 } \
303 vsf_err_t vsf_imp_dma_channel_cancel(vsf_imp_dma_t *dma_ptr, int8_t channel) \
304 { \
305 VSF_HAL_ASSERT(dma_ptr != NULL); \
306 return vsf_remap_dma_channel_cancel(dma_ptr, channel); \
307 } \
308 vsf_err_t vsf_imp_dma_channel_get_transferred_count(vsf_imp_dma_t *dma_ptr, \
309 int8_t channel) \
310 { \
311 VSF_HAL_ASSERT(dma_ptr != NULL); \
312 return vsf_remap_dma_channel_get_transferred_count(dma_ptr, channel); \
313 } \
314 vsf_dma_channel_status_t vsf_imp_dma_channel_status(vsf_imp_dma_t *dma_ptr, \
315 int8_t channel) \
316 { \
317 VSF_HAL_ASSERT(dma_ptr != NULL); \
318 return vsf_remap_dma_channel_status(dma_ptr, channel); \
319 }
320#endif
321
322
323/*============================ GLOBAL VARIABLES ==============================*/
324
325#define VSF_HAL_TEMPLATE_IMP_NAME _dma
326#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _DMA
327
328#if !defined(VSF_DMA_CFG_IMP_PREFIX) && !defined(VSF_DMA_CFG_IMP_DEVICE_PREFIX)
329# error "Please define VSF_DMA_CFG_IMP_PREFIX in dma driver"
330#endif
331
332#if !defined(VSF_DMA_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_DMA_CFG_IMP_DEVICE_UPCASE_PREFIX)
333# error "Please define VSF_DMA_CFG_IMP_UPCASE_PREFIX in dma driver"
334#endif
335
336#ifndef VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX
337# define VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX VSF_DMA_CFG_IMP_UPCASE_PREFIX
338#endif
339
340#ifdef VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
341# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
342#endif
343
345
346#undef VSF_DMA_CFG_IMP_PREFIX
347#undef VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX
348#undef VSF_DMA_CFG_IMP_UPCASE_PREFIX
349#undef VSF_DMA_CFG_IMP_DEVICE_PREFIX
350#undef VSF_DMA_CFG_IMP_DEVICE_UPCASE_PREFIX
351#undef VSF_DMA_CFG_IMP_LV0
352#undef VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
353#undef VSF_DMA_CFG_IMP_HAS_OP
354#undef VSF_DMA_CFG_IMP_EXTERN_OP
355
356#undef vsf_imp_dma_t
357#undef vsf_imp_dma_init
358#undef vsf_imp_dma_fini
359#undef vsf_imp_dma_get_configuration
360#undef vsf_imp_dma_capability
361#undef vsf_imp_dma_channel_acquire
362#undef vsf_imp_dma_channel_release
363#undef vsf_imp_dma_channel_config
364#undef vsf_imp_dma_channel_get_configuration
365#undef vsf_imp_dma_channel_start
366#undef vsf_imp_dma_channel_cancel
367#undef vsf_imp_dma_channel_get_transferred_count
368#undef vsf_imp_dma_channel_status
369
370#undef vsf_remap_dma_t
371#undef vsf_remap_dma_init
372#undef vsf_remap_dma_fini
373#undef vsf_remap_dma_get_configuration
374#undef vsf_remap_dma_capability
375#undef vsf_remap_dma_channel_acquire
376#undef vsf_remap_dma_channel_release
377#undef vsf_remap_dma_channel_config
378#undef vsf_remap_dma_channel_get_configuration
379#undef vsf_remap_dma_channel_start
380#undef vsf_remap_dma_channel_cancel
381#undef vsf_remap_dma_channel_get_transferred_count
382#undef vsf_remap_dma_channel_status
383
384#endif /* VSF_HAL_USE_DMA */
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
@ VSF_ERR_INVALID_PARAMETER
invalid parameter
Definition __type.h:52
#define NULL
Definition lvgl.h:26
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
DMA capability structure that can be reimplemented in specific HAL drivers.
Definition dma.h:229
uint8_t channel_count
Number of DMA channels.
Definition dma.h:234
Configuration structure for DMA.
Definition dma.h:223
dma configuration
Definition dma.h:185
DMA channel hint structure for channel allocation.
Definition dma.h:171
DMA scatter-gather descriptor structure.
Definition dma.h:213
Definition dma.h:181
Definition vsf_template_dma.h:814
vsf_adc_isr_t isr
Definition adc.h:111
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
Generated from commit: vsfteam/vsf@50fe5b4