VSF Documented
eth.h
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#ifndef __HAL_DRIVER_${SERIES/ETH_IP}_ETH_H__
19#define __HAL_DRIVER_${SERIES/ETH_IP}_ETH_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "hal/vsf_hal_cfg.h"
24
25#if VSF_HAL_USE_ETH == ENABLED
26
27// HW/IPCore
32// HW/IPCore end
33
34/*\note Refer to template/README.md for usage cases.
35 * For peripheral drivers, blackbox mode is recommended but not required, reimplementation part MUST be open.
36 * For IPCore drivers, class structure, MULTI_CLASS configuration, reimplementation and class APIs should be open to user.
37 * For emulated drivers, **** No reimplementation ****.
38 */
39
40/*\note Includes CAN ONLY be put here. */
41/*\note If current header is for a peripheral driver(hw driver), and inherit from an IPCore driver, include IPCore header here. */
42
43// IPCore
44#if defined(__VSF_HAL_${ETH_IP}_ETH_CLASS_IMPLEMENT)
45# define __VSF_CLASS_IMPLEMENT__
46#elif defined(__VSF_HAL_${ETH_IP}_ETH_CLASS_INHERIT__)
47# define __VSF_CLASS_INHERIT__
48#endif
49
50#include "utilities/ooc_class.h"
51// IPCore end
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
57/*============================ ETHROS ========================================*/
58
59/*\note VSF_${ETH_IP}_ETH_CFG_MULTI_CLASS should be implemented for IP drives and open to user,
60 * while VSF_HW_ETH_CFG_MULTI_CLASS should be in eth.c.
61 */
62
63// IPCore
64#ifndef VSF_${ETH_IP}_ETH_CFG_MULTI_CLASS
65# define VSF_${ETH_IP}_ETH_CFG_MULTI_CLASS VSF_ETH_CFG_MULTI_CLASS
66#endif
67// IPCore end
68
69// HW
70/*\note hw ETH driver can reimplement following types:
71 * To enable reimplementation, please enable macro below:
72 * VSF_ETH_CFG_REIMPLEMENT_TYPE_PHY_MODE for vsf_eth_phy_mode_t
73 * VSF_ETH_CFG_REIMPLEMENT_TYPE_MODE for vsf_eth_mode_t
74 * VSF_ETH_CFG_REIMPLEMENT_TYPE_IRQ_MASK for vsf_eth_irq_mask_t
75 * VSF_ETH_CFG_REIMPLEMENT_TYPE_CTRL for vsf_eth_ctrl_t
76 * VSF_ETH_CFG_REIMPLEMENT_TYPE_CFG for vsf_eth_cfg_t
77 * VSF_ETH_CFG_REIMPLEMENT_TYPE_STATUS for vsf_eth_status_t
78 * VSF_ETH_CFG_REIMPLEMENT_TYPE_CAPABILITY for vsf_eth_capability_t
79 * VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_MODE for vsf_eth_buf_mode_t
80 * VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_DESC for vsf_eth_buf_desc_t
81 * VSF_ETH_CFG_REIMPLEMENT_TYPE_SEND_BUF_DESC for vsf_eth_send_buf_desc_t
82 * VSF_ETH_CFG_REIMPLEMENT_TYPE_RECV_BUF_DESC for vsf_eth_recv_buf_desc_t
83 * VSF_ETH_CFG_REIMPLEMENT_TYPE_SG_BUF_DESC for vsf_eth_sg_buf_desc_t
84 * Reimplementation is used for optimization hw/IPCore drivers, reimplement the bit mask according to hw registers.
85 * *** DO NOT reimplement these in emulated drivers. ***
86 */
87
88#define VSF_ETH_CFG_REIMPLEMENT_TYPE_PHY_MODE ENABLED
89#define VSF_ETH_CFG_REIMPLEMENT_TYPE_MODE ENABLED
90#define VSF_ETH_CFG_REIMPLEMENT_TYPE_IRQ_MASK ENABLED
91#define VSF_ETH_CFG_REIMPLEMENT_TYPE_CTRL ENABLED
92#define VSF_ETH_CFG_REIMPLEMENT_TYPE_CFG ENABLED
93#define VSF_ETH_CFG_REIMPLEMENT_TYPE_STATUS ENABLED
94#define VSF_ETH_CFG_REIMPLEMENT_TYPE_CAPABILITY ENABLED
95#define VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_MODE ENABLED
96#define VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_DESC ENABLED
97#define VSF_ETH_CFG_REIMPLEMENT_TYPE_SEND_BUF_DESC ENABLED
98#define VSF_ETH_CFG_REIMPLEMENT_TYPE_RECV_BUF_DESC ENABLED
99#define VSF_ETH_CFG_REIMPLEMENT_TYPE_SG_BUF_DESC ENABLED
100// HW end
101
102/*============================ ETHROFIED FUNCTIONS ===========================*/
103/*============================ TYPES =========================================*/
104
105// IPCore
106vsf_class(vsf_${eth_ip}_eth_t) {
107#if VSF_${ETH_IP}_CFG_MULTI_CLASS == ENABLED
108 public_member(
109 vsf_eth_t vsf_eth;
110 )
111#endif
112
113/*\note You can add more member in vsf_${eth_ip}_eth_t instance.
114 * For members accessible from child, put in protected_member.
115 * Else, put in private_member.
116 */
117
118 protected_member(
119 vsf_${eth_ip}_eth_reg_t *reg;
122};
123// IPCore end
124
125// HW/IPCore, not for emulated drivers
126#if VSF_ETH_CFG_REIMPLEMENT_TYPE_PHY_MODE == ENABLED
127typedef enum vsf_eth_phy_mode_t {
131
134
135 // Add more vendor-specific modes here
137#endif
138
139#if VSF_ETH_CFG_REIMPLEMENT_TYPE_MODE == ENABLED
140typedef enum vsf_eth_mode_t {
143
144 // Add more vendor-specific modes here
146#endif
147
148#if VSF_ETH_CFG_REIMPLEMENT_TYPE_IRQ_MASK == ENABLED
149typedef enum vsf_eth_irq_mask_t {
156
157 // Add more vendor-specific interrupt masks here
159#endif
160
161#if VSF_ETH_CFG_REIMPLEMENT_TYPE_CTRL == ENABLED
162typedef enum vsf_eth_ctrl_t {
164
165 // Add more vendor-specific control commands here
167#endif
168
169#if VSF_ETH_CFG_REIMPLEMENT_TYPE_CFG == ENABLED
170typedef struct vsf_eth_t vsf_eth_t;
171typedef void vsf_eth_isr_handler_t(void *target_ptr, vsf_eth_t *eth_ptr,
173typedef struct vsf_eth_isr_t {
175 void *target_ptr;
178typedef struct vsf_eth_cfg_t {
184#endif
185
186#if VSF_ETH_CFG_REIMPLEMENT_TYPE_STATUS == ENABLED
187typedef struct vsf_eth_status_t {
188 union {
191 struct {
194 };
195 };
197#endif
198
199#if VSF_ETH_CFG_REIMPLEMENT_TYPE_CAPABILITY == ENABLED
200typedef struct vsf_eth_capability_t {
201#if VSF_ETH_CFG_INHERIT_HAL_CAPABILITY == ENABLED
203#endif
204
205 vsf_eth_mode_t support_modes;
208
209 union {
211 struct {
214 };
215 };
216
217 // Add more vendor-specific capabilities here
219#endif
220
221#if VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_MODE == ENABLED
222typedef enum vsf_eth_buf_mode_t {
225
226 // Add more vendor-specific buffer modes here
228#endif
229
230#if VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_DESC == ENABLED
231typedef struct vsf_eth_buf_desc_t {
233 void *payload;
236#endif
237
238#if VSF_ETH_CFG_REIMPLEMENT_TYPE_SEND_BUF_DESC == ENABLED
240#endif
241
242#if VSF_ETH_CFG_REIMPLEMENT_TYPE_RECV_BUF_DESC == ENABLED
244#endif
245
246#if VSF_ETH_CFG_REIMPLEMENT_TYPE_SG_SEND_BUF == DISABLED
248#endif
249
250#if VSF_ETH_CFG_REIMPLEMENT_TYPE_SG_RECV_BUF == DISABLED
252#endif
253// HW/IPCore end
254
255
256/*============================ INCLUDES ======================================*/
257
258// IPCore
259/*\note Extern APIs for ip core diriver.
260 * There is no requirement about how APIs of IPCore drivers should be implemented.
261 * Just consider the simplicity for actual peripheral drivers.
262 */
263// IPCore end
264
265#ifdef __cplusplus
266}
267#endif
268
269// IPCore
270#undef __VSF_HAL_${ETH_IP}_ETH_CLASS_IMPLEMENT
271#undef __VSF_HAL_${ETH_IP}_ETH_CLASS_INHERIT__
272// IPCore end
273
274#endif // VSF_HAL_USE_ETH
275#endif // __HAL_DRIVER_${SERIES/ETH_IP}_ETH_H__
276/* EOF */
Definition adc.h:94
vsf_arch_prio_t
Definition cortex_a_generic.h:88
vsf_eth_buf_desc_t vsf_eth_recv_buf_desc_t
Definition eth.h:243
vsf_eth_irq_mask_t
Definition eth.h:149
@ VSF_ETH_IRQ_MASK_ERROR
Definition eth.h:155
@ VSF_ETH_IRQ_MASK_RX_AVAILABLE
Definition eth.h:150
@ VSF_ETH_IRQ_MASK_PHY_LINK_CHANGE
Definition eth.h:154
@ VSF_ETH_IRQ_MASK_SG_TX_COMPLETE
Definition eth.h:153
@ VSF_ETH_IRQ_MASK_SG_RX_AVAILABLE
Definition eth.h:152
@ VSF_ETH_IRQ_MASK_TX_COMPLETE
Definition eth.h:151
vsf_eth_ctrl_t
Definition eth.h:162
@ VSF_ETH_CTRL_GET_MAC_ADDRESS
Definition eth.h:163
vsf_eth_buf_mode_t
Definition eth.h:222
@ VSF_ETH_BUF_MODE_TX_CHECKSUM_OFFLOAD
Definition eth.h:223
@ VSF_ETH_BUF_MODE_RX_CHECKSUM_OFFLOAD
Definition eth.h:224
vsf_eth_isr_t isr
Definition eth.h:121
vsf_eth_mode_t
Definition eth.h:140
@ VSF_ETH_MODE_TX_CHECKSUM_OFFLOAD
Definition eth.h:141
@ VSF_ETH_MODE_RX_CHECKSUM_OFFLOAD
Definition eth.h:142
vsf_eth_phy_mode_t
Definition eth.h:127
@ VSF_ETH_PHY_MODE_SPEED_1000M
Definition eth.h:130
@ VSF_ETH_PHY_MODE_SPEED_100M
Definition eth.h:129
@ VSF_ETH_PHY_MODE_SPEED_10M
Definition eth.h:128
@ VSF_ETH_PHY_MODE_DUPLEX_HALF
Definition eth.h:132
@ VSF_ETH_PHY_MODE_DUPLEX_FULL
Definition eth.h:133
class vsf_$ * reg
vsf_eth_buf_desc_t vsf_eth_send_sg_buf_desc_t
Definition eth.h:247
vsf_eth_buf_desc_t vsf_eth_send_buf_desc_t
Definition eth.h:239
vsf_eth_buf_desc_t vsf_eth_recv_sg_buf_desc_t
Definition eth.h:251
void vsf_eth_isr_handler_t(void *target_ptr, vsf_eth_t *eth_ptr, vsf_eth_irq_mask_t irq_mask)
Definition eth.h:171
#define vsf_class(__name)
Definition ooc_class.h:48
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_eth.h:650
void * payload
Definition vsf_template_eth.h:652
vsf_eth_buf_mode_t mode
Definition vsf_template_eth.h:651
uint32_t size
Definition eth.h:234
Predefined VSF ETH capability that can be reimplemented in specific hal drivers. The vsf_eth_capabili...
Definition vsf_template_eth.h:610
uint32_t is_send_buf_releasable_immediately
Definition vsf_template_eth.h:627
uint32_t is_sg_send_buf_releasable_immediately
Definition vsf_template_eth.h:634
inherit(vsf_peripheral_capability_t) vsf_eth_mode_t support_modes
vsf_eth_phy_mode_t support_phy_modes
Supported PHY modes, refer to vsf_eth_phy_mode_t.
Definition vsf_template_eth.h:616
uint32_t value
Definition vsf_template_eth.h:620
vsf_eth_irq_mask_t support_irq_mask
Supported IRQ masks, refer to vsf_eth_irq_mask_t.
Definition vsf_template_eth.h:617
ETH configuration structure.
Definition vsf_template_eth.h:570
uint8_t mac_address[6]
MAC address, 6 bytes.
Definition vsf_template_eth.h:573
vsf_eth_phy_mode_t phy_mode
PHY mode, refer to vsf_eth_phy_mode_t.
Definition vsf_template_eth.h:572
vsf_eth_isr_t isr
ETH interrupt configuration, refer to vsf_eth_isr_t.
Definition vsf_template_eth.h:574
vsf_eth_mode_t mode
ETH mode, refer to vsf_eth_mode_t.
Definition vsf_template_eth.h:571
ETH interrupt configuration structure.
Definition vsf_template_eth.h:557
vsf_eth_isr_handler_t * handler_fn
Interrupt handler function pointer.
Definition vsf_template_eth.h:558
void * target_ptr
User-defined target pointer.
Definition vsf_template_eth.h:559
vsf_arch_prio_t prio
Interrupt priority.
Definition vsf_template_eth.h:560
ETH status information structure Contains the current status of ETH operations and FIFO thresholds.
Definition vsf_template_eth.h:587
uint32_t is_tx_ready
TX is ready to accept data.
Definition vsf_template_eth.h:593
uint32_t is_rx_available
RX data is available.
Definition vsf_template_eth.h:592
ETH instance structure, used for ETH Multi Class support, not needed in non Multi Class mode.
Definition vsf_template_eth.h:725
Definition vsf_template_hal_driver.h:203
Definition vsf_template_hal_driver.h:196
vk_av_control_value_t value
Definition vsf_audio.h:171
vsf_eth_irq_mask_t
Definition vsf_template_eth.h:511
vsf_eth_ctrl_t
Definition vsf_template_eth.h:682
vsf_eth_buf_mode_t
Definition vsf_template_eth.h:641
vsf_eth_mode_t
Predefined VSF ETH modes that can be reimplemented in specific HAL drivers.The following modes must b...
Definition vsf_template_eth.h:392
vsf_eth_phy_mode_t
Predefined VSF ETH modes that can be reimplemented in specific HAL drivers.The following modes must b...
Definition vsf_template_eth.h:333
Generated from commit: vsfteam/vsf@8634e61