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_MAX_REQUEST_COUNT
64# define VSF_DMA_CFG_CAPABILITY_MAX_REQUEST_COUNT 0xFFFFFFFF
66# ifndef VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
67# define VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT 8
74#if VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
78 .irq_mask = VSF_DMA_CFG_CAPABILITY_IRQ_MASK,
80 .channel_count = VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT,
83 return dma_capability;
87#if VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG == DISABLED
95 if ((
NULL == dma_ptr) || (
NULL == sg_desc_ptr) || (sg_count == 0)) {
104#if VSF_DMA_CFG_REIMPLEMENT_API_SG_START == DISABLED
105vsf_err_t vsf_real_dma_channel_sg_start(vsf_real_dma_t *dma_ptr,
uint8_t channel)
109 if (
NULL == dma_ptr) {
118#if VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
131#if VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION == DISABLED
146#undef VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY
147#undef VSF_DMA_CFG_REIMPLEMENT_API_GET_CONFIGURATION
148#undef VSF_DMA_CFG_REIMPLEMENT_API_CHANNEL_GET_CONFIGURATION
149#undef VSF_DMA_CFG_CAPABILITY_IRQ_MASK
150#undef VSF_DMA_CFG_CAPABILITY_MAX_REQUEST_COUNT
151#undef VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
153#undef vsf_real_dma_capability
154#undef vsf_real_dma_get_configuration
155#undef vsf_real_dma_channel_get_configuration
162#ifdef VSF_DMA_CFG_IMP_REMAP_PREFIX
163# define vsf_imp_dma_t VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_t)
164# define vsf_imp_dma_init VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_init)
165# define vsf_imp_dma_fini VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_fini)
166# define vsf_imp_dma_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_get_configuration)
167# define vsf_imp_dma_capability VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_capability)
168# define vsf_imp_dma_channel_request VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_request)
169# define vsf_imp_dma_channel_release VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_release)
170# define vsf_imp_dma_channel_config VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_config)
171# define vsf_imp_dma_channel_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_get_configuration)
172# define vsf_imp_dma_channel_start VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_start)
173# define vsf_imp_dma_channel_cancel VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_cancel)
174# define vsf_imp_dma_channel_get_transferred_count VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_get_transferred_count)
175# define vsf_imp_dma_channel_status VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_status)
177# define vsf_remap_dma_t VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_t)
178# define vsf_remap_dma_init VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_init)
179# define vsf_remap_dma_fini VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_fini)
180# define vsf_remap_dma_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_get_configuration)
181# define vsf_remap_dma_capability VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_capability)
182# define vsf_remap_dma_channel_request VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_request)
183# define vsf_remap_dma_channel_release VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_release)
184# define vsf_remap_dma_channel_config VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_config)
185# define vsf_remap_dma_channel_get_configuration VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_get_configuration)
186# define vsf_remap_dma_channel_start VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_start)
187# define vsf_remap_dma_channel_cancel VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_cancel)
188# define vsf_remap_dma_channel_get_transferred_count VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_get_transferred_count)
189# define vsf_remap_dma_channel_status VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_status)
191# define VSF_DMA_CFG_IMP_REMAP_FUNCTIONS \
192 vsf_err_t vsf_imp_dma_init(vsf_imp_dma_t *dma_ptr) \
194 VSF_HAL_ASSERT(dma_ptr != NULL); \
195 return vsf_remap_dma_init(dma_ptr); \
197 void vsf_imp_dma_fini(vsf_imp_dma_t *dma_ptr) \
199 VSF_HAL_ASSERT(dma_ptr != NULL); \
200 vsf_remap_dma_fini(dma_ptr); \
202 vsf_err_t vsf_imp_dma_get_configuration(vsf_imp_dma_t *dma_ptr, vsf_dma_cfg_t *cfg_ptr) \
204 VSF_HAL_ASSERT(dma_ptr != NULL); \
205 VSF_HAL_ASSERT(cfg_ptr != NULL); \
206 return vsf_remap_dma_get_configuration(dma_ptr, cfg_ptr); \
208 vsf_dma_capability_t vsf_imp_dma_capability(vsf_imp_dma_t *dma_ptr) \
210 VSF_HAL_ASSERT(dma_ptr != NULL); \
211 return vsf_remap_dma_capability(dma_ptr); \
213 int8_t vsf_imp_dma_channel_request(vsf_imp_dma_t *dma_ptr, void *filter_param) \
215 VSF_HAL_ASSERT(dma_ptr != NULL); \
216 return vsf_remap_dma_channel_request(dma_ptr, filter_param); \
218 void vsf_imp_dma_channel_release(vsf_imp_dma_t *dma_ptr, int8_t channel) \
220 VSF_HAL_ASSERT(dma_ptr != NULL); \
221 vsf_remap_dma_channel_release(dma_ptr, channel); \
223 vsf_err_t vsf_imp_dma_channel_config(vsf_imp_dma_t *dma_ptr, int8_t channel, \
224 vsf_dma_channel_cfg_t *cfg_ptr) \
226 VSF_HAL_ASSERT(dma_ptr != NULL); \
227 return vsf_remap_dma_channel_config(dma_ptr, channel, cfg_ptr); \
229 vsf_err_t vsf_imp_dma_channel_get_configuration(vsf_imp_dma_t *dma_ptr, int8_t channel, \
230 vsf_dma_channel_cfg_t *cfg_ptr) \
232 VSF_HAL_ASSERT(dma_ptr != NULL); \
233 VSF_HAL_ASSERT(cfg_ptr != NULL); \
234 return vsf_remap_dma_channel_get_configuration(dma_ptr, channel, cfg_ptr); \
236 vsf_err_t vsf_imp_dma_channel_start(vsf_imp_dma_t *dma_ptr, int8_t channel, \
237 uint32_t src_address, uint32_t dst_address, \
240 VSF_HAL_ASSERT(dma_ptr != NULL); \
241 return vsf_remap_dma_channel_start(dma_ptr, channel, src_address, \
242 dst_address, count); \
244 vsf_err_t vsf_imp_dma_channel_cancel(vsf_imp_dma_t *dma_ptr, int8_t channel) \
246 VSF_HAL_ASSERT(dma_ptr != NULL); \
247 return vsf_remap_dma_channel_cancel(dma_ptr, channel); \
249 vsf_err_t vsf_imp_dma_channel_get_transferred_count(vsf_imp_dma_t *dma_ptr, \
252 VSF_HAL_ASSERT(dma_ptr != NULL); \
253 return vsf_remap_dma_channel_get_transferred_count(dma_ptr, channel); \
255 vsf_dma_channel_status_t vsf_imp_dma_channel_status(vsf_imp_dma_t *dma_ptr, \
258 VSF_HAL_ASSERT(dma_ptr != NULL); \
259 return vsf_remap_dma_channel_status(dma_ptr, channel); \
266#define VSF_HAL_TEMPLATE_IMP_NAME _dma
267#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _DMA
269#if !defined(VSF_DMA_CFG_IMP_PREFIX) && !defined(VSF_DMA_CFG_IMP_DEVICE_PREFIX)
270# error "Please define VSF_DMA_CFG_IMP_PREFIX in dma driver"
273#if !defined(VSF_DMA_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_DMA_CFG_IMP_DEVICE_UPCASE_PREFIX)
274# error "Please define VSF_DMA_CFG_IMP_UPCASE_PREFIX in dma driver"
277#ifndef VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX
278# define VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX VSF_DMA_CFG_IMP_UPCASE_PREFIX
281#ifdef VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
282# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
287#undef VSF_DMA_CFG_IMP_PREFIX
288#undef VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX
289#undef VSF_DMA_CFG_IMP_UPCASE_PREFIX
290#undef VSF_DMA_CFG_IMP_DEVICE_PREFIX
291#undef VSF_DMA_CFG_IMP_DEVICE_UPCASE_PREFIX
292#undef VSF_DMA_CFG_IMP_LV0
293#undef VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
294#undef VSF_DMA_CFG_IMP_HAS_OP
295#undef VSF_DMA_CFG_IMP_EXTERN_OP
298#undef vsf_imp_dma_init
299#undef vsf_imp_dma_fini
300#undef vsf_imp_dma_get_configuration
301#undef vsf_imp_dma_capability
302#undef vsf_imp_dma_channel_request
303#undef vsf_imp_dma_channel_release
304#undef vsf_imp_dma_channel_config
305#undef vsf_imp_dma_channel_get_configuration
306#undef vsf_imp_dma_channel_start
307#undef vsf_imp_dma_channel_cancel
308#undef vsf_imp_dma_channel_get_transferred_count
309#undef vsf_imp_dma_channel_status
311#undef vsf_remap_dma_t
312#undef vsf_remap_dma_init
313#undef vsf_remap_dma_fini
314#undef vsf_remap_dma_get_configuration
315#undef vsf_remap_dma_capability
316#undef vsf_remap_dma_channel_request
317#undef vsf_remap_dma_channel_release
318#undef vsf_remap_dma_channel_config
319#undef vsf_remap_dma_channel_get_configuration
320#undef vsf_remap_dma_channel_start
321#undef vsf_remap_dma_channel_cancel
322#undef vsf_remap_dma_channel_get_transferred_count
323#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
Definition vsf_template_dma.h:480
uint32_t max_request_count
Definition vsf_template_dma.h:486
Configuration structure for DMA.
Definition vsf_template_dma.h:399
dma configuration
Definition vsf_template_dma.h:435
DMA scatter-gather descriptor structure.
Definition vsf_template_dma.h:459
Definition vsf_template_dma.h:429
vsf_adc_isr_t isr
Definition adc.h:107
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36