📄 440gx_enet.h
字号:
/*----------------------------------------------------------------------------+|| This source code has been made available to you by IBM on an AS-IS| basis. Anyone receiving this source is licensed under IBM| copyrights to use it in any way he or she deems fit, including| copying it, modifying it, compiling it, and redistributing it either| with or without modifications. No license under IBM patents or| patent applications is to be implied by the copyright license.|| Any user of this software should understand that IBM cannot provide| technical support for this software and will not be responsible for| any consequences resulting from the use of this software.|| Any person who transfers this source code or any derivative work| must include the IBM copyright notice, this paragraph, and the| preceding two paragraphs in the transferred software.|| COPYRIGHT I B M CORPORATION 1999| LICENSED MATERIAL - PROGRAM PROPERTY OF I B M+----------------------------------------------------------------------------*//*----------------------------------------------------------------------------+|| File Name: enetemac.h|| Function: Header file for the EMAC3 macro on the 405GP.|| Author: Mark Wisner|| Change Activity-|| Date Description of Change BY| --------- --------------------- ---| 29-Apr-99 Created MKW|+----------------------------------------------------------------------------*//*----------------------------------------------------------------------------+| 19-Nov-03 Travis Sawyer, Sandburst Corporation, tsawyer@sandburst.com| ported to handle 440GP and 440GX multiple EMACs+----------------------------------------------------------------------------*/#ifndef _emacgx_enet_h_#define _emacgx_enet_h_#if defined(CONFIG_440)#include <net.h>#include "405_mal.h"/*-----------------------------------------------------------------------------+| General enternet defines. 802 frames are not supported.+-----------------------------------------------------------------------------*/#define ENET_ADDR_LENGTH 6#define ENET_ARPTYPE 0x806#define ARP_REQUEST 1#define ARP_REPLY 2#define ENET_IPTYPE 0x800#define ARP_CACHE_SIZE 5#define NUM_TX_BUFF 1#define NUM_RX_BUFF PKTBUFSRXstruct enet_frame { unsigned char dest_addr[ENET_ADDR_LENGTH]; unsigned char source_addr[ENET_ADDR_LENGTH]; unsigned short type; unsigned char enet_data[1];};struct arp_entry { unsigned long inet_address; unsigned char mac_address[ENET_ADDR_LENGTH]; unsigned long valid; unsigned long sec; unsigned long nsec;};/* Statistic Areas */#define MAX_ERR_LOG 10typedef struct emac_stats_st{ /* Statistic Block */ int data_len_err; int rx_frames; int rx; int rx_prot_err; int int_err; int pkts_tx; int pkts_rx; int pkts_handled; short tx_err_log[MAX_ERR_LOG]; short rx_err_log[MAX_ERR_LOG];} EMAC_STATS_ST, *EMAC_STATS_PST;/* Structure containing variables used by the shared code (440gx_enet.c) */typedef struct emac_440gx_hw_st { uint32_t hw_addr; /* EMAC offset */ uint32_t tah_addr; /* TAH offset */ uint32_t phy_id; uint32_t phy_addr; uint32_t original_fc; uint32_t txcw; uint32_t autoneg_failed; uint32_t emac_ier; volatile mal_desc_t *tx; volatile mal_desc_t *rx; bd_t *bis; /* for eth_init upon mal error */ mal_desc_t *alloc_tx_buf; mal_desc_t *alloc_rx_buf; char *txbuf_ptr; uint16_t devnum; int get_link_status; int tbi_compatibility_en; int tbi_compatibility_on; int fc_send_xon; int report_tx_early; int first_init; int tx_err_index; int rx_err_index; int rx_slot; /* MAL Receive Slot */ int rx_i_index; /* Receive Interrupt Queue Index */ int rx_u_index; /* Receive User Queue Index */ int tx_slot; /* MAL Transmit Slot */ int tx_i_index; /* Transmit Interrupt Queue Index */ int tx_u_index; /* Transmit User Queue Index */ int rx_ready[NUM_RX_BUFF]; /* Receive Ready Queue */ int tx_run[NUM_TX_BUFF]; /* Transmit Running Queue */ int is_receiving; /* sync with eth interrupt */ int print_speed; /* print speed message upon start */ EMAC_STATS_ST stats;} EMAC_440GX_HW_ST, *EMAC_440GX_HW_PST;#if defined(CONFIG_440_GX)#define EMAC_NUM_DEV 4#elif defined(CONFIG_440) && !defined(CONFIG_440_GX)#define EMAC_NUM_DEV 2#else#warning Bad configuration#endif/*ZMII Bridge Register addresses */#define ZMII_BASE (CFG_PERIPHERAL_BASE + 0x0780)#define ZMII_FER (ZMII_BASE)#define ZMII_SSR (ZMII_BASE + 4)#define ZMII_SMIISR (ZMII_BASE + 8)#define ZMII_RMII 0x22000000#define ZMII_MDI0 0x80000000/* ZMII FER Register Bit Definitions */#define ZMII_FER_MDI (0x8)#define ZMII_FER_SMII (0x4)#define ZMII_FER_RMII (0x2)#define ZMII_FER_MII (0x1)#define ZMII_FER_RSVD11 (0x00200000)#define ZMII_FER_RSVD10 (0x00100000)#define ZMII_FER_RSVD14_31 (0x0003FFFF)#define ZMII_FER_V(__x) (((3 - __x) * 4) + 16)/* ZMII Speed Selection Register Bit Definitions */#define ZMII_SSR_SCI (0x4)#define ZMII_SSR_FSS (0x2)#define ZMII_SSR_SP (0x1)#define ZMII_SSR_RSVD16_31 (0x0000FFFF)#define ZMII_SSR_V(__x) (((3 - __x) * 4) + 16)/* ZMII SMII Status Register Bit Definitions */#define ZMII_SMIISR_E1 (0x80)#define ZMII_SMIISR_EC (0x40)#define ZMII_SMIISR_EN (0x20)#define ZMII_SMIISR_EJ (0x10)#define ZMII_SMIISR_EL (0x08)#define ZMII_SMIISR_ED (0x04)#define ZMII_SMIISR_ES (0x02)#define ZMII_SMIISR_EF (0x01)#define ZMII_SMIISR_V(__x) ((3 - __x) * 8)/* RGMII Register Addresses */#define RGMII_BASE (CFG_PERIPHERAL_BASE + 0x0790)#define RGMII_FER (RGMII_BASE + 0x00)#define RGMII_SSR (RGMII_BASE + 0x04)/* RGMII Function Enable (FER) Register Bit Definitions *//* Note: for EMAC 2 and 3 only, 440GX only */#define RGMII_FER_DIS (0x00)#define RGMII_FER_RTBI (0x04)#define RGMII_FER_RGMII (0x05)#define RGMII_FER_TBI (0x06)#define RGMII_FER_GMII (0x07)#define RGMII_FER_V(__x) ((__x - 2) * 4)/* RGMII Speed Selection Register Bit Definitions */#define RGMII_SSR_SP_10MBPS (0x00)#define RGMII_SSR_SP_100MBPS (0x02)#define RGMII_SSR_SP_1000MBPS (0x04)#define RGMII_SSR_V(__x) ((__x -2) * 8)/*---------------------------------------------------------------------------+| TCP/IP Acceleration Hardware (TAH) 440GX Only+---------------------------------------------------------------------------*/#if defined(CONFIG_440_GX)#define TAH_BASE (CFG_PERIPHERAL_BASE + 0x0B50)#define TAH_REVID (TAH_BASE + 0x0) /* Revision ID (RO)*/#define TAH_MR (TAH_BASE + 0x10) /* Mode Register (R/W) */#define TAH_SSR0 (TAH_BASE + 0x14) /* Segment Size Reg 0 (R/W) */#define TAH_SSR1 (TAH_BASE + 0x18) /* Segment Size Reg 1 (R/W) */#define TAH_SSR2 (TAH_BASE + 0x1C) /* Segment Size Reg 2 (R/W) */#define TAH_SSR3 (TAH_BASE + 0x20) /* Segment Size Reg 3 (R/W) */#define TAH_SSR4 (TAH_BASE + 0x24) /* Segment Size Reg 4 (R/W) */#define TAH_SSR5 (TAH_BASE + 0x28) /* Segment Size Reg 5 (R/W) */#define TAH_TSR (TAH_BASE + 0x2C) /* Transmit Status Register (RO) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -