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)
29#define vsf_real_dma_channel_acquire_from_all VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_acquire_from_all)
31#ifndef VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY
32# define VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
35#ifndef VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG_DESC
36# define VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG_DESC DISABLED
39#ifndef VSF_DMA_CFG_REIMPLEMENT_API_SG_START
40# define VSF_DMA_CFG_REIMPLEMENT_API_SG_START DISABLED
43#ifndef VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION
44# define VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
47#ifndef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION
48# define VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION \
52#ifndef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_FROM_ALL
53# define VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_FROM_ALL \
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
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
70# ifndef VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
71# define VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT 8
73# ifndef VSF_DMA_CFG_CAPABILITY_IRQ_COUNT
74# define VSF_DMA_CFG_CAPABILITY_IRQ_COUNT VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
76# ifndef VSF_DMA_CFG_CAPABILITY_SUPPORTED_MODES
77# define VSF_DMA_CFG_CAPABILITY_SUPPORTED_MODES VSF_DMA_MODE_ALL_BITS_MASK
79# ifndef VSF_DMA_CFG_CAPABILITY_MAX_TRANSFER_COUNT
80# define VSF_DMA_CFG_CAPABILITY_MAX_TRANSFER_COUNT 0xFFFFFFFF
82# ifndef VSF_DMA_CFG_CAPABILITY_ADDR_ALIGNMENT
83# define VSF_DMA_CFG_CAPABILITY_ADDR_ALIGNMENT 1
85# ifndef VSF_DMA_CFG_CAPABILITY_SUPPORT_SCATTER_GATHER
86# define VSF_DMA_CFG_CAPABILITY_SUPPORT_SCATTER_GATHER 0
93#if VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
97 .irq_mask = VSF_DMA_CFG_CAPABILITY_IRQ_MASK,
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,
106 return dma_capability;
110#if VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG_DESC == DISABLED
118 if ((
NULL == dma_ptr) || (
NULL == sg_desc_ptr) || (sg_count == 0)) {
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)
132 if (
NULL == dma_ptr) {
141#if VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
154#if VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION == DISABLED
167#ifndef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_ADJUST_HINT
168# define VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_ADJUST_HINT DISABLED
171#if VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_ACQUIRE_FROM_ALL == DISABLED
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); \
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
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
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
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)
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)
247# define VSF_DMA_CFG_IMP_REMAP_FUNCTIONS \
248 vsf_err_t vsf_imp_dma_init(vsf_imp_dma_t *dma_ptr) \
250 VSF_HAL_ASSERT(dma_ptr != NULL); \
251 return vsf_remap_dma_init(dma_ptr); \
253 void vsf_imp_dma_fini(vsf_imp_dma_t *dma_ptr) \
255 VSF_HAL_ASSERT(dma_ptr != NULL); \
256 vsf_remap_dma_fini(dma_ptr); \
258 vsf_err_t vsf_imp_dma_get_configuration(vsf_imp_dma_t *dma_ptr, \
259 vsf_dma_cfg_t *cfg_ptr) \
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); \
265 vsf_dma_capability_t vsf_imp_dma_capability(vsf_imp_dma_t *dma_ptr) \
267 VSF_HAL_ASSERT(dma_ptr != NULL); \
268 return vsf_remap_dma_capability(dma_ptr); \
270 vsf_err_t vsf_imp_dma_channel_acquire(vsf_imp_dma_t *dma_ptr, \
271 vsf_dma_channel_hint_t *channel_hint_ptr) \
273 VSF_HAL_ASSERT(dma_ptr != NULL); \
274 return vsf_remap_dma_channel_acquire(dma_ptr, channel_hint_ptr); \
276 void vsf_imp_dma_channel_release(vsf_imp_dma_t *dma_ptr, int8_t channel) \
278 VSF_HAL_ASSERT(dma_ptr != NULL); \
279 vsf_remap_dma_channel_release(dma_ptr, channel); \
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) \
284 VSF_HAL_ASSERT(dma_ptr != NULL); \
285 return vsf_remap_dma_channel_config(dma_ptr, channel, cfg_ptr); \
287 vsf_err_t vsf_imp_dma_channel_get_configuration(vsf_imp_dma_t *dma_ptr, \
289 vsf_dma_channel_cfg_t *cfg_ptr) \
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); \
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, \
299 VSF_HAL_ASSERT(dma_ptr != NULL); \
300 return vsf_remap_dma_channel_start(dma_ptr, channel, src_address, \
301 dst_address, count); \
303 vsf_err_t vsf_imp_dma_channel_cancel(vsf_imp_dma_t *dma_ptr, int8_t channel) \
305 VSF_HAL_ASSERT(dma_ptr != NULL); \
306 return vsf_remap_dma_channel_cancel(dma_ptr, channel); \
308 vsf_err_t vsf_imp_dma_channel_get_transferred_count(vsf_imp_dma_t *dma_ptr, \
311 VSF_HAL_ASSERT(dma_ptr != NULL); \
312 return vsf_remap_dma_channel_get_transferred_count(dma_ptr, channel); \
314 vsf_dma_channel_status_t vsf_imp_dma_channel_status(vsf_imp_dma_t *dma_ptr, \
317 VSF_HAL_ASSERT(dma_ptr != NULL); \
318 return vsf_remap_dma_channel_status(dma_ptr, channel); \
325#define VSF_HAL_TEMPLATE_IMP_NAME _dma
326#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _DMA
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"
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"
336#ifndef VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX
337# define VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX VSF_DMA_CFG_IMP_UPCASE_PREFIX
340#ifdef VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
341# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
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
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
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
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 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