VSF Documented
vsf_template_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 __VSF_TEMPLATE_ETH_H__
19#define __VSF_TEMPLATE_ETH_H__
20
21/*============================ INCLUDES ======================================*/
22
24#include "hal/arch/vsf_arch.h"
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30/*============================ ETHROS ========================================*/
31
39#ifndef VSF_ETH_CFG_MULTI_CLASS
40# define VSF_ETH_CFG_MULTI_CLASS ENABLED
41#endif
42#ifndef VSF_ETH_CFG_MULTI_PHY_CLASS
43# define VSF_ETH_CFG_MULTI_PHY_CLASS ENABLED
44#endif
45
46#if defined(VSF_HW_ETH_COUNT) && !defined(VSF_HW_ETH_MASK)
54# define VSF_HW_ETH_MASK VSF_HAL_COUNT_TO_MASK(VSF_HW_ETH_COUNT)
55#endif
56
57#if defined(VSF_HW_ETH_MASK) && !defined(VSF_HW_ETH_COUNT)
65# define VSF_HW_ETH_COUNT VSF_HAL_MASK_TO_COUNT(VSF_HW_ETH_MASK)
66#endif
67
89#ifndef VSF_ETH_CFG_PREFIX
90# if (VSF_ETH_CFG_MULTI_CLASS == DISABLED) && defined(VSF_HW_ETH_COUNT) && (VSF_HW_ETH_COUNT != 0)
91# define VSF_ETH_CFG_PREFIX vsf_hw
92# else
93# define VSF_ETH_CFG_PREFIX vsf
94# endif
95#endif
96
107#ifndef VSF_ETH_CFG_FUNCTION_RENAME
108# define VSF_ETH_CFG_FUNCTION_RENAME ENABLED
109#endif
110
120#ifndef VSF_ETH_CFG_REIMPLEMENT_TYPE_PHY_MODE
121# define VSF_ETH_CFG_REIMPLEMENT_TYPE_PHY_MODE DISABLED
122#endif
123
133#ifndef VSF_ETH_CFG_REIMPLEMENT_TYPE_MODE
134# define VSF_ETH_CFG_REIMPLEMENT_TYPE_MODE DISABLED
135#endif
136
149#if VSF_ETH_CFG_REIMPLEMENT_TYPE_CFG == DISABLED
150# define VSF_ETH_CFG_REIMPLEMENT_TYPE_CFG DISABLED
151#endif
152
161#ifndef VSF_ETH_CFG_REIMPLEMENT_TYPE_STATUS
162# define VSF_ETH_CFG_REIMPLEMENT_TYPE_STATUS DISABLED
163#endif
164
177#if VSF_ETH_CFG_REIMPLEMENT_TYPE_CAPABILITY == DISABLED
178# define VSF_ETH_CFG_REIMPLEMENT_TYPE_CAPABILITY DISABLED
179#endif
180
191#if VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_MODE == DISABLED
192# define VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_MODE DISABLED
193#endif
194
195#if VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_DESC == DISABLED
196# define VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_DESC DISABLED
197#endif
198
199#if VSF_ETH_CFG_REIMPLEMENT_TYPE_SEND_BUF_DESC == DISABLED
200# define VSF_ETH_CFG_REIMPLEMENT_TYPE_SEND_BUF_DESC DISABLED
201#endif
202
203#if VSF_ETH_CFG_REIMPLEMENT_TYPE_RECV_BUF_DESC == DISABLED
204# define VSF_ETH_CFG_REIMPLEMENT_TYPE_RECV_BUF_DESC DISABLED
205#endif
206
216#if VSF_ETH_CFG_REIMPLEMENT_TYPE_SG_BUF_DESC == DISABLED
217# define VSF_ETH_CFG_REIMPLEMENT_TYPE_SG_BUF_DESC DISABLED
218#endif
219
220
230#ifndef VSF_ETH_CFG_REIMPLEMENT_TYPE_IRQ_MASK
231# define VSF_ETH_CFG_REIMPLEMENT_TYPE_IRQ_MASK DISABLED
232#endif
233
243#ifndef VSF_ETH_CFG_REIMPLEMENT_TYPE_CTRL
244# define VSF_ETH_CFG_REIMPLEMENT_TYPE_CTRL DISABLED
245#endif
246
257#ifndef VSF_ETH_CFG_INHERIT_HAL_CAPABILITY
258# define VSF_ETH_CFG_INHERIT_HAL_CAPABILITY ENABLED
259#endif
260
261/*============================ ETHROFIED FUNCTIONS ===========================*/
262
272#define VSF_ETH_APIS(__prefix_name) \
273 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, eth, init, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, vsf_eth_cfg_t *cfg_ptr) \
274 __VSF_HAL_TEMPLATE_API(__prefix_name, void, eth, fini, VSF_MCONNECT(__prefix_name, _t) *eth_ptr) \
275 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, eth, get_configuration, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, vsf_eth_cfg_t *cfg_ptr) \
276 __VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, eth, enable, VSF_MCONNECT(__prefix_name, _t) *eth_ptr) \
277 __VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, eth, disable, VSF_MCONNECT(__prefix_name, _t) *eth_ptr) \
278 __VSF_HAL_TEMPLATE_API(__prefix_name, void, eth, irq_enable, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, vsf_eth_irq_mask_t irq_mask) \
279 __VSF_HAL_TEMPLATE_API(__prefix_name, void, eth, irq_disable, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, vsf_eth_irq_mask_t irq_mask) \
280 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, eth, send_request, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, vsf_eth_send_buf_desc_t *buf_ptr) \
281 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, eth, recv_request, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, vsf_eth_recv_buf_desc_t *buf_ptr) \
282 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, eth, send_sg_request, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, vsf_eth_send_sg_buf_desc_t *buf_ptr, uint32_t sg_count) \
283 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, eth, recv_sg_request, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, vsf_eth_recv_sg_buf_desc_t *buf_ptr, uint32_t sg_count) \
284 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, eth, ctrl, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, vsf_eth_ctrl_t ctrl, void *param) \
285 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_eth_status_t, eth, status, VSF_MCONNECT(__prefix_name, _t) *eth_ptr) \
286 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_eth_capability_t, eth, capability, VSF_MCONNECT(__prefix_name, _t) *eth_ptr) \
287 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, eth, phy_set_mode, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, vsf_eth_phy_mode_t phy_mode) \
288 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, eth, phy_get_link_status, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, vsf_eth_phy_mode_t *phy_mode_ptr) \
289 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, eth, phy_read_reg, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, uint16_t reg_addr, uint32_t *value_ptr) \
290 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, eth, phy_write_reg, VSF_MCONNECT(__prefix_name, _t) *eth_ptr, uint16_t reg_addr, uint32_t value)
291
292
293/*============================ TYPES =========================================*/
294
295
296
297#if VSF_ETH_CFG_REIMPLEMENT_TYPE_PHY_MODE == DISABLED
333typedef enum vsf_eth_phy_mode_t {
340
343
345
348 //VSF_ETH_PHY_MODE_LINK_DOWN = 1 << 6,
350#endif
351
352
359enum {
360#ifndef VSF_ETH_PHY_MODE_SPEED_MASK
362#endif
363
364#ifndef VSF_ETH_PHY_MODE_DUPLEX_MASK
366#endif
367
368#ifndef VSF_ETH_PHY_MODE_ALL_BITS_MASK
370#endif
371};
372
373#if VSF_ETH_CFG_REIMPLEMENT_TYPE_MODE == DISABLED
392typedef enum vsf_eth_mode_t {
395
396 /* The following modes are optional and can be enabled by removing the comments.
397 * These modes depend on hardware support and might not be available on all hardware.
398 */
399
400 /* Address Filtering Options
401 * ------------------------- */
402 /*
403 // \~english Enable filtering of unicast frames not addressed to this station
404 // \~chinese 启用单播帧过滤,丢弃不是发往本站的单播帧
405 VSF_ETH_MODE_UNICAST_FILTER = 1 << 7,
406
407 // \~english Enable filtering of multicast frames according to a filter table
408 // \~chinese 启用多播帧过滤,根据过滤表过滤多播帧
409 VSF_ETH_MODE_MULTICAST_FILTER = 1 << 8,
410
411 // \~english Enable filtering of broadcast frames
412 // \~chinese 启用广播帧过滤,可选择是否接收广播帧
413 VSF_ETH_MODE_BROADCAST_FILTER = 1 << 9,
414 */
415
416 /* VLAN Support Options
417 * --------------------
418 * VLAN (Virtual LAN) allows network segmentation at Layer 2
419 */
420 /*
421 // \~english Enable adding VLAN tags to outgoing frames
422 // \~chinese 启用VLAN标签,向外发送的帧添加VLAN标签
423 VSF_ETH_MODE_VLAN_TAGGING = 1 << 10,
424
425 // \~english Enable filtering frames based on VLAN ID
426 // \~chinese 启用VLAN标签过滤,根据VLAN ID过滤接收的帧
427 VSF_ETH_MODE_VLAN_FILTERING = 1 << 11,
428
429 // \~english Remove VLAN tags from received frames before passing to upper layer
430 // \~chinese 启用VLAN标签剥离,在传递给上层前移除接收帧中的VLAN标签
431 VSF_ETH_MODE_VLAN_STRIPPING = 1 << 12,
432
433 // \~english Insert VLAN tags into outgoing frames that don't have them
434 // \~chinese 启用VLAN标签插入,向没有VLAN标签的外发帧插入标签
435 VSF_ETH_MODE_VLAN_INSERTION = 1 << 13,
436 */
437
438 /* Special Frame Handling
439 * --------------------- */
440 /*
441 // \~english Support for frames larger than 1518 bytes (up to 9000 bytes typically)
442 // \~chinese 支持巨型帧,允许处理大于1518字节的帧(通常最大可达9000字节)
443 VSF_ETH_MODE_JUMBO_FRAME = 1 << 14,
444
445 // \~english Support IEEE 802.3x flow control mechanism to prevent buffer overflow
446 // \~chinese 支持IEEE 802.3x流控制机制,防止缓冲区溢出
447 VSF_ETH_MODE_FLOW_CONTROL = 1 << 15,
448
449 // \~english Support for pause frames which temporarily pause transmission
450 // \~chinese 支持暂停帧,可临时暂停传输以控制数据流
451 VSF_ETH_MODE_PAUSE_FRAME = 1 << 16,
452 */
453
454 /* QoS and Traffic Management
455 * ------------------------- */
456 /*
457 // \~english Support for multiple priority queues for traffic handling
458 // \~chinese 支持优先级队列,根据优先级处理不同流量
459 VSF_ETH_MODE_PRIORITY_QUEUE = 1 << 17,
460
461 // \~english Quality of Service support for traffic differentiation
462 // \~chinese 服务质量支持,区分处理不同类型的流量
463 VSF_ETH_MODE_QOS = 1 << 18,
464 */
465
466 /* Time Synchronization
467 * ------------------- */
468 /*
469 // \~english Support for Precision Time Protocol timestamp for accurate timing
470 // \~chinese 支持精确时间协议时间戳,用于精确计时
471 VSF_ETH_MODE_PTP_TIMESTAMP = 1 << 19,
472 */
473
474 /* Advanced Hardware Acceleration
475 * ----------------------------- */
476 /*
477 // \~english TCP Segmentation Offload - hardware handles TCP segmentation
478 // \~chinese TCP分段卸载 - 硬件处理TCP分段,减轻CPU负担
479 VSF_ETH_MODE_TCP_SEGMENTATION = 1 << 20,
480
481 // \~english Large Receive Offload - hardware combines received TCP segments
482 // \~chinese 大型接收卸载 - 硬件合并接收到的TCP分段,减少处理开销
483 VSF_ETH_MODE_LARGE_RECEIVE = 1 << 21,
484 */
485
486 /* These are examples of how to implement optional features.
487 * Hardware drivers can define and implement these as needed.
488 * For each enabled feature, corresponding MASK definitions should be added.
489 */
491#endif
492
499enum {
500#ifndef VSF_ETH_MODE_OFFLOAD_MASK
502#endif
503
504#ifndef VSF_ETH_MODE_ALL_BITS_MASK
506#endif
507};
508
509
510#if VSF_ETH_CFG_REIMPLEMENT_TYPE_IRQ_MASK == DISABLED
511typedef enum vsf_eth_irq_mask_t {
514
517
519
522#endif
523
524enum {
525#ifndef VSF_ETH_IRQ_MASK_ALL
531#endif
532};
533
534
535#if VSF_ETH_CFG_REIMPLEMENT_TYPE_CFG == DISABLED
540typedef struct vsf_eth_t vsf_eth_t;
541
550typedef void vsf_eth_isr_handler_t(void *target_ptr, vsf_eth_t *eth_ptr,
552
557typedef struct vsf_eth_isr_t {
562
570typedef struct vsf_eth_cfg_t {
576#endif
577
586#if VSF_ETH_CFG_REIMPLEMENT_TYPE_STATUS == DISABLED
587typedef struct vsf_eth_status_t {
588 union {
591 struct {
594 };
595 };
597#endif
598
599#if VSF_ETH_CFG_REIMPLEMENT_TYPE_CAPABILITY == DISABLED
610typedef struct vsf_eth_capability_t {
611#if VSF_ETH_CFG_INHERIT_HAL_CAPABILITY == ENABLED
613#endif
614
615 vsf_eth_mode_t support_modes;
618
619 union {
621 struct {
628
635 };
636 };
638#endif
639
640#if VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_MODE == DISABLED
641typedef enum vsf_eth_buf_mode_t {
644
645 // TODO: Add more modes as needed
647#endif
648
649#if VSF_ETH_CFG_REIMPLEMENT_TYPE_BUF_DESC == DISABLED
650typedef struct vsf_eth_buf_desc_t {
652 void *payload;
653 size_t len;
655#endif
656
657#if VSF_ETH_CFG_REIMPLEMENT_TYPE_SEND_BUF_DESC == DISABLED
661#endif
662
663#if VSF_ETH_CFG_REIMPLEMENT_TYPE_RECV_BUF_DESC == DISABLED
667#endif
668
669#if VSF_ETH_CFG_REIMPLEMENT_TYPE_SG_SEND_BUF == DISABLED
673#endif
674
675#if VSF_ETH_CFG_REIMPLEMENT_TYPE_SG_RECV_BUF == DISABLED
679#endif
680
681#if VSF_ETH_CFG_REIMPLEMENT_TYPE_CTRL == DISABLED
682typedef enum vsf_eth_ctrl_t {
684
685 /* IEEE 802.3 Clause 45 Configuration Commands */
686 /*
687 VSF_ETH_CTRL_PHY_C45_READ_REG, //!< \~english Read PHY register using Clause 45 access (vsf_eth_phy_c45_reg_access_t *) \~chinese 使用 Clause 45 访问方式读取 PHY 寄存器 (vsf_eth_phy_c45_reg_access_t *)
688 VSF_ETH_CTRL_PHY_C45_WRITE_REG, //!< \~english Write PHY register using Clause 45 access (vsf_eth_phy_c45_reg_access_t *) \~chinese 使用 Clause 45 访问方式写入 PHY 寄存器 (vsf_eth_phy_c45_reg_access_t *)
689 */
690
691 /* PLCA (Physical Layer Collision Avoidance) Configuration Commands - For 10BASE-T1S Ethernet */
692 /*
693 VSF_ETH_CTRL_PHY_PLCA_ENABLE, //!< \~english Enable PLCA operation (bool) \~chinese 启用 PLCA 操作 (bool)
694 VSF_ETH_CTRL_PHY_PLCA_GET_STATUS, //!< \~english Get PLCA status (bool *) \~chinese 获取 PLCA 状态 (bool *)
695 VSF_ETH_CTRL_PHY_PLCA_SET_NODE_ID, //!< \~english Set PLCA node ID (uint8_t) \~chinese 设置 PLCA 节点 ID (uint8_t)
696 VSF_ETH_CTRL_PHY_PLCA_SET_NODE_COUNT, //!< \~english Set PLCA node count (uint8_t) \~chinese 设置 PLCA 节点数量 (uint8_t)
697 VSF_ETH_CTRL_PHY_PLCA_SET_BURST_COUNT, //!< \~english Set PLCA burst count (uint8_t) \~chinese 设置 PLCA 突发计数 (uint8_t)
698 VSF_ETH_CTRL_PHY_PLCA_SET_BURST_TIMER, //!< \~english Set PLCA burst timer (uint8_t) \~chinese 设置 PLCA 突发计时器 (uint8_t)
699 */
700
701 // TODO: Add more control commands as needed
703#endif
704
710typedef struct vsf_eth_op_t {
712#undef __VSF_HAL_TEMPLATE_API
713#define __VSF_HAL_TEMPLATE_API VSF_HAL_TEMPLATE_API_FP
715
716 VSF_ETH_APIS(vsf_eth)
718
719
720#if VSF_ETH_CFG_MULTI_CLASS == ENABLED
725struct vsf_eth_t {
727};
728#endif
729
730/*============================ PROTOTYPES ====================================*/
731
751extern vsf_err_t vsf_eth_init(vsf_eth_t *eth_ptr, vsf_eth_cfg_t *cfg_ptr);
752
764extern void vsf_eth_fini(vsf_eth_t *eth_ptr);
765
784
796extern fsm_rt_t vsf_eth_enable(vsf_eth_t *eth_ptr);
797
809extern fsm_rt_t vsf_eth_disable(vsf_eth_t *eth_ptr);
810
824extern void vsf_eth_isr_enable(vsf_eth_t *eth_ptr, vsf_eth_irq_mask_t isr_mask);
825
839extern void vsf_eth_isr_disable(vsf_eth_t *eth_ptr, vsf_eth_irq_mask_t isr_mask);
840
853
866
885
904
905
926
945
963extern vsf_err_t vsf_eth_ctrl(vsf_eth_t *eth_ptr, vsf_eth_ctrl_t ctrl, void *param);
964
980extern vsf_err_t vsf_eth_phy_read_reg(vsf_eth_t *eth_ptr, uint16_t reg_addr, uint32_t *value_ptr);
981
998
1027
1028/*============================ ETHROFIED FUNCTIONS ===========================*/
1029
1031#if VSF_ETH_CFG_FUNCTION_RENAME == ENABLED
1032# define __vsf_eth_t VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_t)
1033# define vsf_eth_init(__ETH, ...) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_init)((__vsf_eth_t *)(__ETH), ##__VA_ARGS__)
1034# define vsf_eth_fini(__ETH) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_fini)((__vsf_eth_t *)(__ETH))
1035# define vsf_eth_get_configuration(__ETH, ...) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_get_configuration)((__vsf_eth_t *)(__ETH), ##__VA_ARGS__)
1036# define vsf_eth_enable(__ETH) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_enable)((__vsf_eth_t *)(__ETH))
1037# define vsf_eth_disable(__ETH) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_disable)((__vsf_eth_t *)(__ETH))
1038# define vsf_eth_status(__ETH) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_status)((__vsf_eth_t *)(__ETH))
1039# define vsf_eth_capability(__ETH) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_capability)((__vsf_eth_t *)(__ETH))
1040# define vsf_eth_send_request(__ETH, ...) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_send_request)((__vsf_eth_t *)(__ETH), ##__VA_ARGS__)
1041# define vsf_eth_send_sg_request(__ETH, ...) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_send_sg_request)((__vsf_eth_t *)(__ETH), ##__VA_ARGS__)
1042# define vsf_eth_recv_request(__ETH, ...) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_recv_request)((__vsf_eth_t *)(__ETH), ##__VA_ARGS__)
1043# define vsf_eth_recv_sg_request(__ETH, ...) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_recv_sg_request)((__vsf_eth_t *)(__ETH), ##__VA_ARGS__)
1044# define vsf_eth_ctrl(__ETH, ...) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_ctrl)((__vsf_eth_t *)(__ETH), ##__VA_ARGS__)
1045# define vsf_eth_phy_read_reg(__ETH, ...) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_phy_read_reg)((__vsf_eth_t *)(__ETH), ##__VA_ARGS__)
1046# define vsf_eth_phy_write_reg(__ETH, ...) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_phy_write_reg)((__vsf_eth_t *)(__ETH), ##__VA_ARGS__)
1047# define vsf_eth_phy_set_mode(__ETH, ...) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_phy_set_mode)((__vsf_eth_t *)(__ETH), ##__VA_ARGS__)
1048# define vsf_eth_phy_get_link_status(__ETH, ...) VSF_MCONNECT(VSF_ETH_CFG_PREFIX, _eth_phy_get_link_status)((__vsf_eth_t *)(__ETH), ##__VA_ARGS__)
1049#endif
1051
1052#ifdef __cplusplus
1053}
1054#endif
1055
1056#endif /*__VSF_TEMPLATE_ETH_H__*/
vsf_err_t
Definition __type.h:42
vsf_arch_prio_t
Definition cortex_a_generic.h:88
vsf_eth_irq_mask_t
Definition eth.h:149
vsf_eth_buf_mode_t
Definition eth.h:222
vsf_eth_mode_t
Definition eth.h:140
vsf_eth_phy_mode_t
Definition eth.h:127
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
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
unsigned short uint16_t
Definition stdint.h:7
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
size_t len
Definition vsf_template_eth.h:653
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
Supported modes, refer to vsf_eth_mode_t.
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 operation function pointer type, used for ETH Multi Class support.
Definition vsf_template_eth.h:710
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
const vsf_eth_op_t * op
Definition vsf_template_eth.h:726
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
fsm_rt_t
Definition vsf_fsm.h:315
vsf_err_t vsf_eth_init(vsf_eth_t *eth_ptr, vsf_eth_cfg_t *cfg_ptr)
Initialize a ETH instance.
Definition eth_common.c:38
vsf_err_t vsf_eth_recv_sg_request(vsf_eth_t *eth_ptr, vsf_eth_recv_sg_buf_desc_t *sg_ptr, uint32_t sg_count)
Receive data using scatter-gather buffers from ETH instance.
Definition eth_common.c:129
void vsf_eth_fini(vsf_eth_t *eth_ptr)
Finalize a ETH instance.
Definition eth_common.c:47
#define VSF_ETH_APIS(__prefix_name)
ETH API template, used to generate ETH type, specific prefix function declarations,...
Definition vsf_template_eth.h:272
vsf_eth_buf_desc_t vsf_eth_recv_buf_desc_t
Definition vsf_template_eth.h:666
void vsf_eth_isr_disable(vsf_eth_t *eth_ptr, vsf_eth_irq_mask_t isr_mask)
Disable ETH instance interrupt.
vsf_eth_irq_mask_t
Definition vsf_template_eth.h:511
@ VSF_ETH_IRQ_MASK_ERROR
Error interrupt mask.
Definition vsf_template_eth.h:520
@ VSF_ETH_IRQ_MASK_RX_AVAILABLE
RX data available interrupt mask.
Definition vsf_template_eth.h:512
@ VSF_ETH_IRQ_MASK_PHY_LINK_CHANGE
PHY link change interrupt mask.
Definition vsf_template_eth.h:518
@ VSF_ETH_IRQ_MASK_SG_TX_COMPLETE
Scatter-gather TX complete interrupt mask.
Definition vsf_template_eth.h:516
@ VSF_ETH_IRQ_MASK_SG_RX_AVAILABLE
Scatter-gather RX available interrupt mask.
Definition vsf_template_eth.h:515
@ VSF_ETH_IRQ_MASK_TX_COMPLETE
TX complete interrupt mask.
Definition vsf_template_eth.h:513
struct vsf_eth_cfg_t vsf_eth_cfg_t
ETH configuration structure.
fsm_rt_t vsf_eth_enable(vsf_eth_t *eth_ptr)
Enable a ETH instance.
Definition eth_common.c:66
struct vsf_eth_status_t vsf_eth_status_t
ETH status information structure Contains the current status of ETH operations and FIFO thresholds.
vsf_err_t vsf_eth_send_request(vsf_eth_t *eth_ptr, vsf_eth_send_buf_desc_t *buf_ptr)
Send a buffer over ETH instance.
Definition eth_common.c:102
fsm_rt_t vsf_eth_disable(vsf_eth_t *eth_ptr)
Disable a ETH instance.
Definition eth_common.c:75
vsf_err_t vsf_eth_get_configuration(vsf_eth_t *eth_ptr, vsf_eth_cfg_t *cfg_ptr)
Get current configuration of an ETH instance.
Definition eth_common.c:56
vsf_err_t vsf_eth_ctrl(vsf_eth_t *eth_ptr, vsf_eth_ctrl_t ctrl, void *param)
Control ETH instance.
Definition eth_common.c:138
vsf_eth_ctrl_t
Definition vsf_template_eth.h:682
@ VSF_ETH_CTRL_GET_MAC_ADDRESS
Get MAC address (uint8_t *)
Definition vsf_template_eth.h:683
vsf_eth_buf_mode_t
Definition vsf_template_eth.h:641
@ VSF_ETH_BUF_MODE_TX_CHECKSUM_OFFLOAD
TX checksum offload mode.
Definition vsf_template_eth.h:642
@ VSF_ETH_BUF_MODE_RX_CHECKSUM_OFFLOAD
RX checksum offload mode.
Definition vsf_template_eth.h:643
vsf_err_t vsf_eth_phy_write_reg(vsf_eth_t *eth_ptr, uint16_t reg_addr, uint32_t value)
Write a value to a PHY register.
struct vsf_eth_buf_desc_t vsf_eth_buf_desc_t
vsf_eth_capability_t vsf_eth_capability(vsf_eth_t *eth_ptr)
Get the capability of ETH instance.
Definition eth_common.c:156
vsf_err_t vsf_eth_recv_request(vsf_eth_t *eth_ptr, vsf_eth_recv_buf_desc_t *buf_ptr)
Receive a buffer from ETH instance.
Definition eth_common.c:111
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_MODE_TX_CHECKSUM_OFFLOAD
TX checksum offload mode.
Definition vsf_template_eth.h:393
@ VSF_ETH_MODE_RX_CHECKSUM_OFFLOAD
RX checksum offload mode.
Definition vsf_template_eth.h:394
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
@ VSF_ETH_PHY_MODE_LINK_UP
Link up mode.
Definition vsf_template_eth.h:344
@ VSF_ETH_PHY_MODE_SPEED_1000M
1000M speed mode
Definition vsf_template_eth.h:339
@ VSF_ETH_PHY_MODE_SPEED_100M
100M speed mode
Definition vsf_template_eth.h:338
@ VSF_ETH_PHY_MODE_SPEED_10M
10M speed mode
Definition vsf_template_eth.h:337
@ VSF_ETH_PHY_MODE_DUPLEX_HALF
Half duplex mode.
Definition vsf_template_eth.h:341
@ VSF_ETH_PHY_MODE_DUPLEX_FULL
Full duplex mode.
Definition vsf_template_eth.h:342
vsf_err_t vsf_eth_send_sg_request(vsf_eth_t *eth_ptr, vsf_eth_send_sg_buf_desc_t *sg_ptr, uint32_t sg_count)
Send a scatter-gather buffer over ETH instance.
Definition eth_common.c:120
vsf_err_t vsf_eth_phy_set_mode(vsf_eth_t *eth_ptr, vsf_eth_phy_mode_t mode)
Configure the PHY operating mode.
vsf_eth_buf_desc_t vsf_eth_send_sg_buf_desc_t
Definition vsf_template_eth.h:672
vsf_eth_buf_desc_t vsf_eth_send_buf_desc_t
Definition vsf_template_eth.h:660
struct vsf_eth_capability_t vsf_eth_capability_t
Predefined VSF ETH capability that can be reimplemented in specific hal drivers. The vsf_eth_capabili...
vsf_err_t vsf_eth_phy_read_reg(vsf_eth_t *eth_ptr, uint16_t reg_addr, uint32_t *value_ptr)
Read a PHY register.
vsf_err_t vsf_eth_phy_get_link_status(vsf_eth_t *eth_ptr, vsf_eth_phy_mode_t *phy_mode_ptr)
Get the current link status of the PHY.
vsf_eth_buf_desc_t vsf_eth_recv_sg_buf_desc_t
Definition vsf_template_eth.h:678
void vsf_eth_isr_handler_t(void *target_ptr, vsf_eth_t *eth_ptr, vsf_eth_irq_mask_t irq_mask)
ETH interrupt handler type declaration.
Definition vsf_template_eth.h:550
@ VSF_ETH_PHY_MODE_SPEED_MASK
Definition vsf_template_eth.h:361
@ VSF_ETH_PHY_MODE_ALL_BITS_MASK
Definition vsf_template_eth.h:369
@ VSF_ETH_PHY_MODE_DUPLEX_MASK
Definition vsf_template_eth.h:365
@ VSF_ETH_MODE_OFFLOAD_MASK
Definition vsf_template_eth.h:501
@ VSF_ETH_MODE_ALL_BITS_MASK
Definition vsf_template_eth.h:505
void vsf_eth_isr_enable(vsf_eth_t *eth_ptr, vsf_eth_irq_mask_t isr_mask)
Enable ETH instance interrupt.
struct vsf_eth_isr_t vsf_eth_isr_t
ETH interrupt configuration structure.
vsf_eth_status_t vsf_eth_status(vsf_eth_t *eth_ptr)
Get the status of ETH instance.
Definition eth_common.c:147
@ VSF_ETH_IRQ_MASK_ALL
Definition vsf_template_eth.h:526
Generated from commit: vsfteam/vsf@8634e61