VSF Documented
eth_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_ETH == ENABLED
19
20/*============================ INCLUDES ======================================*/
21/*============================ ETHROS ========================================*/
22
23#define vsf_real_eth_t VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_t)
24#define vsf_real_eth_capability VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_capability)
25#define vsf_real_eth_get_configuration VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_get_configuration)
26
27#ifndef VSF_ETH_CFG_REIMPLEMENT_API_CAPABILITY
28# define VSF_ETH_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
29#endif
30
31#ifndef VSF_ETH_CFG_REIMPLEMENT_API_GET_CONFIGURATION
32# define VSF_ETH_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
33#endif
34
35#ifdef VSF_ETH_CFG_IMP_REMAP_PREFIX
36# undef VSF_ETH_CFG_REIMPLEMENT_API_CAPABILITY
37# define VSF_ETH_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
38# undef VSF_ETH_CFG_REIMPLEMENT_API_GET_CONFIGURATION
39# define VSF_ETH_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
40#endif
41
42#if VSF_ETH_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
43#endif
44
45/*============================ LOCAL VARIABLES ===============================*/
46/*============================ IMPLEMENTATION ================================*/
47
48#if VSF_ETH_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
49vsf_eth_capability_t vsf_real_eth_capability(vsf_real_eth_t *eth_ptr)
50{
51 vsf_eth_capability_t eth_capability = {
52 0
53 };
54
55 return eth_capability;
56}
57#endif
58
59#if VSF_ETH_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
60vsf_err_t vsf_real_eth_get_configuration(vsf_real_eth_t *eth_ptr, vsf_eth_cfg_t *cfg_ptr)
61{
62 VSF_HAL_ASSERT(NULL != eth_ptr);
63 VSF_HAL_ASSERT(NULL != cfg_ptr);
64
65 // Default implementation: not supported, trigger assertion
67
69}
70#endif
71
72/*============================ ETHROS ========================================*/
73
74#undef VSF_ETH_CFG_REIMPLEMENT_API_CAPABILITY
75#undef VSF_ETH_CFG_REIMPLEMENT_API_GET_CONFIGURATION
76
77#undef vsf_real_eth_t
78#undef vsf_real_eth_capability
79#undef vsf_real_eth_get_configuration
80#undef vsf_real_eth_phy_read_reg
81#undef vsf_real_eth_phy_write_reg
82#undef vsf_real_eth_phy_set_mode
83#undef vsf_real_eth_phy_get_link_status
84
85/*============================ ETHROS ========================================*/
86
87#ifdef VSF_ETH_CFG_IMP_REMAP_PREFIX
88
89# define vsf_imp_eth_t VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_t)
90# define vsf_imp_eth_init VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_init)
91# define vsf_imp_eth_fini VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_fini)
92# define vsf_imp_eth_enable VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_enable)
93# define vsf_imp_eth_disable VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_disable)
94# define vsf_imp_eth_capability VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_capability)
95# define vsf_imp_eth_status VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_status)
96# define vsf_imp_eth_send_request VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_send_request)
97# define vsf_imp_eth_recv_request VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_recv_request)
98# define vsf_imp_eth_send_sg_request VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_send_sg_request)
99# define vsf_imp_eth_recv_sg_request VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_recv_sg_request)
100# define vsf_imp_eth_ctrl VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_ctrl)
101# define vsf_imp_eth_phy_read_reg VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_phy_read_reg)
102# define vsf_imp_eth_phy_write_reg VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_phy_write_reg)
103# define vsf_imp_eth_phy_set_mode VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_phy_set_mode)
104# define vsf_imp_eth_phy_get_link_status VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_phy_get_link_status)
105# define vsf_imp_eth_get_configuration VSF_MCONNECT(VSF_ETH_CFG_IMP_PREFIX, _eth_get_configuration)
106
107# define vsf_remap_eth_t VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_t)
108# define vsf_remap_eth_init VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_init)
109# define vsf_remap_eth_fini VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_fini)
110# define vsf_remap_eth_enable VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_enable)
111# define vsf_remap_eth_disable VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_disable)
112# define vsf_remap_eth_capability VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_capability)
113# define vsf_remap_eth_status VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_status)
114# define vsf_remap_eth_send_request VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_send_request)
115# define vsf_remap_eth_recv_request VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_recv_request)
116# define vsf_remap_eth_send_sg_request VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_send_sg_request)
117# define vsf_remap_eth_recv_sg_request VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_recv_sg_request)
118# define vsf_remap_eth_ctrl VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_ctrl)
119# define vsf_remap_eth_phy_read_reg VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_phy_read_reg)
120# define vsf_remap_eth_phy_write_reg VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_phy_write_reg)
121# define vsf_remap_eth_phy_set_mode VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_phy_set_mode)
122# define vsf_remap_eth_phy_get_link_status VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_phy_get_link_status)
123# define vsf_remap_eth_get_configuration VSF_MCONNECT(VSF_ETH_CFG_IMP_REMAP_PREFIX, _eth_get_configuration)
124
125# define VSF_ETH_CFG_IMP_REMAP_FUNCTIONS \
126 vsf_err_t vsf_imp_eth_init(vsf_imp_eth_t *eth_ptr, vsf_eth_cfg_t *cfg_ptr) \
127 { \
128 VSF_HAL_ASSERT(eth_ptr != NULL); \
129 return vsf_remap_eth_init(eth_ptr, cfg_ptr); \
130 } \
131 void vsf_imp_eth_fini(vsf_imp_eth_t *eth_ptr) \
132 { \
133 VSF_HAL_ASSERT(eth_ptr != NULL); \
134 vsf_remap_eth_fini(eth_ptr); \
135 } \
136 fsm_rt_t vsf_imp_eth_enable(vsf_imp_eth_t *eth_ptr) \
137 { \
138 VSF_HAL_ASSERT(eth_ptr != NULL); \
139 return vsf_remap_eth_enable(eth_ptr); \
140 } \
141 fsm_rt_t vsf_imp_eth_disable(vsf_imp_eth_t *eth_ptr) \
142 { \
143 VSF_HAL_ASSERT(eth_ptr != NULL); \
144 return vsf_remap_eth_disable(eth_ptr); \
145 } \
146 vsf_eth_status_t vsf_imp_eth_status(vsf_imp_eth_t *eth_ptr) \
147 { \
148 VSF_HAL_ASSERT(eth_ptr != NULL); \
149 return vsf_remap_eth_status(eth_ptr); \
150 } \
151 vsf_eth_capability_t vsf_imp_eth_capability(vsf_imp_eth_t *eth_ptr) \
152 { \
153 VSF_HAL_ASSERT(eth_ptr != NULL); \
154 return vsf_remap_eth_capability(eth_ptr); \
155 } \
156 vsf_err_t vsf_imp_eth_send_request(vsf_imp_eth_t *eth_ptr, \
157 vsf_eth_send_buf_desc_t *buf_ptr) \
158 { \
159 VSF_HAL_ASSERT(eth_ptr != NULL); \
160 return vsf_remap_eth_send_request(eth_ptr, buf_ptr); \
161 } \
162 vsf_err_t vsf_imp_eth_recv_request(vsf_imp_eth_t *eth_ptr, \
163 vsf_eth_recv_buf_desc_t *buf_ptr) \
164 { \
165 VSF_HAL_ASSERT(eth_ptr != NULL); \
166 return vsf_remap_eth_recv_request(eth_ptr, buf_ptr); \
167 } \
168 vsf_err_t vsf_imp_eth_send_sg_request(vsf_imp_eth_t *eth_ptr, \
169 vsf_eth_send_sg_buf_desc_t *buf_ptr, uint32_t sg_count) \
170 { \
171 VSF_HAL_ASSERT(eth_ptr != NULL); \
172 return vsf_remap_eth_send_sg_request(eth_ptr, buf_ptr, sg_count); \
173 } \
174 vsf_err_t vsf_imp_eth_recv_sg_request(vsf_imp_eth_t *eth_ptr, \
175 vsf_eth_recv_sg_buf_desc_t *buf_ptr, uint32_t sg_count) \
176 { \
177 VSF_HAL_ASSERT(eth_ptr != NULL); \
178 return vsf_remap_eth_recv_sg_request(eth_ptr, buf_ptr, sg_count); \
179 } \
180 vsf_err_t vsf_imp_eth_ctrl(vsf_imp_eth_t *eth_ptr, \
181 vsf_eth_ctrl_t ctrl, void *param) \
182 { \
183 VSF_HAL_ASSERT(eth_ptr != NULL); \
184 return vsf_remap_eth_ctrl(eth_ptr, ctrl, param); \
185 } \
186 vsf_eth_capability_t vsf_imp_eth_capability(vsf_imp_eth_t *eth_ptr) \
187 { \
188 VSF_HAL_ASSERT(eth_ptr != NULL); \
189 return vsf_remap_eth_capability(eth_ptr); \
190 } \
191 vsf_err_t vsf_imp_eth_phy_read_reg(vsf_imp_eth_t *eth_ptr, \
192 uint16_t reg_addr, uint32_t *value_ptr) \
193 { \
194 VSF_HAL_ASSERT(eth_ptr != NULL); \
195 return vsf_remap_eth_phy_read_reg(eth_ptr, reg_addr, value_ptr); \
196 } \
197 vsf_err_t vsf_imp_eth_phy_write_reg(vsf_imp_eth_t *eth_ptr, \
198 uint16_t reg_addr, uint32_t value) \
199 { \
200 VSF_HAL_ASSERT(eth_ptr != NULL); \
201 return vsf_remap_eth_phy_write_reg(eth_ptr, reg_addr, value); \
202 } \
203 vsf_err_t vsf_imp_eth_phy_set_mode(vsf_imp_eth_t *eth_ptr, \
204 vsf_eth_mode_t mode) \
205 { \
206 VSF_HAL_ASSERT(eth_ptr != NULL); \
207 return vsf_remap_eth_phy_set_mode(eth_ptr, mode); \
208 } \
209 vsf_err_t vsf_imp_eth_phy_get_link_status(vsf_imp_eth_t *eth_ptr, \
210 vsf_eth_mode_t * phy_mode_ptr) \
211 { \
212 VSF_HAL_ASSERT(eth_ptr != NULL); \
213 return vsf_remap_eth_phy_get_link_status(eth_ptr, phy_mode_ptr); \
214 } \
215 \
216 vsf_err_t vsf_imp_eth_get_configuration(vsf_imp_eth_t *eth_ptr, \
217 vsf_eth_cfg_t *cfg_ptr) \
218 { \
219 VSF_HAL_ASSERT(eth_ptr != NULL); \
220 return vsf_remap_eth_get_configuration(eth_ptr, cfg_ptr); \
221 }
222#endif
223
224/*============================ GLOBAL VARIABLES ==============================*/
225
226#define VSF_HAL_TEMPLATE_IMP_NAME _eth
227#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _ETH
228
229#if !defined(VSF_ETH_CFG_IMP_PREFIX) && !defined(VSF_ETH_CFG_IMP_DEVICE_PREFIX)
230# error "Please define VSF_ETH_CFG_IMP_PREFIX in eth driver"
231#endif
232
233#if !defined(VSF_ETH_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_ETH_CFG_IMP_DEVICE_UPCASE_PREFIX)
234# error "Please define VSF_ETH_CFG_IMP_UPCASE_PREFIX in eth driver"
235#endif
236
237#ifndef VSF_ETH_CFG_IMP_COUNT_MASK_PREFIX
238# define VSF_ETH_CFG_IMP_COUNT_MASK_PREFIX VSF_ETH_CFG_IMP_UPCASE_PREFIX
239#endif
240
241#ifdef VSF_ETH_CFG_IMP_REMAP_FUNCTIONS
242# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_ETH_CFG_IMP_REMAP_FUNCTIONS
243#endif
244
246
247#undef VSF_ETH_CFG_IMP_PREFIX
248#undef VSF_ETH_CFG_IMP_COUNT_MASK_PREFIX
249#undef VSF_ETH_CFG_IMP_UPCASE_PREFIX
250#undef VSF_ETH_CFG_IMP_DEVICE_PREFIX
251#undef VSF_ETH_CFG_IMP_DEVICE_UPCASE_PREFIX
252#undef VSF_ETH_CFG_IMP_LV0
253#undef VSF_ETH_CFG_IMP_REMAP_FUNCTIONS
254#undef VSF_ETH_CFG_IMP_HAS_OP
255#undef VSF_ETH_CFG_IMP_EXTERN_OP
256
257#undef vsf_imp_eth_t
258#undef vsf_imp_eth_init
259#undef vsf_imp_eth_fini
260#undef vsf_imp_eth_enable
261#undef vsf_imp_eth_disable
262#undef vsf_imp_eth_status
263#undef vsf_imp_eth_capability
264#undef vsf_imp_eth_send_request
265#undef vsf_imp_eth_recv_request
266#undef vsf_imp_eth_send_sg_request
267#undef vsf_imp_eth_recv_sg_request
268#undef vsf_imp_eth_ctrl
269#undef vsf_imp_eth_phy_read_reg
270#undef vsf_imp_eth_phy_write_reg
271#undef vsf_imp_eth_phy_set_mode
272#undef vsf_imp_eth_phy_get_link_status
273#undef vsf_imp_eth_get_configuration
274
275#undef vsf_remap_eth_t
276#undef vsf_remap_eth_init
277#undef vsf_remap_eth_fini
278#undef vsf_remap_eth_enable
279#undef vsf_remap_eth_disable
280#undef vsf_remap_eth_status
281#undef vsf_remap_eth_capability
282#undef vsf_remap_eth_send_request
283#undef vsf_remap_eth_recv_request
284#undef vsf_remap_eth_send_sg_request
285#undef vsf_remap_eth_recv_sg_request
286#undef vsf_remap_eth_ctrl
287#undef vsf_remap_eth_phy_read_reg
288#undef vsf_remap_eth_phy_write_reg
289#undef vsf_remap_eth_phy_set_mode
290#undef vsf_remap_eth_phy_get_link_status
291#undef vsf_remap_eth_get_configuration
292
293#endif /* VSF_HAL_USE_ETH */
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
#define NULL
Definition lvgl.h:26
Predefined VSF ETH capability that can be reimplemented in specific hal drivers. The vsf_eth_capabili...
Definition vsf_template_eth.h:597
ETH configuration structure.
Definition vsf_template_eth.h:557
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
Generated from commit: vsfteam/vsf@74aa6ce