📄 e1000_hw.h
字号:
/* Receive Descriptor Control */#define E1000_RXDCTL_PTHRESH 0x0000003F /* RXDCTL Prefetch Threshold */#define E1000_RXDCTL_HTHRESH 0x00003F00 /* RXDCTL Host Threshold */#define E1000_RXDCTL_WTHRESH 0x003F0000 /* RXDCTL Writeback Threshold */#define E1000_RXDCTL_GRAN 0x01000000 /* RXDCTL Granularity *//* Transmit Descriptor Control */#define E1000_TXDCTL_PTHRESH 0x000000FF /* TXDCTL Prefetch Threshold */#define E1000_TXDCTL_HTHRESH 0x0000FF00 /* TXDCTL Host Threshold */#define E1000_TXDCTL_WTHRESH 0x00FF0000 /* TXDCTL Writeback Threshold */#define E1000_TXDCTL_GRAN 0x01000000 /* TXDCTL Granularity */#define E1000_TXDCTL_LWTHRESH 0xFE000000 /* TXDCTL Low Threshold */#define E1000_TXDCTL_FULL_TX_DESC_WB 0x01010000 /* GRAN=1, WTHRESH=1 *//* Transmit Configuration Word */#define E1000_TXCW_FD 0x00000020 /* TXCW full duplex */#define E1000_TXCW_HD 0x00000040 /* TXCW half duplex */#define E1000_TXCW_PAUSE 0x00000080 /* TXCW sym pause request */#define E1000_TXCW_ASM_DIR 0x00000100 /* TXCW astm pause direction */#define E1000_TXCW_PAUSE_MASK 0x00000180 /* TXCW pause request mask */#define E1000_TXCW_RF 0x00003000 /* TXCW remote fault */#define E1000_TXCW_NP 0x00008000 /* TXCW next page */#define E1000_TXCW_CW 0x0000ffff /* TxConfigWord mask */#define E1000_TXCW_TXC 0x40000000 /* Transmit Config control */#define E1000_TXCW_ANE 0x80000000 /* Auto-neg enable *//* Receive Configuration Word */#define E1000_RXCW_CW 0x0000ffff /* RxConfigWord mask */#define E1000_RXCW_NC 0x04000000 /* Receive config no carrier */#define E1000_RXCW_IV 0x08000000 /* Receive config invalid */#define E1000_RXCW_CC 0x10000000 /* Receive config change */#define E1000_RXCW_C 0x20000000 /* Receive config */#define E1000_RXCW_SYNCH 0x40000000 /* Receive config synch */#define E1000_RXCW_ANC 0x80000000 /* Auto-neg complete *//* Transmit Control */#define E1000_TCTL_RST 0x00000001 /* software reset */#define E1000_TCTL_EN 0x00000002 /* enable tx */#define E1000_TCTL_BCE 0x00000004 /* busy check enable */#define E1000_TCTL_PSP 0x00000008 /* pad short packets */#define E1000_TCTL_CT 0x00000ff0 /* collision threshold */#define E1000_TCTL_COLD 0x003ff000 /* collision distance */#define E1000_TCTL_SWXOFF 0x00400000 /* SW Xoff transmission */#define E1000_TCTL_PBE 0x00800000 /* Packet Burst Enable */#define E1000_TCTL_RTLC 0x01000000 /* Re-transmit on late collision */#define E1000_TCTL_NRTU 0x02000000 /* No Re-transmit on underrun *//* Receive Checksum Control */#define E1000_RXCSUM_PCSS_MASK 0x000000FF /* Packet Checksum Start */#define E1000_RXCSUM_IPOFL 0x00000100 /* IPv4 checksum offload */#define E1000_RXCSUM_TUOFL 0x00000200 /* TCP / UDP checksum offload */#define E1000_RXCSUM_IPV6OFL 0x00000400 /* IPv6 checksum offload *//* Definitions for power management and wakeup registers *//* Wake Up Control */#define E1000_WUC_APME 0x00000001 /* APM Enable */#define E1000_WUC_PME_EN 0x00000002 /* PME Enable */#define E1000_WUC_PME_STATUS 0x00000004 /* PME Status */#define E1000_WUC_APMPME 0x00000008 /* Assert PME on APM Wakeup */#define E1000_WUC_SPM 0x80000000 /* Enable SPM *//* Wake Up Filter Control */#define E1000_WUFC_LNKC 0x00000001 /* Link Status Change Wakeup Enable */#define E1000_WUFC_MAG 0x00000002 /* Magic Packet Wakeup Enable */#define E1000_WUFC_EX 0x00000004 /* Directed Exact Wakeup Enable */#define E1000_WUFC_MC 0x00000008 /* Directed Multicast Wakeup Enable */#define E1000_WUFC_BC 0x00000010 /* Broadcast Wakeup Enable */#define E1000_WUFC_ARP 0x00000020 /* ARP Request Packet Wakeup Enable */#define E1000_WUFC_IPV4 0x00000040 /* Directed IPv4 Packet Wakeup Enable */#define E1000_WUFC_IPV6 0x00000080 /* Directed IPv6 Packet Wakeup Enable */#define E1000_WUFC_FLX0 0x00010000 /* Flexible Filter 0 Enable */#define E1000_WUFC_FLX1 0x00020000 /* Flexible Filter 1 Enable */#define E1000_WUFC_FLX2 0x00040000 /* Flexible Filter 2 Enable */#define E1000_WUFC_FLX3 0x00080000 /* Flexible Filter 3 Enable */#define E1000_WUFC_ALL_FILTERS 0x000F00FF /* Mask for all wakeup filters */#define E1000_WUFC_FLX_OFFSET 16 /* Offset to the Flexible Filters bits */#define E1000_WUFC_FLX_FILTERS 0x000F0000 /* Mask for the 4 flexible filters *//* Wake Up Status */#define E1000_WUS_LNKC 0x00000001 /* Link Status Changed */#define E1000_WUS_MAG 0x00000002 /* Magic Packet Received */#define E1000_WUS_EX 0x00000004 /* Directed Exact Received */#define E1000_WUS_MC 0x00000008 /* Directed Multicast Received */#define E1000_WUS_BC 0x00000010 /* Broadcast Received */#define E1000_WUS_ARP 0x00000020 /* ARP Request Packet Received */#define E1000_WUS_IPV4 0x00000040 /* Directed IPv4 Packet Wakeup Received */#define E1000_WUS_IPV6 0x00000080 /* Directed IPv6 Packet Wakeup Received */#define E1000_WUS_FLX0 0x00010000 /* Flexible Filter 0 Match */#define E1000_WUS_FLX1 0x00020000 /* Flexible Filter 1 Match */#define E1000_WUS_FLX2 0x00040000 /* Flexible Filter 2 Match */#define E1000_WUS_FLX3 0x00080000 /* Flexible Filter 3 Match */#define E1000_WUS_FLX_FILTERS 0x000F0000 /* Mask for the 4 flexible filters *//* Management Control */#define E1000_MANC_SMBUS_EN 0x00000001 /* SMBus Enabled - RO */#define E1000_MANC_ASF_EN 0x00000002 /* ASF Enabled - RO */#define E1000_MANC_R_ON_FORCE 0x00000004 /* Reset on Force TCO - RO */#define E1000_MANC_RMCP_EN 0x00000100 /* Enable RCMP 026Fh Filtering */#define E1000_MANC_0298_EN 0x00000200 /* Enable RCMP 0298h Filtering */#define E1000_MANC_IPV4_EN 0x00000400 /* Enable IPv4 */#define E1000_MANC_IPV6_EN 0x00000800 /* Enable IPv6 */#define E1000_MANC_SNAP_EN 0x00001000 /* Accept LLC/SNAP */#define E1000_MANC_ARP_EN 0x00002000 /* Enable ARP Request Filtering */#define E1000_MANC_NEIGHBOR_EN 0x00004000 /* Enable Neighbor Discovery * Filtering */#define E1000_MANC_TCO_RESET 0x00010000 /* TCO Reset Occurred */#define E1000_MANC_RCV_TCO_EN 0x00020000 /* Receive TCO Packets Enabled */#define E1000_MANC_REPORT_STATUS 0x00040000 /* Status Reporting Enabled */#define E1000_MANC_SMB_REQ 0x01000000 /* SMBus Request */#define E1000_MANC_SMB_GNT 0x02000000 /* SMBus Grant */#define E1000_MANC_SMB_CLK_IN 0x04000000 /* SMBus Clock In */#define E1000_MANC_SMB_DATA_IN 0x08000000 /* SMBus Data In */#define E1000_MANC_SMB_DATA_OUT 0x10000000 /* SMBus Data Out */#define E1000_MANC_SMB_CLK_OUT 0x20000000 /* SMBus Clock Out */#define E1000_MANC_SMB_DATA_OUT_SHIFT 28 /* SMBus Data Out Shift */#define E1000_MANC_SMB_CLK_OUT_SHIFT 29 /* SMBus Clock Out Shift *//* Wake Up Packet Length */#define E1000_WUPL_LENGTH_MASK 0x0FFF /* Only the lower 12 bits are valid */#define E1000_MDALIGN 4096/* EEPROM Commands - Microwire */#define EEPROM_READ_OPCODE_MICROWIRE 0x6 /* EEPROM read opcode */#define EEPROM_WRITE_OPCODE_MICROWIRE 0x5 /* EEPROM write opcode */#define EEPROM_ERASE_OPCODE_MICROWIRE 0x7 /* EEPROM erase opcode */#define EEPROM_EWEN_OPCODE_MICROWIRE 0x13 /* EEPROM erase/write enable */#define EEPROM_EWDS_OPCODE_MICROWIRE 0x10 /* EEPROM erast/write disable *//* EEPROM Commands - SPI */#define EEPROM_MAX_RETRY_SPI 5000 /* Max wait of 5ms, for RDY signal */#define EEPROM_READ_OPCODE_SPI 0x3 /* EEPROM read opcode */#define EEPROM_WRITE_OPCODE_SPI 0x2 /* EEPROM write opcode */#define EEPROM_A8_OPCODE_SPI 0x8 /* opcode bit-3 = address bit-8 */#define EEPROM_WREN_OPCODE_SPI 0x6 /* EEPROM set Write Enable latch */#define EEPROM_WRDI_OPCODE_SPI 0x4 /* EEPROM reset Write Enable latch */#define EEPROM_RDSR_OPCODE_SPI 0x5 /* EEPROM read Status register */#define EEPROM_WRSR_OPCODE_SPI 0x1 /* EEPROM write Status register *//* EEPROM Size definitions */#define EEPROM_SIZE_16KB 0x1800#define EEPROM_SIZE_8KB 0x1400#define EEPROM_SIZE_4KB 0x1000#define EEPROM_SIZE_2KB 0x0C00#define EEPROM_SIZE_1KB 0x0800#define EEPROM_SIZE_512B 0x0400#define EEPROM_SIZE_128B 0x0000#define EEPROM_SIZE_MASK 0x1C00/* EEPROM Word Offsets */#define EEPROM_COMPAT 0x0003#define EEPROM_ID_LED_SETTINGS 0x0004#define EEPROM_SERDES_AMPLITUDE 0x0006 /* For SERDES output amplitude adjustment. */#define EEPROM_INIT_CONTROL1_REG 0x000A#define EEPROM_INIT_CONTROL2_REG 0x000F#define EEPROM_INIT_CONTROL3_PORT_B 0x0014#define EEPROM_INIT_CONTROL3_PORT_A 0x0024#define EEPROM_CFG 0x0012#define EEPROM_FLASH_VERSION 0x0032#define EEPROM_CHECKSUM_REG 0x003F/* Word definitions for ID LED Settings */#define ID_LED_RESERVED_0000 0x0000#define ID_LED_RESERVED_FFFF 0xFFFF#define ID_LED_DEFAULT ((ID_LED_OFF1_ON2 << 12) | \ (ID_LED_OFF1_OFF2 << 8) | \ (ID_LED_DEF1_DEF2 << 4) | \ (ID_LED_DEF1_DEF2))#define ID_LED_DEF1_DEF2 0x1#define ID_LED_DEF1_ON2 0x2#define ID_LED_DEF1_OFF2 0x3#define ID_LED_ON1_DEF2 0x4#define ID_LED_ON1_ON2 0x5#define ID_LED_ON1_OFF2 0x6#define ID_LED_OFF1_DEF2 0x7#define ID_LED_OFF1_ON2 0x8#define ID_LED_OFF1_OFF2 0x9#define IGP_ACTIVITY_LED_MASK 0xFFFFF0FF#define IGP_ACTIVITY_LED_ENABLE 0x0300#define IGP_LED3_MODE 0x07000000/* Mask bits for SERDES amplitude adjustment in Word 6 of the EEPROM */#define EEPROM_SERDES_AMPLITUDE_MASK 0x000F/* Mask bits for fields in Word 0x0a of the EEPROM */#define EEPROM_WORD0A_ILOS 0x0010#define EEPROM_WORD0A_SWDPIO 0x01E0#define EEPROM_WORD0A_LRST 0x0200#define EEPROM_WORD0A_FD 0x0400#define EEPROM_WORD0A_66MHZ 0x0800/* Mask bits for fields in Word 0x0f of the EEPROM */#define EEPROM_WORD0F_PAUSE_MASK 0x3000#define EEPROM_WORD0F_PAUSE 0x1000#define EEPROM_WORD0F_ASM_DIR 0x2000#define EEPROM_WORD0F_ANE 0x0800#define EEPROM_WORD0F_SWPDIO_EXT 0x00F0/* For checksumming, the sum of all words in the EEPROM should equal 0xBABA. */#define EEPROM_SUM 0xBABA/* EEPROM Map defines (WORD OFFSETS)*/#define EEPROM_NODE_ADDRESS_BYTE_0 0#define EEPROM_PBA_BYTE_1 8#define EEPROM_RESERVED_WORD 0xFFFF/* EEPROM Map Sizes (Byte Counts) */#define PBA_SIZE 4/* Collision related configuration parameters */#define E1000_COLLISION_THRESHOLD 16#define E1000_CT_SHIFT 4#define E1000_COLLISION_DISTANCE 64#define E1000_FDX_COLLISION_DISTANCE E1000_COLLISION_DISTANCE#define E1000_HDX_COLLISION_DISTANCE E1000_COLLISION_DISTANCE#define E1000_COLD_SHIFT 12/* Number of Transmit and Receive Descriptors must be a multiple of 8 */#define REQ_TX_DESCRIPTOR_MULTIPLE 8#define REQ_RX_DESCRIPTOR_MULTIPLE 8/* Default values for the transmit IPG register */#define DEFAULT_82542_TIPG_IPGT 10#define DEFAULT_82543_TIPG_IPGT_FIBER 9#define DEFAULT_82543_TIPG_IPGT_COPPER 8#define E1000_TIPG_IPGT_MASK 0x000003FF#define E1000_TIPG_IPGR1_MASK 0x000FFC00#define E1000_TIPG_IPGR2_MASK 0x3FF00000#define DEFAULT_82542_TIPG_IPGR1 2#define DEFAULT_82543_TIPG_IPGR1 8#define E1000_TIPG_IPGR1_SHIFT 10#define DEFAULT_82542_TIPG_IPGR2 10#define DEFAULT_82543_TIPG_IPGR2 6#define E1000_TIPG_IPGR2_SHIFT 20#define E1000_TXDMAC_DPP 0x00000001/* Adaptive IFS defines */#define TX_THRESHOLD_START 8#define TX_THRESHOLD_INCREMENT 10#define TX_THRESHOLD_DECREMENT 1#define TX_THRESHOLD_STOP 190#define TX_THRESHOLD_DISABLE 0#define TX_THRESHOLD_TIMER_MS 10000#define MIN_NUM_XMITS 1000#define IFS_MAX 80#define IFS_STEP 10#define IFS_MIN 40#define IFS_RATIO 4/* PBA constants */#define E1000_PBA_16K 0x0010 /* 16KB, default TX allocation */#define E1000_PBA_22K 0x0016#define E1000_PBA_24K 0x0018#define E1000_PBA_30K 0x001E#define E1000_PBA_40K 0x0028#define E1000_PBA_48K 0x0030 /* 48KB, default RX allocation *//* Flow Control Constants */#define FLOW_CONTROL_ADDRESS_LOW 0x00C28001#define FLOW_CONTROL_ADDRESS_HIGH 0x00000100#define FLOW_CONTROL_TYPE 0x8808/* The historical defaults for the flow control values are given below. */#define FC_DEFAULT_HI_THRESH (0x8000) /* 32KB */#define FC_DEFAULT_LO_THRESH (0x4000) /* 16KB */#define FC_DEFAULT_TX_TIMER (0x100) /* ~130 us *//* PCIX Config space */#define PCIX_COMMAND_REGISTER 0xE6#define PCIX_STATUS_REGISTER_LO 0xE8#define PCIX_STATUS_REGISTER_HI 0xEA#define PCIX_COMMAND_MMRBC_MASK 0x000C#define PCIX_COMMAND_MMRBC_SHIFT 0x2#define PCIX_STATUS_HI_MMRBC_MASK 0x0060#define PCIX_STATUS_HI_MMRBC_SHIFT 0x5#define PCIX_STATUS_HI_MMRBC_4K 0x3#define PCIX_STATUS_HI_MMRBC_2K 0x2/* Number of bits required to shift right the "pause" bits from the * EEPROM (bits 13:12) to the "pause" (bits 8:7) field in the TXCW register. */#define PAUSE_SHIFT 5/* Number of bits required to shift left the "SWDPIO" bits from the * EEPROM (bits 8:5) to the "SWDPIO" (bits 25:22) field in the CTRL register. */#define SWDPIO_SHIFT 17/* Number of bits required to shift left the "SWDPIO_EXT" bits from the * EEPROM word F (bits 7:4) to the bits 11:8 of The Extended CTRL register. */#define SWDPIO__EXT_SHIFT 4/* Number of bits required to shift left the "ILOS" bit from the EEPROM * (bit 4) to the "ILOS" (bit 7) field in the CTRL register. */#define ILOS_SHIFT 3#define RECEIVE_BUFFER_ALIGN_SIZE (256)/* Number of milliseconds we wait for auto-negotiation to complete */#define LINK_UP_TIMEOUT 500#define E1000_TX_BUFFER_SIZE ((uint32_t)1514)/* The carrier extension symbol, as rece
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -