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_channel_sg_config_desc VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_sg_config_desc)
26#define vsf_real_dma_channel_sg_start VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_sg_start)
28#ifndef VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY
29# define VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
32#ifndef VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG_DESC
33# define VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG_DESC DISABLED
36#ifndef VSF_DMA_CFG_REIMPLEMENT_API_SG_START
37# define VSF_DMA_CFG_REIMPLEMENT_API_SG_START DISABLED
40#ifdef VSF_DMA_CFG_IMP_REMAP_PREFIX
41# undef VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY
42# define VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
45#if VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
46# ifndef VSF_DMA_CFG_CAPABILITY_IRQ_MASK
47# define VSF_DMA_CFG_CAPABILITY_IRQ_MASK VSF_DMA_IRQ_ALL_BITS_MASK
49# ifndef VSF_DMA_CFG_CAPABILITY_MAX_REQUEST_COUNT
50# define VSF_DMA_CFG_CAPABILITY_MAX_REQUEST_COUNT 0xFFFFFFFF
52# ifndef VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
53# define VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT 8
60#if VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
64 .irq_mask = VSF_DMA_CFG_CAPABILITY_IRQ_MASK,
66 .channel_count = VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT,
69 return dma_capability;
73#if VSF_DMA_CFG_REIMPLEMENT_API_SG_CONFIG == DISABLED
81 if ((
NULL == dma_ptr) || (
NULL == sg_desc_ptr) || (sg_count == 0)) {
90#if VSF_DMA_CFG_REIMPLEMENT_API_SG_START == DISABLED
91vsf_err_t vsf_real_dma_channel_sg_start(vsf_real_dma_t *dma_ptr,
uint8_t channel)
95 if (
NULL == dma_ptr) {
106#undef VSF_DMA_CFG_REIMPLEMENT_API_CAPABILITY
107#undef VSF_DMA_CFG_CAPABILITY_IRQ_MASK
108#undef VSF_DMA_CFG_CAPABILITY_MAX_REQUEST_COUNT
109#undef VSF_DMA_CFG_CAPABILITY_CHANNEL_COUNT
111#undef vsf_real_dma_capability
118#ifdef VSF_DMA_CFG_IMP_REMAP_PREFIX
119# define vsf_imp_dma_t VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_t)
120# define vsf_imp_dma_init VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_init)
121# define vsf_imp_dma_fini VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_fini)
122# define vsf_imp_dma_capability VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_capability)
123# define vsf_imp_dma_channel_request VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_request)
124# define vsf_imp_dma_channel_release VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_release)
125# define vsf_imp_dma_channel_config VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_config)
126# define vsf_imp_dma_channel_start VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_start)
127# define vsf_imp_dma_channel_cancel VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_cancel)
128# define vsf_imp_dma_channel_get_transferred_count VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_get_transferred_count)
129# define vsf_imp_dma_channel_status VSF_MCONNECT(VSF_DMA_CFG_IMP_PREFIX, _dma_channel_status)
131# define vsf_remap_dma_t VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_t)
132# define vsf_remap_dma_init VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_init)
133# define vsf_remap_dma_fini VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_fini)
134# define vsf_remap_dma_capability VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_capability)
135# define vsf_remap_dma_channel_request VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_request)
136# define vsf_remap_dma_channel_release VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_release)
137# define vsf_remap_dma_channel_config VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_config)
138# define vsf_remap_dma_channel_start VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_start)
139# define vsf_remap_dma_channel_cancel VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_cancel)
140# define vsf_remap_dma_channel_get_transferred_count VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_get_transferred_count)
141# define vsf_remap_dma_channel_status VSF_MCONNECT(VSF_DMA_CFG_IMP_REMAP_PREFIX, _dma_channel_status)
143# define VSF_DMA_CFG_IMP_REMAP_FUNCTIONS \
144 vsf_err_t vsf_imp_dma_init(vsf_imp_dma_t *dma_ptr) \
146 VSF_HAL_ASSERT(dma_ptr != NULL); \
147 return vsf_remap_dma_init(dma_ptr); \
149 void vsf_imp_dma_fini(vsf_imp_dma_t *dma_ptr) \
151 VSF_HAL_ASSERT(dma_ptr != NULL); \
152 vsf_remap_dma_fini(dma_ptr); \
154 vsf_dma_capability_t vsf_imp_dma_capability(vsf_imp_dma_t *dma_ptr) \
156 VSF_HAL_ASSERT(dma_ptr != NULL); \
157 return vsf_remap_dma_capability(dma_ptr); \
159 int8_t vsf_imp_dma_channel_request(vsf_imp_dma_t *dma_ptr, void *filter_param) \
161 VSF_HAL_ASSERT(dma_ptr != NULL); \
162 return vsf_remap_dma_channel_request(dma_ptr, filter_param); \
164 void vsf_imp_dma_channel_release(vsf_imp_dma_t *dma_ptr, int8_t channel) \
166 VSF_HAL_ASSERT(dma_ptr != NULL); \
167 vsf_remap_dma_channel_release(dma_ptr, channel); \
169 vsf_err_t vsf_imp_dma_channel_config(vsf_imp_dma_t *dma_ptr, int8_t channel, \
170 vsf_dma_channel_cfg_t *cfg_ptr) \
172 VSF_HAL_ASSERT(dma_ptr != NULL); \
173 return vsf_remap_dma_channel_config(dma_ptr, channel, cfg_ptr); \
175 vsf_err_t vsf_imp_dma_channel_start(vsf_imp_dma_t *dma_ptr, int8_t channel, \
176 uint32_t src_address, uint32_t dst_address, \
179 VSF_HAL_ASSERT(dma_ptr != NULL); \
180 return vsf_remap_dma_channel_start(dma_ptr, channel, src_address, \
181 dst_address, count); \
183 vsf_err_t vsf_imp_dma_channel_cancel(vsf_imp_dma_t *dma_ptr, int8_t channel) \
185 VSF_HAL_ASSERT(dma_ptr != NULL); \
186 return vsf_remap_dma_channel_cancel(dma_ptr, channel); \
188 vsf_err_t vsf_imp_dma_channel_get_transferred_count(vsf_imp_dma_t *dma_ptr, \
191 VSF_HAL_ASSERT(dma_ptr != NULL); \
192 return vsf_remap_dma_channel_get_transferred_count(dma_ptr, channel); \
194 vsf_dma_channel_status_t vsf_imp_dma_channel_status(vsf_imp_dma_t *dma_ptr, \
197 VSF_HAL_ASSERT(dma_ptr != NULL); \
198 return vsf_remap_dma_channel_status(dma_ptr, channel); \
205#define VSF_HAL_TEMPLATE_IMP_NAME _dma
206#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _DMA
208#if !defined(VSF_DMA_CFG_IMP_PREFIX) && !defined(VSF_DMA_CFG_IMP_DEVICE_PREFIX)
209# error "Please define VSF_DMA_CFG_IMP_PREFIX in dma driver"
212#if !defined(VSF_DMA_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_DMA_CFG_IMP_DEVICE_UPCASE_PREFIX)
213# error "Please define VSF_DMA_CFG_IMP_UPCASE_PREFIX in dma driver"
216#ifndef VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX
217# define VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX VSF_DMA_CFG_IMP_UPCASE_PREFIX
220#ifdef VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
221# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
226#undef VSF_DMA_CFG_IMP_PREFIX
227#undef VSF_DMA_CFG_IMP_COUNT_MASK_PREFIX
228#undef VSF_DMA_CFG_IMP_UPCASE_PREFIX
229#undef VSF_DMA_CFG_IMP_DEVICE_PREFIX
230#undef VSF_DMA_CFG_IMP_DEVICE_UPCASE_PREFIX
231#undef VSF_DMA_CFG_IMP_LV0
232#undef VSF_DMA_CFG_IMP_REMAP_FUNCTIONS
233#undef VSF_DMA_CFG_IMP_HAS_OP
234#undef VSF_DMA_CFG_IMP_EXTERN_OP
237#undef vsf_imp_dma_init
238#undef vsf_imp_dma_fini
239#undef vsf_imp_dma_capability
240#undef vsf_imp_dma_channel_request
241#undef vsf_imp_dma_channel_release
242#undef vsf_imp_dma_channel_config
243#undef vsf_imp_dma_channel_start
244#undef vsf_imp_dma_channel_cancel
245#undef vsf_imp_dma_channel_get_transferred_count
246#undef vsf_imp_dma_channel_status
248#undef vsf_remap_dma_t
249#undef vsf_remap_dma_init
250#undef vsf_remap_dma_fini
251#undef vsf_remap_dma_capability
252#undef vsf_remap_dma_channel_request
253#undef vsf_remap_dma_channel_release
254#undef vsf_remap_dma_channel_config
255#undef vsf_remap_dma_channel_start
256#undef vsf_remap_dma_channel_cancel
257#undef vsf_remap_dma_channel_get_transferred_count
258#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:478
uint32_t max_request_count
Definition vsf_template_dma.h:484
DMA scatter-gather descriptor structure.
Definition vsf_template_dma.h:457
Definition vsf_template_dma.h:427
vsf_adc_isr_t isr
Definition adc.h:109
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36