18#if VSF_HAL_USE_SDIO == ENABLED
23#if defined(VSF_SDIO_CFG_IMP_RENAME_DEVICE_PREFIX) && (VSF_SDIO_CFG_IMP_RENAME_DEVICE_PREFIX == ENABLED)
24# define vsf_real_sdio_t VSF_MCONNECT(VSF_SDIO_CFG_IMP_DEVICE_PREFIX, _t)
25# define vsf_real_sdio_capability VSF_MCONNECT(VSF_SDIO_CFG_IMP_DEVICE_PREFIX, _capability)
26# define vsf_real_sdio_ctrl VSF_MCONNECT(VSF_SDIO_CFG_IMP_DEVICE_PREFIX, _ctrl)
27# define vsf_real_sdio_get_configuration VSF_MCONNECT(VSF_SDIO_CFG_IMP_DEVICE_PREFIX, _get_configuration)
28# define vsf_real_sdio_irq_clear VSF_MCONNECT(VSF_SDIO_CFG_IMP_DEVICE_PREFIX, _irq_clear)
30# define vsf_real_sdio_t VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_t)
31# define vsf_real_sdio_capability VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_capability)
32# define vsf_real_sdio_ctrl VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_ctrl)
33# define vsf_real_sdio_get_configuration VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_get_configuration)
34# define vsf_real_sdio_irq_clear VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_irq_clear)
37#ifndef VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY
38# define VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
41#ifndef VSF_SDIO_CFG_REIMPLEMENT_API_CTRL
42# define VSF_SDIO_CFG_REIMPLEMENT_API_CTRL DISABLED
45#ifndef VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION
46# define VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
49#ifndef VSF_SDIO_CFG_REIMPLEMENT_API_IRQ_CLEAR
50# define VSF_SDIO_CFG_REIMPLEMENT_API_IRQ_CLEAR DISABLED
53#ifdef VSF_SDIO_CFG_IMP_REMAP_PREFIX
54# undef VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY
55# define VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
56# undef VSF_SDIO_CFG_REIMPLEMENT_API_CTRL
57# define VSF_SDIO_CFG_REIMPLEMENT_API_CTRL ENABLED
58# undef VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION
59# define VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
60# undef VSF_SDIO_CFG_REIMPLEMENT_API_IRQ_CLEAR
61# define VSF_SDIO_CFG_REIMPLEMENT_API_IRQ_CLEAR ENABLED
64#if VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
65# ifndef VSF_SDIO_CFG_CAPCBILITY_MAX_FREQ_HZ
66# define VSF_SDIO_CFG_CAPCBILITY_MAX_FREQ_HZ (50 * 1000 * 1000)
68# ifndef VSF_SDIO_CFG_CAPCBILITY_BUS_WIDTH
69# define VSF_SDIO_CFG_CAPCBILITY_BUS_WIDTH SDIO_CAP_BUS_WIDTH_8
76#if VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
81 .bus_width = VSF_SDIO_CFG_CAPCBILITY_BUS_WIDTH,
86#if VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
99#if VSF_SDIO_CFG_REIMPLEMENT_API_CTRL == DISABLED
111#if VSF_SDIO_CFG_REIMPLEMENT_API_IRQ_CLEAR == DISABLED
125#undef VSF_SDIO_CFG_REIMPLEMENT_TYPE_CAPABILITY
126#undef VSF_SDIO_CFG_REIMPLEMENT_TYPE_CFG
127#undef VSF_SDIO_CFG_REIMPLEMENT_TYPE_IRQ_MASK
128#undef VSF_SDIO_CFG_REIMPLEMENT_TYPE_MODE
129#undef VSF_SDIO_CFG_REIMPLEMENT_TYPE_REQOP
130#undef VSF_SDIO_CFG_REIMPLEMENT_TYPE_REQSTS
131#undef VSF_SDIO_CFG_REIMPLEMENT_TYPE_STATUS
132#undef VSF_SDIO_CFG_REIMPLEMENT_TYPE_CTRL
133#undef VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY
134#undef VSF_SDIO_CFG_REIMPLEMENT_API_CTRL
135#undef VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION
136#undef VSF_SDIO_CFG_REIMPLEMENT_API_IRQ_CLEAR
137#undef VSF_SDIO_CFG_CAPCBILITY_MAX_FREQ_HZ
138#undef VSF_SDIO_CFG_CAPCBILITY_BUS_WIDTH
139#undef vsf_real_sdio_t
140#undef vsf_real_sdio_capability
141#undef vsf_real_sdio_ctrl
142#undef vsf_real_sdio_get_configuration
143#undef vsf_real_sdio_irq_clear
147#ifdef VSF_SDIO_CFG_IMP_REMAP_PREFIX
149# define vsf_imp_sdio_t VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_t)
150# define vsf_imp_sdio_init VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_init)
151# define vsf_imp_sdio_enable VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_enable)
152# define vsf_imp_sdio_disable VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_disable)
153# define vsf_imp_sdio_irq_enable VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_irq_enable)
154# define vsf_imp_sdio_irq_disable VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_irq_disable)
155# define vsf_imp_sdio_irq_clear VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_irq_clear)
156# define vsf_imp_sdio_status VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_status)
157# define vsf_imp_sdio_capability VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_capability)
158# define vsf_imp_sdio_set_clock VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_set_clock)
159# define vsf_imp_sdio_set_bus_width VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_set_bus_width)
160# define vsf_imp_sdio_host_request VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_host_request)
161# define vsf_imp_sdio_get_configuration VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_get_configuration)
162# define vsf_imp_sdio_ctrl VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_ctrl)
164# define vsf_remap_sdio_t VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_t)
165# define vsf_remap_sdio_init VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_init)
166# define vsf_remap_sdio_enable VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_enable)
167# define vsf_remap_sdio_disable VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_disable)
168# define vsf_remap_sdio_irq_enable VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_irq_enable)
169# define vsf_remap_sdio_irq_disable VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_irq_disable)
170# define vsf_remap_sdio_irq_clear VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_irq_clear)
171# define vsf_remap_sdio_status VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_status)
172# define vsf_remap_sdio_capability VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_capability)
173# define vsf_remap_sdio_set_clock VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_set_clock)
174# define vsf_remap_sdio_set_bus_width VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_set_bus_width)
175# define vsf_remap_sdio_host_request VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_host_request)
176# define vsf_remap_sdio_get_configuration VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_get_configuration)
177# define vsf_remap_sdio_ctrl VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_ctrl)
179# define VSF_SDIO_CFG_IMP_REMAP_FUNCTIONS \
180 vsf_err_t vsf_imp_sdio_init(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_cfg_t *cfg_ptr) \
182 VSF_HAL_ASSERT((sdio_ptr != NULL) && (cfg_ptr != NULL)); \
183 return vsf_remap_sdio_init(sdio_ptr, cfg_ptr); \
185 void vsf_imp_sdio_fini(vsf_imp_sdio_t *sdio_ptr) \
187 VSF_HAL_ASSERT(sdio_ptr != NULL); \
188 vsf_remap_sdio_fini(sdio_ptr); \
190 void vsf_imp_sdio_irq_enable(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_irq_mask_t irq_mask) \
192 VSF_HAL_ASSERT(sdio_ptr != NULL); \
193 vsf_remap_sdio_irq_enable(sdio_ptr, irq_mask); \
195 void vsf_imp_sdio_irq_disable(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_irq_mask_t irq_mask) \
197 VSF_HAL_ASSERT(sdio_ptr != NULL); \
198 vsf_remap_sdio_irq_disable(sdio_ptr, irq_mask); \
200 vsf_sdio_irq_mask_t vsf_imp_sdio_irq_clear(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_irq_mask_t irq_mask) \
202 VSF_HAL_ASSERT(sdio_ptr != NULL); \
203 return vsf_remap_sdio_irq_clear(sdio_ptr, irq_mask); \
205 vsf_sdio_status_t vsf_imp_sdio_status(vsf_imp_sdio_t *sdio_ptr) \
207 VSF_HAL_ASSERT(sdio_ptr != NULL); \
208 return vsf_remap_sdio_status(sdio_ptr); \
210 vsf_sdio_capability_t vsf_imp_sdio_capability(vsf_imp_sdio_t *sdio_ptr) \
212 VSF_HAL_ASSERT(sdio_ptr != NULL); \
213 return vsf_remap_sdio_capability(sdio_ptr); \
215 vsf_err_t vsf_imp_sdio_set_clock(vsf_imp_sdio_t *sdio_ptr, uint32_t clock_hz) \
217 VSF_HAL_ASSERT(sdio_ptr != NULL); \
218 return vsf_remap_sdio_set_clock(sdio_ptr, clock_hz); \
220 vsf_err_t vsf_imp_sdio_set_bus_width(vsf_imp_sdio_t *sdio_ptr, uint8_t bus_width) \
222 VSF_HAL_ASSERT(sdio_ptr != NULL); \
223 return vsf_remap_sdio_set_bus_width(sdio_ptr, bus_width); \
225 vsf_err_t vsf_imp_sdio_host_request(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_trans_t *trans) \
227 VSF_HAL_ASSERT(sdio_ptr != NULL); \
228 return vsf_remap_sdio_host_request(sdio_ptr, trans); \
230 vsf_err_t vsf_imp_sdio_get_configuration(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_cfg_t *cfg_ptr) \
232 VSF_HAL_ASSERT(sdio_ptr != NULL); \
233 return vsf_remap_sdio_get_configuration(sdio_ptr, cfg_ptr); \
235 vsf_err_t vsf_imp_sdio_ctrl(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_ctrl_t ctrl, void *param)\
237 VSF_HAL_ASSERT(sdio_ptr != NULL); \
238 return vsf_remap_sdio_ctrl(sdio_ptr, ctrl, param); \
247#define VSF_HAL_TEMPLATE_IMP_NAME _sdio
248#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _SDIO
250#if !defined(VSF_SDIO_CFG_IMP_PREFIX) && !defined(VSF_SDIO_CFG_IMP_DEVICE_PREFIX)
251# error "Please define VSF_SDIO_CFG_IMP_PREFIX in sdio driver"
254#if !defined(VSF_SDIO_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_SDIO_CFG_IMP_DEVICE_UPCASE_PREFIX)
255# error "Please define VSF_SDIO_CFG_IMP_UPCASE_PREFIX in sdio driver"
258#ifndef VSF_SDIO_CFG_IMP_COUNT_MASK_PREFIX
259# define VSF_SDIO_CFG_IMP_COUNT_MASK_PREFIX VSF_SDIO_CFG_IMP_UPCASE_PREFIX
262#ifdef VSF_SDIO_CFG_IMP_REMAP_FUNCTIONS
263# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_SDIO_CFG_IMP_REMAP_FUNCTIONS
268#undef VSF_SDIO_CFG_IMP_PREFIX
269#undef VSF_SDIO_CFG_IMP_COUNT_MASK_PREFIX
270#undef VSF_SDIO_CFG_IMP_UPCASE_PREFIX
271#undef VSF_SDIO_CFG_IMP_DEVICE_PREFIX
272#undef VSF_SDIO_CFG_IMP_DEVICE_UPCASE_PREFIX
273#undef VSF_SDIO_CFG_IMP_LV0
274#undef VSF_SDIO_CFG_IMP_REMAP_FUNCTIONS
275#undef VSF_SDIO_CFG_IMP_HAS_OP
276#undef VSF_SDIO_CFG_IMP_EXTERN_OP
277#undef VSF_SDIO_CFG_IMP_RENAME_DEVICE_PREFIX
280#undef vsf_imp_sdio_init
281#undef vsf_imp_sdio_enable
282#undef vsf_imp_sdio_disable
283#undef vsf_imp_sdio_irq_enable
284#undef vsf_imp_sdio_irq_disable
285#undef vsf_imp_sdio_irq_clear
286#undef vsf_imp_sdio_status
287#undef vsf_imp_sdio_capability
288#undef vsf_imp_sdio_set_clock
289#undef vsf_imp_sdio_set_bus_width
290#undef vsf_imp_sdio_host_request
291#undef vsf_imp_sdio_get_configuration
292#undef vsf_imp_sdio_ctrl
294#undef vsf_remap_sdio_t
295#undef vsf_remap_sdio_init
296#undef vsf_remap_sdio_enable
297#undef vsf_remap_sdio_disable
298#undef vsf_remap_sdio_irq_enable
299#undef vsf_remap_sdio_irq_disable
300#undef vsf_remap_sdio_irq_clear
301#undef vsf_remap_sdio_status
302#undef vsf_remap_sdio_capability
303#undef vsf_remap_sdio_set_clock
304#undef vsf_remap_sdio_set_bus_width
305#undef vsf_remap_sdio_host_request
306#undef vsf_remap_sdio_get_configuration
307#undef vsf_remap_sdio_ctrl
309#undef VSF_HAL_TEMPLATE_IMP_NAME
310#undef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
335#ifdef VSF_SDIO_CFG_MODE_CHECK_UNIQUE
337#ifndef VSF_SDIO_CHECK_UNIQUE_MODE_MODES
338# define VSF_SDIO_CHECK_UNIQUE_MODE_MODES \
355#ifdef VSF_SDIO_CUSTOM_MODE_VALUES
365#ifdef VSF_SDIO_CUSTOM_MODE_VALUES
366 , VSF_SDIO_CUSTOM_MODE_VALUES
370#undef VSF_SDIO_CHECK_UNIQUE_MODE_MODES
375#ifdef VSF_SDIO_CFG_IRQ_MASK_CHECK_UNIQUE
377#ifdef VSF_SDIO_CUSTOM_IRQ_MASK_VALUES
394#ifdef VSF_SDIO_CUSTOM_IRQ_MASK_VALUES
395 , VSF_SDIO_CUSTOM_IRQ_MASK_VALUES
402#ifdef VSF_SDIO_CFG_REQOP_CHECK_UNIQUE
404#ifndef VSF_SDIO_CHECK_UNIQUE_REQOP_CMDOP_MODES
405# define VSF_SDIO_CHECK_UNIQUE_REQOP_CMDOP_MODES \
408 SDIO_CMDOP_SINGLE_BLOCK, \
409 SDIO_CMDOP_MULTI_BLOCK
412#ifndef VSF_SDIO_CHECK_UNIQUE_REQOP_RW_MODES
413# define VSF_SDIO_CHECK_UNIQUE_REQOP_RW_MODES \
418#ifndef VSF_SDIO_CHECK_UNIQUE_REQOP_RESP_MODES
419# define VSF_SDIO_CHECK_UNIQUE_REQOP_RESP_MODES \
420 SDIO_CMDOP_RESP_BUSY, \
422 __SDIO_CMDOP_RESP_SHORT, \
423 __SDIO_CMDOP_RESP_SHORT_CRC, \
424 __SDIO_CMDOP_RESP_LONG_CRC
427#ifndef VSF_SDIO_CHECK_UNIQUE_REQOP_SPECIAL_MODES
428# define VSF_SDIO_CHECK_UNIQUE_REQOP_SPECIAL_MODES \
429 SDIO_CMDOP_CLKHOLD, \
430 SDIO_CMDOP_TRANS_STOP
457#ifdef VSF_SDIO_CUSTOM_REQOP_VALUES
470 VSF_SDIO_CFG_REQOP_CHECK_UNIQUE,
478#ifdef VSF_SDIO_CUSTOM_REQOP_VALUES
479 , VSF_SDIO_CUSTOM_REQOP_VALUES
483#undef VSF_SDIO_CHECK_UNIQUE_REQOP_CMDOP_MODES
484#undef VSF_SDIO_CHECK_UNIQUE_REQOP_RW_MODES
485#undef VSF_SDIO_CHECK_UNIQUE_REQOP_RESP_MODES
486#undef VSF_SDIO_CHECK_UNIQUE_REQOP_SPECIAL_MODES
491#ifdef VSF_SDIO_CFG_REQSTS_CHECK_UNIQUE
493#ifdef VSF_SDIO_CUSTOM_REQSTS_VALUES
503 VSF_SDIO_CFG_REQSTS_CHECK_UNIQUE,
512#ifdef VSF_SDIO_CUSTOM_REQSTS_VALUES
513 , VSF_SDIO_CUSTOM_REQSTS_VALUES
518#undef VSF_SDIO_CFG_MODE_CHECK_UNIQUE
519#undef VSF_SDIO_CFG_IRQ_MASK_CHECK_UNIQUE
520#undef VSF_SDIO_CFG_REQOP_CHECK_UNIQUE
521#undef VSF_SDIO_CFG_REQSTS_CHECK_UNIQUE
522#undef VSF_SDIO_CUSTOM_MODE_VALUES
523#undef VSF_SDIO_CUSTOM_IRQ_MASK_VALUES
524#undef VSF_SDIO_CUSTOM_REQOP_VALUES
525#undef VSF_SDIO_CUSTOM_REQSTS_VALUES
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
@ SDIO_CMDOP_READ
Definition sdio.h:43
@ SDIO_CMDOP_SINGLE_BLOCK
Definition sdio.h:39
@ __SDIO_CMDOP_RESP
Definition sdio.h:46
@ SDIO_CMDOP_BYTE
Definition sdio.h:54
@ SDIO_CMDOP_STREAM
Definition sdio.h:55
@ SDIO_CMDOP_TRANS_STOP
Definition sdio.h:53
@ __SDIO_CMDOP_RESP_LONG_CRC
Definition sdio.h:49
@ SDIO_CMDOP_WRITE
Definition sdio.h:44
@ __SDIO_CMDOP_RESP_SHORT
Definition sdio.h:47
@ SDIO_CMDOP_CLKHOLD
Definition sdio.h:52
@ SDIO_CMDOP_MULTI_BLOCK
Definition sdio.h:40
@ __SDIO_CMDOP_RESP_SHORT_CRC
Definition sdio.h:48
vsf_sdio_irq_mask_t
Definition sdio.h:78
@ SDIO_IRQ_MASK_HOST_DATA_DONE
Definition sdio.h:80
@ SDIO_IRQ_MASK_HOST_RESP_DONE
Definition sdio.h:79
@ SDIO_REQSTS_BUSY
Definition sdio.h:91
@ SDIO_REQSTS_DATA_BUSY
Definition sdio.h:90
@ SDIO_REQSTS_DONE
Definition sdio.h:86
@ SDIO_REQSTS_ERR_RESP_CRC
Definition sdio.h:88
@ SDIO_REQSTS_ERR_RESP_NONE
Definition sdio.h:87
@ SDIO_REQSTS_ERR_DATA_CRC
Definition sdio.h:89
#define NULL
Definition lvgl.h:26
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
Definition vsf_template_sdio.h:787
uint32_t max_freq_hz
Definition vsf_template_sdio.h:796
sdio configuration
Definition vsf_template_sdio.h:901
#define VSF_SDIO_CFG_MODE_CHECK_UNIQUE
Definition sdio.c:285
#define VSF_SDIO_CFG_IRQ_MASK_CHECK_UNIQUE
Definition sdio.c:286
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
@ SDIO_CMDOP_RESP_BUSY
Definition vsf_template_sdio.h:715
@ SDIO_IRQ_MASK_HOST_DATA_ABORT
Definition vsf_template_sdio.h:755
@ SDIO_MODE_SLAVE
Definition vsf_template_sdio.h:691
@ SDIO_MODE_HOST
Definition vsf_template_sdio.h:690
vsf_sdio_ctrl_t
SDIO control commands for hardware-specific operations.
Definition vsf_template_sdio.h:813
#define VSF_HAL_CHECK_UNIQUE_CUSTOM(__CHECK_FUNC,...)
Definition vsf_template_static_assert_unique.h:2426