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