VSF Documented
sdio_template.inc
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#if VSF_HAL_USE_SDIO == ENABLED
19
20/*============================ INCLUDES ======================================*/
21/*============================ MACROS ========================================*/
22
23#define vsf_real_sdio_t VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_t)
24#define vsf_real_sdio_capability VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_capability)
25#define vsf_real_sdio_get_configuration VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_get_configuration)
26
27#ifndef VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY
28
29#ifndef VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION
30# define VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
31#endif
32# define VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
33#endif
34
35#ifdef VSF_SDIO_CFG_IMP_REMAP_PREFIX
36# undef VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY
37# define VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
38# undef VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION
39# define VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
40#endif
41
42#if VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
43# ifndef VSF_SDIO_CFG_CAPCBILITY_MAX_FREQ_HZ
44# define VSF_SDIO_CFG_CAPCBILITY_MAX_FREQ_HZ (50 * 1000 * 1000)
45# endif
46# ifndef VSF_SDIO_CFG_CAPCBILITY_BUS_WIDTH
47# define VSF_SDIO_CFG_CAPCBILITY_BUS_WIDTH SDIO_CAP_BUS_WIDTH_8
48# endif
49#endif
50
51/*============================ LOCAL VARIABLES ===============================*/
52/*============================ IMPLEMENTATION ================================*/
53
54#if VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
55vsf_sdio_capability_t vsf_real_sdio_capability(vsf_real_sdio_t *sdio_ptr)
56{
57 return (vsf_sdio_capability_t){
58 .max_freq_hz = VSF_SDIO_CFG_CAPCBILITY_MAX_FREQ_HZ,
59 .bus_width = VSF_SDIO_CFG_CAPCBILITY_BUS_WIDTH,
60 };
61}
62#endif
63
64#if VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
65vsf_err_t vsf_real_sdio_get_configuration(vsf_real_sdio_t *sdio_ptr, vsf_sdio_cfg_t *cfg_ptr)
66{
67 VSF_HAL_ASSERT(NULL != sdio_ptr);
68 VSF_HAL_ASSERT(NULL != cfg_ptr);
69
70 // Default implementation: not supported, trigger assertion
72
74}
75#endif
76
77/*============================ MACROS ========================================*/
78
79#undef VSF_SDIO_CFG_REIMPLEMENT_API_CAPABILITY
80#undef VSF_SDIO_CFG_REIMPLEMENT_API_GET_CONFIGURATION
81#undef VSF_SDIO_CFG_CAPCBILITY_MAX_FREQ_HZ
82#undef VSF_SDIO_CFG_CAPCBILITY_BUS_WIDTH
83#undef vsf_real_sdio_t
84#undef vsf_real_sdio_capability
85#undef vsf_real_sdio_get_configuration
86
87/*============================ MACROS ========================================*/
88
89#ifdef VSF_SDIO_CFG_IMP_REMAP_PREFIX
90
91# define vsf_imp_sdio_t VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_t)
92# define vsf_imp_sdio_init VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_init)
93# define vsf_imp_sdio_enable VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_enable)
94# define vsf_imp_sdio_disable VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_disable)
95# define vsf_imp_sdio_irq_enable VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_irq_enable)
96# define vsf_imp_sdio_irq_disable VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_irq_disable)
97# define vsf_imp_sdio_status VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_status)
98# define vsf_imp_sdio_capability VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_capability)
99# define vsf_imp_sdio_set_clock VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_set_clock)
100# define vsf_imp_sdio_set_bus_width VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_set_bus_width)
101# define vsf_imp_sdio_host_request VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_host_request)
102# define vsf_imp_sdio_get_configuration VSF_MCONNECT(VSF_SDIO_CFG_IMP_PREFIX, _sdio_get_configuration)
103
104# define vsf_remap_sdio_t VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_t)
105# define vsf_remap_sdio_init VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_init)
106# define vsf_remap_sdio_enable VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_enable)
107# define vsf_remap_sdio_disable VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_disable)
108# define vsf_remap_sdio_irq_enable VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_irq_enable)
109# define vsf_remap_sdio_irq_disable VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_irq_disable)
110# define vsf_remap_sdio_status VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_status)
111# define vsf_remap_sdio_capability VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_capability)
112# define vsf_remap_sdio_set_clock VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_set_clock)
113# define vsf_remap_sdio_set_bus_width VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_set_bus_width)
114# define vsf_remap_sdio_host_request VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_host_request)
115# define vsf_remap_sdio_get_configuration VSF_MCONNECT(VSF_SDIO_CFG_IMP_REMAP_PREFIX, _sdio_get_configuration)
116
117# define VSF_SDIO_CFG_IMP_REMAP_FUNCTIONS \
118 vsf_err_t vsf_imp_sdio_init(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_cfg_t *cfg_ptr) \
119 { \
120 VSF_HAL_ASSERT((sdio_ptr != NULL) && (cfg_ptr != NULL)); \
121 return vsf_remap_sdio_init(sdio_ptr, cfg_ptr); \
122 } \
123 void vsf_imp_sdio_fini(vsf_imp_sdio_t *sdio_ptr) \
124 { \
125 VSF_HAL_ASSERT(sdio_ptr != NULL); \
126 vsf_remap_sdio_fini(sdio_ptr); \
127 } \
128 void vsf_imp_sdio_irq_enable(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_irq_mask_t irq_mask) \
129 { \
130 VSF_HAL_ASSERT(sdio_ptr != NULL); \
131 vsf_remap_sdio_irq_enable(sdio_ptr, irq_mask); \
132 } \
133 void vsf_imp_sdio_irq_disable(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_irq_mask_t irq_mask) \
134 { \
135 VSF_HAL_ASSERT(sdio_ptr != NULL); \
136 vsf_remap_sdio_irq_disable(sdio_ptr, irq_mask); \
137 } \
138 vsf_sdio_status_t vsf_imp_sdio_status(vsf_imp_sdio_t *sdio_ptr) \
139 { \
140 VSF_HAL_ASSERT(sdio_ptr != NULL); \
141 return vsf_remap_sdio_status(sdio_ptr); \
142 } \
143 vsf_sdio_capability_t vsf_imp_sdio_capability(vsf_imp_sdio_t *sdio_ptr) \
144 { \
145 VSF_HAL_ASSERT(sdio_ptr != NULL); \
146 return vsf_remap_sdio_capability(sdio_ptr); \
147 } \
148 vsf_err_t vsf_imp_sdio_set_clock(vsf_imp_sdio_t *sdio_ptr, uint32_t clock_hz) \
149 { \
150 VSF_HAL_ASSERT(sdio_ptr != NULL); \
151 return vsf_remap_sdio_set_clock(sdio_ptr, clock_hz); \
152 } \
153 vsf_err_t vsf_imp_sdio_set_bus_width(vsf_imp_sdio_t *sdio_ptr, uint8_t bus_width) \
154 { \
155 VSF_HAL_ASSERT(sdio_ptr != NULL); \
156 return vsf_remap_sdio_set_bus_width(sdio_ptr, bus_width); \
157 } \
158 vsf_err_t vsf_imp_sdio_host_request(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_trans_t *trans) \
159 { \
160 VSF_HAL_ASSERT(sdio_ptr != NULL); \
161 return vsf_remap_sdio_host_request(sdio_ptr, trans); \
162 } \
163 vsf_err_t vsf_imp_sdio_get_configuration(vsf_imp_sdio_t *sdio_ptr, vsf_sdio_cfg_t *cfg_ptr) \
164 { \
165 VSF_HAL_ASSERT(sdio_ptr != NULL); \
166 return vsf_remap_sdio_get_configuration(sdio_ptr, cfg_ptr); \
167 }
168#endif
169
170/*============================ MACROFIED FUNCTIONS ===========================*/
171/*============================ LOCAL VARIABLES ===============================*/
172/*============================ IMPLEMENTATION ================================*/
173/*============================ GLOBAL VARIABLES ==============================*/
174
175#define VSF_HAL_TEMPLATE_IMP_NAME _sdio
176#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _SDIO
177
178#if !defined(VSF_SDIO_CFG_IMP_PREFIX) && !defined(VSF_SDIO_CFG_IMP_DEVICE_PREFIX)
179# error "Please define VSF_SDIO_CFG_IMP_PREFIX in sdio driver"
180#endif
181
182#if !defined(VSF_SDIO_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_SDIO_CFG_IMP_DEVICE_UPCASE_PREFIX)
183# error "Please define VSF_SDIO_CFG_IMP_UPCASE_PREFIX in sdio driver"
184#endif
185
186#ifndef VSF_SDIO_CFG_IMP_COUNT_MASK_PREFIX
187# define VSF_SDIO_CFG_IMP_COUNT_MASK_PREFIX VSF_SDIO_CFG_IMP_UPCASE_PREFIX
188#endif
189
190#ifdef VSF_SDIO_CFG_IMP_REMAP_FUNCTIONS
191# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_SDIO_CFG_IMP_REMAP_FUNCTIONS
192#endif
193
195
196#undef VSF_SDIO_CFG_IMP_PREFIX
197#undef VSF_SDIO_CFG_IMP_COUNT_MASK_PREFIX
198#undef VSF_SDIO_CFG_IMP_UPCASE_PREFIX
199#undef VSF_SDIO_CFG_IMP_DEVICE_PREFIX
200#undef VSF_SDIO_CFG_IMP_DEVICE_UPCASE_PREFIX
201#undef VSF_SDIO_CFG_IMP_LV0
202#undef VSF_SDIO_CFG_IMP_REMAP_FUNCTIONS
203#undef VSF_SDIO_CFG_IMP_HAS_OP
204#undef VSF_SDIO_CFG_IMP_EXTERN_OP
205
206#undef vsf_imp_sdio_t
207#undef vsf_imp_sdio_init
208#undef vsf_imp_sdio_enable
209#undef vsf_imp_sdio_disable
210#undef vsf_imp_sdio_irq_enable
211#undef vsf_imp_sdio_irq_disable
212#undef vsf_imp_sdio_status
213#undef vsf_imp_sdio_capability
214#undef vsf_imp_sdio_set_clock
215#undef vsf_imp_sdio_set_bus_width
216#undef vsf_imp_sdio_host_request
217#undef vsf_imp_sdio_get_configuration
218
219#undef vsf_remap_sdio_t
220#undef vsf_remap_sdio_init
221#undef vsf_remap_sdio_enable
222#undef vsf_remap_sdio_disable
223#undef vsf_remap_sdio_irq_enable
224#undef vsf_remap_sdio_irq_disable
225#undef vsf_remap_sdio_status
226#undef vsf_remap_sdio_capability
227#undef vsf_remap_sdio_set_clock
228#undef vsf_remap_sdio_set_bus_width
229#undef vsf_remap_sdio_host_request
230#undef vsf_remap_sdio_get_configuration
231
232#endif /* VSF_HAL_USE_SDIO */
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
#define NULL
Definition lvgl.h:26
Definition vsf_template_sdio.h:743
uint32_t max_freq_hz
Definition vsf_template_sdio.h:752
sdio configuration
Definition vsf_template_sdio.h:826
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
Generated from commit: vsfteam/vsf@74aa6ce