18#if VSF_HAL_USE_DMA == ENABLED
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)
30#ifndef VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY
31# define VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
34#ifndef VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG_DESC
35# define VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG_DESC DISABLED
38#ifndef VSF_DMA_CFG_REIMPLEMENT_API_SG_START
39# define VSF_DMA_CFG_REIMPLEMENT_API_SG_START DISABLED
42#ifndef VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION
43# define VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
46#ifndef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION
47# define VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION DISABLED
50#ifdef VSF_DMA_CFG_IMP_REMAP_PREFIX
51# undef VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY
52# define VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
53# undef VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION
54# define VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
55# undef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION
56# define VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION ENABLED
59#if VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
60# ifndef VSF_DMA_CFG_CAPABILITY_IRQ_MASK
61# define VSF_DMA_CFG_CAPABILITY_IRQ_MASK VSF_DMA_IRQ_ALL_BITS_MASK
63# ifndef VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
64# define VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT 8
66# ifndef VSF_DMA_CFG_CAPABILITY_IRQ_COUNT
67# define VSF_DMA_CFG_CAPABILITY_IRQ_COUNT VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
69# ifndef VSF_DMA_CFG_CAPABILITY_SUPPORTED_MODES
70# define VSF_DMA_CFG_CAPABILITY_SUPPORTED_MODES VSF_DMA_MODE_ALL_BITS_MASK
72# ifndef VSF_DMA_CFG_CAPABILITY_MAX_TRANSFER_COUNT
73# define VSF_DMA_CFG_CAPABILITY_MAX_TRANSFER_COUNT 0xFFFFFFFF
75# ifndef VSF_DMA_CFG_CAPABILITY_ADDR_ALIGNMENT
76# define VSF_DMA_CFG_CAPABILITY_ADDR_ALIGNMENT 1
78# ifndef VSF_DMA_CFG_CAPABILITY_SUPPORT_SCATTER_GATHER
79# define VSF_DMA_CFG_CAPABILITY_SUPPORT_SCATTER_GATHER 0
86#if VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
90 .irq_mask = VSF_DMA_CFG_CAPABILITY_IRQ_MASK,
92 .irq_count = VSF_DMA_CFG_CAPABILITY_IRQ_COUNT,
93 .supported_modes = VSF_DMA_CFG_CAPABILITY_SUPPORTED_MODES,
94 .max_transfer_count = VSF_DMA_CFG_CAPABILITY_MAX_TRANSFER_COUNT,
95 .addr_alignment = VSF_DMA_CFG_CAPABILITY_ADDR_ALIGNMENT,
96 .support_scatter_gather = VSF_DMA_CFG_CAPABILITY_SUPPORT_SCATTER_GATHER,
99 return dma_capability;
103#if VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG_DESC == DISABLED
111 if ((
NULL == dma_ptr) || (
NULL == sg_desc_ptr) || (sg_count == 0)) {
120#if VSF_DMA_CFG_REIMPLEMENT_API_SG_START == DISABLED
121vsf_err_t vsf_real_dma_channel_sg_start(vsf_real_dma_t *dma_ptr,
uint8_t channel)
125 if (
NULL == dma_ptr) {
134#if VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
147#if VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION == DISABLED
162#undef VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY
163#undef VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION
164#undef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION
165#undef VSF_DMA_CFG_CAPABILITY_IRQ_MASK
166#undef VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
167#undef VSF_DMA_CFG_CAPABILITY_IRQ_COUNT
168#undef VSF_DMA_CFG_CAPABILITY_SUPPORTED_MODES
169#undef VSF_DMA_CFG_CAPABILITY_MAX_TRANSFER_COUNT
170#undef VSF_DMA_CFG_CAPABILITY_ADDR_ALIGNMENT
171#undef VSF_DMA_CFG_CAPABILITY_SUPPORT_SCATTER_GATHER
173#undef vsf_real_dma_capability
174#undef vsf_real_dma_get_configuration
175#undef vsf_real_dma_channel_get_configuration
182#ifdef VSF_DMA_CFG_IMP_REMAP_PREFIX
183# define vsf_imp_dma_t VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_t)
184# define vsf_imp_dma_init VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_init)
185# define vsf_imp_dma_fini VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_fini)
186# define vsf_imp_dma_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_get_configuration)
187# define vsf_imp_dma_capability VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_capability)
188# define vsf_imp_dma_channel_acquire VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_acquire)
189# define vsf_imp_dma_channel_release VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_release)
190# define vsf_imp_dma_channel_config VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_config)
191# define vsf_imp_dma_channel_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_get_configuration)
192# define vsf_imp_dma_channel_start VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_start)
193# define vsf_imp_dma_channel_cancel VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_cancel)
194# define vsf_imp_dma_channel_get_transferred_count VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_get_transferred_count)
195# define vsf_imp_dma_channel_status VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_status)
197# define vsf_remap_dma_t VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_t)
198# define vsf_remap_dma_init VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_init)
199# define vsf_remap_dma_fini VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_fini)
200# define vsf_remap_dma_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_get_configuration)
201# define vsf_remap_dma_capability VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_capability)
202# define vsf_remap_dma_channel_acquire VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_acquire)
203# define vsf_remap_dma_channel_release VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_release)
204# define vsf_remap_dma_channel_config VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_config)
205# define vsf_remap_dma_channel_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_get_configuration)
206# define vsf_remap_dma_channel_start VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_start)
207# define vsf_remap_dma_channel_cancel VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_cancel)
208# define vsf_remap_dma_channel_get_transferred_count VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_get_transferred_count)
209# define vsf_remap_dma_channel_status VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_status)
211# define VSF_DMA_CFG_IMP_REMAP_FUNCTIONS \
212 vsf_err_t vsf_imp_dma_init(vsf_imp_dma_t *dma_ptr) \
214 VSF_HAL_ASSERT(dma_ptr != NULL); \
215 return vsf_remap_dma_init(dma_ptr); \
217 void vsf_imp_dma_fini(vsf_imp_dma_t *dma_ptr) \
219 VSF_HAL_ASSERT(dma_ptr != NULL); \
220 vsf_remap_dma_fini(dma_ptr); \
222 vsf_err_t vsf_imp_dma_get_configuration(vsf_imp_dma_t *dma_ptr, \
223 vsf_dma_cfg_t *cfg_ptr) \
225 VSF_HAL_ASSERT(dma_ptr != NULL); \
226 VSF_HAL_ASSERT(cfg_ptr != NULL); \
227 return vsf_remap_dma_get_configuration(dma_ptr, cfg_ptr); \
229 vsf_dma_capability_t vsf_imp_dma_capability(vsf_imp_dma_t *dma_ptr) \
231 VSF_HAL_ASSERT(dma_ptr != NULL); \
232 return vsf_remap_dma_capability(dma_ptr); \
234 vsf_err_t vsf_imp_dma_channel_acquire(vsf_imp_dma_t *dma_ptr, \
235 vsf_dma_channel_hint_t *channel_hint_ptr) \
237 VSF_HAL_ASSERT(dma_ptr != NULL); \
238 return vsf_remap_dma_channel_acquire(dma_ptr, channel_hint_ptr); \
240 void vsf_imp_dma_channel_release(vsf_imp_dma_t *dma_ptr, int8_t channel) \
242 VSF_HAL_ASSERT(dma_ptr != NULL); \
243 vsf_remap_dma_channel_release(dma_ptr, channel); \
245 vsf_err_t vsf_imp_dma_channel_config(vsf_imp_dma_t *dma_ptr, int8_t channel, \
246 vsf_dma_channel_cfg_t *cfg_ptr) \
248 VSF_HAL_ASSERT(dma_ptr != NULL); \
249 return vsf_remap_dma_channel_config(dma_ptr, channel, cfg_ptr); \
251 vsf_err_t vsf_imp_dma_channel_get_configuration(vsf_imp_dma_t *dma_ptr, \
253 vsf_dma_channel_cfg_t *cfg_ptr) \
255 VSF_HAL_ASSERT(dma_ptr != NULL); \
256 VSF_HAL_ASSERT(cfg_ptr != NULL); \
257 return vsf_remap_dma_channel_get_configuration(dma_ptr, channel, cfg_ptr); \
259 vsf_err_t vsf_imp_dma_channel_start(vsf_imp_dma_t *dma_ptr, int8_t channel, \
260 uint32_t src_address, uint32_t dst_address, \
263 VSF_HAL_ASSERT(dma_ptr != NULL); \
264 return vsf_remap_dma_channel_start(dma_ptr, channel, src_address, \
265 dst_address, count); \
267 vsf_err_t vsf_imp_dma_channel_cancel(vsf_imp_dma_t *dma_ptr, int8_t channel) \
269 VSF_HAL_ASSERT(dma_ptr != NULL); \
270 return vsf_remap_dma_channel_cancel(dma_ptr, channel); \
272 vsf_err_t vsf_imp_dma_channel_get_transferred_count(vsf_imp_dma_t *dma_ptr, \
275 VSF_HAL_ASSERT(dma_ptr != NULL); \
276 return vsf_remap_dma_channel_get_transferred_count(dma_ptr, channel); \
278 vsf_dma_channel_status_t vsf_imp_dma_channel_status(vsf_imp_dma_t *dma_ptr, \
281 VSF_HAL_ASSERT(dma_ptr != NULL); \
282 return vsf_remap_dma_channel_status(dma_ptr, channel); \
289#define VSF_HAL_TEMPLATE_IMP_NAME _dma
290#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _DMA
292#if !defined(VSF_DMA_CFG_IMP_PREFIX) && !defined(VSF_DMA_CFG_IMP_DEVICE_PREFIX)
293# error "Please define VSF_DMA_CFG_IMP_PREFIX in dma driver"
296#if !defined(VSF_DMA_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_DMA_CFG_IMP_DEVICE_UPCASE_PREFIX)
297# error "Please define VSF_DMA_CFG_IMP_UPCASE_PREFIX in dma driver"
300#ifndef VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX
301# define VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX VSF_DMA_CFG_IMP_UPCASE_PREFIX
304#ifdef VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
305# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
310#undef VSF_DMA_CFG_IMP_PREFIX
311#undef VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX
312#undef VSF_DMA_CFG_IMP_UPCASE_PREFIX
313#undef VSF_DMA_CFG_IMP_DEVICE_PREFIX
314#undef VSF_DMA_CFG_IMP_DEVICE_UPCASE_PREFIX
315#undef VSF_DMA_CFG_IMP_LV0
316#undef VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
317#undef VSF_DMA_CFG_IMP_HAS_OP
318#undef VSF_DMA_CFG_IMP_EXTERN_OP
321#undef vsf_imp_dma_init
322#undef vsf_imp_dma_fini
323#undef vsf_imp_dma_get_configuration
324#undef vsf_imp_dma_capability
325#undef vsf_imp_dma_channel_acquire
326#undef vsf_imp_dma_channel_release
327#undef vsf_imp_dma_channel_config
328#undef vsf_imp_dma_channel_get_configuration
329#undef vsf_imp_dma_channel_start
330#undef vsf_imp_dma_channel_cancel
331#undef vsf_imp_dma_channel_get_transferred_count
332#undef vsf_imp_dma_channel_status
334#undef vsf_remap_dma_t
335#undef vsf_remap_dma_init
336#undef vsf_remap_dma_fini
337#undef vsf_remap_dma_get_configuration
338#undef vsf_remap_dma_capability
339#undef vsf_remap_dma_channel_acquire
340#undef vsf_remap_dma_channel_release
341#undef vsf_remap_dma_channel_config
342#undef vsf_remap_dma_channel_get_configuration
343#undef vsf_remap_dma_channel_start
344#undef vsf_remap_dma_channel_cancel
345#undef vsf_remap_dma_channel_get_transferred_count
346#undef vsf_remap_dma_channel_status
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:228
uint8_t channel_count
Number of DMA channels.
Definition dma.h:233
Configuration structure for DMA.
Definition dma.h:222
dma configuration
Definition dma.h:184
DMA scatter-gather descriptor structure.
Definition dma.h:212
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