📄 ether_test.h
字号:
//=============================================================================//// ether_test.h - Cyclone Diagnostics////=============================================================================//####COPYRIGHTBEGIN####// // ------------------------------------------- // The contents of this file are subject to the Red Hat eCos Public License // Version 1.1 (the "License"); you may not use this file except in // compliance with the License. You may obtain a copy of the License at // http://www.redhat.com/ // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the // License for the specific language governing rights and limitations under // the License. // // The Original Code is eCos - Embedded Configurable Operating System, // released September 30, 1998. // // The Initial Developer of the Original Code is Red Hat. // Portions created by Red Hat are // Copyright (C) 2001 Red Hat, Inc. // All Rights Reserved. // ------------------------------------------- // //####COPYRIGHTEND####//=============================================================================//#####DESCRIPTIONBEGIN####//// Author(s): Scott Coulter, Jeff Frazier, Eric Breeden// Contributors:// Date: 2001-01-25// Purpose: // Description: ////####DESCRIPTIONEND####////===========================================================================*/#define ETHERMTU 1500#define OK 0#define ERROR -1#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endif#ifndef NULL#define NULL 0#endif/* Starting location for ether_test private malloc pool */#define ETHER_MEM_POOL 0xa0400000 /* above top of diags. BE CAREFUL *//* Length of interrupt time-out loops. */#define MAX_DELAY 6000000/* PCI Runtime Register offsets */#define SCB_OFFSET 0#define SCB_STAT_REG(n) ((UINT16 *)(n + 0x00))#define SCB_CMD_REG(n) ((UINT16 *)(n + 0x02))#define SCB_GENPTR_REG(n) ((UINT32 *)(n + 0x04))#define PORT_REG(n) ((UINT32 *)(n + 0x08))#define FLASH_CTL_REG(n) ((UINT16 *)(n + 0x0c))#define EEPROM_CTL_REG(n) ((UINT16 *)(n + 0x0e))#define MDI_CTL_REG(n) ((UINT32 *)(n + 0x10))#define RXBC_REG(n) ((UINT32 *)(n + 0x14))/* PORT* commands (lower 4 bits) */#define PORT_RESET ((UINT32) 0x0)#define PORT_SELF_TEST ((UINT32) 0x1)#define PORT_DUMP ((UINT32) 0x3)/* Individual Address offset into '557's serial eeprom */#define IA_OFFSET 0/* Command codes for the command fields of command descriptor blocks */#define NOP 0#define IA_SETUP 1#define CONFIGURE 2#define MC_SETUP 3#define TRANSMIT 4#define TDR 5#define DUMP 6#define DIAGNOSE 7/* Commands for CUC in command word of SCB */#define CU_NOP 0#define CU_START 1#define CU_RESUME 2#define LOAD_DUMPCTR_ADDR 4 /* Load Dump Counters Address */#define DUMP_STAT_COUNTERS 5 /* Dump Statistical Counters */#define LOAD_CU_BASE 6 /* Load CU Base Register */#define DUMP_RESET_COUNTERS 7 /* Dump and Reset Statistical Counters *//* Commands for RUC in command word of SCB */#define RU_NOP 0#define RU_START 1#define RU_RESUME 2#define RU_ABORT 4#define LOAD_HDS 5 /* Load Header Data Size */#define LOAD_RU_BASE 6 /* Load RU Base Register */#define RBD_RESUME 7 /* Resume frame reception *//* Misc. defines */#define END_OF_LIST 1#define BUSY 1/* RU Status field */#define RU_IDLE 0x0#define RU_SUSPENDED 0x1#define RU_NORESOURCE 0x2#define RU_READY 0x4#define RU_SUSP_NORBD 0x5#define RU_NORSRC_NORBD 0x6#define RU_READY_NORBD 0xc/* Mask for interrupt status bits in SCB - six possible sources */#define I557_INT 0xfc00/* MDI definitions */#define MDI_WRITE_OP 0x01#define MDI_READ_OP 0x02#define MDI_NOT_READY 0#define MDI_POLLED 0#define MDI_DEFAULT_PHY_ADDR 1 /* when only one PHY *//* PHY device register addresses *//* generic register addresses */#define MDI_PHY_CTRL 0#define MDI_PHY_STAT 1#define MDI_PHY_ID_1 2#define MDI_PHY_ID_2 3#define MDI_PHY_AUTO_AD 4#define MDI_PHY_AUTO_LNK 5#define MDI_PHY_AUTO_EXP 6#define I82555_PHY_ID 0x02a80150#define ICS1890_PHY_ID 0x0015f420#define DP83840_PHY_ID 0x20005c00#define I82553_PHY_ID 0x02a80350#define I82553_REVAB_PHY_ID 0x03e00000/* I82555/558 Status and Control register */#define I82555_STATCTRL_REG 0x10#define I82555_100_MBPS (1 << 1)#define I82555_10_MBPS (0 << 1)#define REVISION_MASK 0xf/* DP83840 specific register information */#define DP83840_PCR_REG 0x17#define PCR_TXREADY_SEL (1 << 10)#define PCR_FCONNECT (1 << 5)/* ICS1890 QuickPoll Detailed Status register */#define ICS1890_QUICKPOLL_REG 0x11#define QUICK_100_MBPS (1 << 15)#define QUICK_10_MBPS (0 << 15)#define QUICK_LINK_VALID (1 << 0)#define QUICK_LINK_INVALID (0 << 0)#define DP83840_PHY_ADDR_REG 0x19#define PHY_ADDR_CON_STATUS (1 << 5)#define PHY_ADDR_SPEED_10_MBPS (1 << 6)#define PHY_ADDR_SPEED_100_MBPS (0 << 6)#define DP83840_LOOPBACK_REG 0x18#define TWISTER_LOOPBACK (0x1 << 8)#define REMOTE_LOOPBACK (0x2 << 8)#define CLEAR_LOOP_BITS ~(TWISTER_LOOPBACK | REMOTE_LOOPBACK)/* 82553 specific register information */#define I82553_PHY_EXT_REG0 0x10#define EXT_REG0_100_MBPS (1 << 1)#define GET_REV_CNTR(n) ((n & 0x00e0) >> 5)#define I82553_PHY_EXT_REG1 0x14/* MDI Control Register bits */#define MDI_CTRL_COLL_TEST (1 << 7)#define MDI_CTRL_FULL_DUPLEX (1 << 8)#define MDI_CTRL_RESTART_AUTO (1 << 9)#define MDI_CTRL_ISOLATE (1 << 10)#define MDI_CTRL_POWER_DOWN (1 << 11)#define MDI_CTRL_AUTO_ENAB (1 << 12)#define MDI_CTRL_AUTO_DISAB (0 << 12)#define MDI_CTRL_100_MBPS (1 << 13)#define MDI_CTRL_10_MBPS (0 << 13)#define MDI_CTRL_LOOPBACK (1 << 14)#define MDI_CTRL_RESET (1 << 15)/* MDI Status Register bits */#define MDI_STAT_EXTENDED (1 << 0)#define MDI_STAT_JABBER (1 << 1)#define MDI_STAT_LINK (1 << 2)#define MDI_STAT_AUTO_CAPABLE (1 << 3)#define MDI_STAT_REMOTE_FLT (1 << 4)#define MDI_STAT_AUTO_COMPLETE (1 << 5)#define MDI_STAT_10BASET_HALF (1 << 11)#define MDI_STAT_10BASET_FULL (1 << 12)#define MDI_STAT_TX_HALF (1 << 13)#define MDI_STAT_TX_FULL (1 << 14)#define MDI_STAT_T4_CAPABLE (1 << 15)/* * Structure allignments. All addresses passed to the 557 must be * even (bit 0 = 0), EXCEPT for addresses passed by the PORT* * function (self-test address & dump address, which must be 16-byte aligned. */#define SELF_TEST_ALIGN 16#define DUMP_ALIGN 16#define DEF_ALIGN 4/* * Bit definitions for the configure command. NOTE: Byte offsets are * offsets from the start of the structure (8 and up) to correspond * with the offsets in the PRO/100 PCI Adapter manual. *//* Byte 0 */#define BYTE_COUNT 0x16 /* use all 22 configure bytes */#define CONFIG_BYTE_00 (BYTE_COUNT)/* Byte 1 */#define RX_FIFO_LIMIT 0x08#define CONFIG_BYTE_01 (RX_FIFO_LIMIT)/* Byte 2 */#define ADAPT_IFS 0x00#define CONFIG_BYTE_02 (ADAPT_IFS)/* Byte 3 - must be 0x00 */#define CONFIG_BYTE_03 (0x00)/* Byte 4 */#define RX_DMA_BCOUNT 0x00#define CONFIG_BYTE_04 (RX_DMA_BCOUNT)/* Byte 5 */#define TX_DMA_BCOUNT 0x00#define DMA_BCOUNT_ENAB 0x80#define CONFIG_BYTE_05 (DMA_BCOUNT_ENAB | TX_DMA_BCOUNT)/* Byte 6 */#define NO_LATE_SCB 0x00#define NO_TNO_INT 0x00 /* no interrupt on xmit failure */#define INT_CU_IDLE 0x08 /* interrupt when CU goes idle */#define NO_SV_BAD_FRAME 0x00 /* don't save bad frames */#define DISCARD_RX_OVER 0x00 /* discard overrun frames */#define BYTE6_REQUD 0x32 /* required "1" bits */#define CONFIG_BYTE_06 (NO_LATE_SCB | NO_TNO_INT | INT_CU_IDLE |\ NO_SV_BAD_FRAME | DISCARD_RX_OVER | BYTE6_REQUD)/* Byte 7 */#define DISCARD_SHORT_RX 0x00 /* discard short rx frames */#define ONE_URUN_RETRY 0x02 /* one underrun retry */#define CONFIG_BYTE_07 (DISCARD_SHORT_RX | ONE_URUN_RETRY)/* Byte 8 */#define USE_503_MODE 0x00#define USE_MII_MODE 0x01#define CONFIG_BYTE_08 (USE_MII_MODE)/* Byte 9 */#define CONFIG_BYTE_09 (0x00)/* Byte 10 */#define INSERT_SRC_ADDR 0 /* Source address comes from IA of '557 */#define PREAMBLE_LEN 0x20 /* 7 bytes */#define NO_LOOP_BACK 0x00#define INT_LOOP_BACK 0x40#define EXT_LOOP_BACK 0xc0#define BYTE10_REQUD 0x06 /* required "1" bits */#define CONFIG_BYTE_10 (NO_LOOP_BACK | PREAMBLE_LEN | INSERT_SRC_ADDR | BYTE10_REQUD)/* Byte 11 */#define LIN_PRIORITY 0 /* normal CSMA/CD */#define CONFIG_BYTE_11 (LIN_PRIORITY)/* Byte 12 */#define LIN_PRIORITY_MODE 0#define IF_SPACING 96 /* inter-frame spacing */#define CONFIG_BYTE_12 (IF_SPACING | LIN_PRIORITY_MODE)/* Byte 13 */#define CONFIG_BYTE_13 (0x00)/* Byte 14 */#define CONFIG_BYTE_14 (0xf2)/* Byte 15 */#define PROM_MODE 0 /* not promiscuous */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -