📄 e1000_hw.h
字号:
uint8_t mdix; uint8_t forced_speed_duplex; uint8_t wait_autoneg_complete; uint8_t dma_fairness;#endif uint8_t mac_addr[NODE_ADDRESS_SIZE];#if 0 uint8_t perm_mac_addr[NODE_ADDRESS_SIZE]; boolean_t disable_polarity_correction; boolean_t speed_downgraded; e1000_dsp_config dsp_config_state; boolean_t get_link_status; boolean_t serdes_link_down;#endif boolean_t tbi_compatibility_en; boolean_t tbi_compatibility_on;#if 0 boolean_t phy_reset_disable; boolean_t fc_send_xon; boolean_t fc_strict_ieee; boolean_t report_tx_early; boolean_t adaptive_ifs; boolean_t ifs_params_forced; boolean_t in_ifs_mode;#endif};#define E1000_EEPROM_SWDPIN0 0x0001 /* SWDPIN 0 EEPROM Value */#define E1000_EEPROM_LED_LOGIC 0x0020 /* Led Logic Word *//* Register Bit Masks *//* Device Control */#define E1000_CTRL_FD 0x00000001 /* Full duplex.0=half; 1=full */#define E1000_CTRL_BEM 0x00000002 /* Endian Mode.0=little,1=big */#define E1000_CTRL_PRIOR 0x00000004 /* Priority on PCI. 0=rx,1=fair */#define E1000_CTRL_LRST 0x00000008 /* Link reset. 0=normal,1=reset */#define E1000_CTRL_TME 0x00000010 /* Test mode. 0=normal,1=test */#define E1000_CTRL_SLE 0x00000020 /* Serial Link on 0=dis,1=en */#define E1000_CTRL_ASDE 0x00000020 /* Auto-speed detect enable */#define E1000_CTRL_SLU 0x00000040 /* Set link up (Force Link) */#define E1000_CTRL_ILOS 0x00000080 /* Invert Loss-Of Signal */#define E1000_CTRL_SPD_SEL 0x00000300 /* Speed Select Mask */#define E1000_CTRL_SPD_10 0x00000000 /* Force 10Mb */#define E1000_CTRL_SPD_100 0x00000100 /* Force 100Mb */#define E1000_CTRL_SPD_1000 0x00000200 /* Force 1Gb */#define E1000_CTRL_BEM32 0x00000400 /* Big Endian 32 mode */#define E1000_CTRL_FRCSPD 0x00000800 /* Force Speed */#define E1000_CTRL_FRCDPX 0x00001000 /* Force Duplex */#define E1000_CTRL_SWDPIN0 0x00040000 /* SWDPIN 0 value */#define E1000_CTRL_SWDPIN1 0x00080000 /* SWDPIN 1 value */#define E1000_CTRL_SWDPIN2 0x00100000 /* SWDPIN 2 value */#define E1000_CTRL_SWDPIN3 0x00200000 /* SWDPIN 3 value */#define E1000_CTRL_SWDPIO0 0x00400000 /* SWDPIN 0 Input or output */#define E1000_CTRL_SWDPIO1 0x00800000 /* SWDPIN 1 input or output */#define E1000_CTRL_SWDPIO2 0x01000000 /* SWDPIN 2 input or output */#define E1000_CTRL_SWDPIO3 0x02000000 /* SWDPIN 3 input or output */#define E1000_CTRL_RST 0x04000000 /* Global reset */#define E1000_CTRL_RFCE 0x08000000 /* Receive Flow Control enable */#define E1000_CTRL_TFCE 0x10000000 /* Transmit flow control enable */#define E1000_CTRL_RTE 0x20000000 /* Routing tag enable */#define E1000_CTRL_VME 0x40000000 /* IEEE VLAN mode enable */#define E1000_CTRL_PHY_RST 0x80000000 /* PHY Reset *//* Device Status */#define E1000_STATUS_FD 0x00000001 /* Full duplex.0=half,1=full */#define E1000_STATUS_LU 0x00000002 /* Link up.0=no,1=link */#define E1000_STATUS_FUNC_MASK 0x0000000C /* PCI Function Mask */#define E1000_STATUS_FUNC_0 0x00000000 /* Function 0 */#define E1000_STATUS_FUNC_1 0x00000004 /* Function 1 */#define E1000_STATUS_TXOFF 0x00000010 /* transmission paused */#define E1000_STATUS_TBIMODE 0x00000020 /* TBI mode */#define E1000_STATUS_SPEED_MASK 0x000000C0#define E1000_STATUS_SPEED_10 0x00000000 /* Speed 10Mb/s */#define E1000_STATUS_SPEED_100 0x00000040 /* Speed 100Mb/s */#define E1000_STATUS_SPEED_1000 0x00000080 /* Speed 1000Mb/s */#define E1000_STATUS_ASDV 0x00000300 /* Auto speed detect value */#define E1000_STATUS_MTXCKOK 0x00000400 /* MTX clock running OK */#define E1000_STATUS_PCI66 0x00000800 /* In 66Mhz slot */#define E1000_STATUS_BUS64 0x00001000 /* In 64 bit slot */#define E1000_STATUS_PCIX_MODE 0x00002000 /* PCI-X mode */#define E1000_STATUS_PCIX_SPEED 0x0000C000 /* PCI-X bus speed *//* Constants used to intrepret the masked PCI-X bus speed. */#define E1000_STATUS_PCIX_SPEED_66 0x00000000 /* PCI-X bus speed 50-66 MHz */#define E1000_STATUS_PCIX_SPEED_100 0x00004000 /* PCI-X bus speed 66-100 MHz */#define E1000_STATUS_PCIX_SPEED_133 0x00008000 /* PCI-X bus speed 100-133 MHz *//* EEPROM/Flash Control */#define E1000_EECD_SK 0x00000001 /* EEPROM Clock */#define E1000_EECD_CS 0x00000002 /* EEPROM Chip Select */#define E1000_EECD_DI 0x00000004 /* EEPROM Data In */#define E1000_EECD_DO 0x00000008 /* EEPROM Data Out */#define E1000_EECD_FWE_MASK 0x00000030 #define E1000_EECD_FWE_DIS 0x00000010 /* Disable FLASH writes */#define E1000_EECD_FWE_EN 0x00000020 /* Enable FLASH writes */#define E1000_EECD_FWE_SHIFT 4#define E1000_EECD_REQ 0x00000040 /* EEPROM Access Request */#define E1000_EECD_GNT 0x00000080 /* EEPROM Access Grant */#define E1000_EECD_PRES 0x00000100 /* EEPROM Present */#define E1000_EECD_SIZE 0x00000200 /* EEPROM Size (0=64 word 1=256 word) */#define E1000_EECD_ADDR_BITS 0x00000400 /* EEPROM Addressing bits based on type * (0-small, 1-large) */#define E1000_EECD_TYPE 0x00002000 /* EEPROM Type (1-SPI, 0-Microwire) */#ifndef E1000_EEPROM_GRANT_ATTEMPTS#define E1000_EEPROM_GRANT_ATTEMPTS 1000 /* EEPROM # attempts to gain grant */#endif/* EEPROM Read */#define E1000_EERD_START 0x00000001 /* Start Read */#define E1000_EERD_DONE 0x00000010 /* Read Done */#define E1000_EERD_ADDR_SHIFT 8#define E1000_EERD_ADDR_MASK 0x0000FF00 /* Read Address */#define E1000_EERD_DATA_SHIFT 16#define E1000_EERD_DATA_MASK 0xFFFF0000 /* Read Data *//* SPI EEPROM Status Register */#define EEPROM_STATUS_RDY_SPI 0x01#define EEPROM_STATUS_WEN_SPI 0x02#define EEPROM_STATUS_BP0_SPI 0x04#define EEPROM_STATUS_BP1_SPI 0x08#define EEPROM_STATUS_WPEN_SPI 0x80/* Extended Device Control */#define E1000_CTRL_EXT_GPI0_EN 0x00000001 /* Maps SDP4 to GPI0 */ #define E1000_CTRL_EXT_GPI1_EN 0x00000002 /* Maps SDP5 to GPI1 */#define E1000_CTRL_EXT_PHYINT_EN E1000_CTRL_EXT_GPI1_EN#define E1000_CTRL_EXT_GPI2_EN 0x00000004 /* Maps SDP6 to GPI2 */#define E1000_CTRL_EXT_GPI3_EN 0x00000008 /* Maps SDP7 to GPI3 */#define E1000_CTRL_EXT_SDP4_DATA 0x00000010 /* Value of SW Defineable Pin 4 */#define E1000_CTRL_EXT_SDP5_DATA 0x00000020 /* Value of SW Defineable Pin 5 */#define E1000_CTRL_EXT_PHY_INT E1000_CTRL_EXT_SDP5_DATA#define E1000_CTRL_EXT_SDP6_DATA 0x00000040 /* Value of SW Defineable Pin 6 */#define E1000_CTRL_EXT_SDP7_DATA 0x00000080 /* Value of SW Defineable Pin 7 */#define E1000_CTRL_EXT_SDP4_DIR 0x00000100 /* Direction of SDP4 0=in 1=out */#define E1000_CTRL_EXT_SDP5_DIR 0x00000200 /* Direction of SDP5 0=in 1=out */#define E1000_CTRL_EXT_SDP6_DIR 0x00000400 /* Direction of SDP6 0=in 1=out */#define E1000_CTRL_EXT_SDP7_DIR 0x00000800 /* Direction of SDP7 0=in 1=out */#define E1000_CTRL_EXT_ASDCHK 0x00001000 /* Initiate an ASD sequence */#define E1000_CTRL_EXT_EE_RST 0x00002000 /* Reinitialize from EEPROM */#define E1000_CTRL_EXT_IPS 0x00004000 /* Invert Power State */#define E1000_CTRL_EXT_SPD_BYPS 0x00008000 /* Speed Select Bypass */#define E1000_CTRL_EXT_LINK_MODE_MASK 0x00C00000#define E1000_CTRL_EXT_LINK_MODE_GMII 0x00000000#define E1000_CTRL_EXT_LINK_MODE_TBI 0x00C00000#define E1000_CTRL_EXT_WR_WMARK_MASK 0x03000000#define E1000_CTRL_EXT_WR_WMARK_256 0x00000000#define E1000_CTRL_EXT_WR_WMARK_320 0x01000000#define E1000_CTRL_EXT_WR_WMARK_384 0x02000000#define E1000_CTRL_EXT_WR_WMARK_448 0x03000000/* MDI Control */#define E1000_MDIC_DATA_MASK 0x0000FFFF#define E1000_MDIC_REG_MASK 0x001F0000#define E1000_MDIC_REG_SHIFT 16#define E1000_MDIC_PHY_MASK 0x03E00000#define E1000_MDIC_PHY_SHIFT 21#define E1000_MDIC_OP_WRITE 0x04000000#define E1000_MDIC_OP_READ 0x08000000#define E1000_MDIC_READY 0x10000000#define E1000_MDIC_INT_EN 0x20000000#define E1000_MDIC_ERROR 0x40000000/* LED Control */#define E1000_LEDCTL_LED0_MODE_MASK 0x0000000F#define E1000_LEDCTL_LED0_MODE_SHIFT 0#define E1000_LEDCTL_LED0_IVRT 0x00000040#define E1000_LEDCTL_LED0_BLINK 0x00000080#define E1000_LEDCTL_LED1_MODE_MASK 0x00000F00#define E1000_LEDCTL_LED1_MODE_SHIFT 8#define E1000_LEDCTL_LED1_IVRT 0x00004000#define E1000_LEDCTL_LED1_BLINK 0x00008000#define E1000_LEDCTL_LED2_MODE_MASK 0x000F0000#define E1000_LEDCTL_LED2_MODE_SHIFT 16#define E1000_LEDCTL_LED2_IVRT 0x00400000#define E1000_LEDCTL_LED2_BLINK 0x00800000#define E1000_LEDCTL_LED3_MODE_MASK 0x0F000000#define E1000_LEDCTL_LED3_MODE_SHIFT 24#define E1000_LEDCTL_LED3_IVRT 0x40000000#define E1000_LEDCTL_LED3_BLINK 0x80000000#define E1000_LEDCTL_MODE_LINK_10_1000 0x0#define E1000_LEDCTL_MODE_LINK_100_1000 0x1#define E1000_LEDCTL_MODE_LINK_UP 0x2#define E1000_LEDCTL_MODE_ACTIVITY 0x3#define E1000_LEDCTL_MODE_LINK_ACTIVITY 0x4#define E1000_LEDCTL_MODE_LINK_10 0x5#define E1000_LEDCTL_MODE_LINK_100 0x6#define E1000_LEDCTL_MODE_LINK_1000 0x7#define E1000_LEDCTL_MODE_PCIX_MODE 0x8#define E1000_LEDCTL_MODE_FULL_DUPLEX 0x9#define E1000_LEDCTL_MODE_COLLISION 0xA#define E1000_LEDCTL_MODE_BUS_SPEED 0xB#define E1000_LEDCTL_MODE_BUS_SIZE 0xC#define E1000_LEDCTL_MODE_PAUSED 0xD#define E1000_LEDCTL_MODE_LED_ON 0xE#define E1000_LEDCTL_MODE_LED_OFF 0xF/* Receive Address */#define E1000_RAH_AV 0x80000000 /* Receive descriptor valid *//* Interrupt Cause Read */#define E1000_ICR_TXDW 0x00000001 /* Transmit desc written back */#define E1000_ICR_TXQE 0x00000002 /* Transmit Queue empty */#define E1000_ICR_LSC 0x00000004 /* Link Status Change */#define E1000_ICR_RXSEQ 0x00000008 /* rx sequence error */#define E1000_ICR_RXDMT0 0x00000010 /* rx desc min. threshold (0) */#define E1000_ICR_RXO 0x00000040 /* rx overrun */#define E1000_ICR_RXT0 0x00000080 /* rx timer intr (ring 0) */#define E1000_ICR_MDAC 0x00000200 /* MDIO access complete */#define E1000_ICR_RXCFG 0x00000400 /* RX /c/ ordered set */#define E1000_ICR_GPI_EN0 0x00000800 /* GP Int 0 */#define E1000_ICR_GPI_EN1 0x00001000 /* GP Int 1 */#define E1000_ICR_GPI_EN2 0x00002000 /* GP Int 2 */#define E1000_ICR_GPI_EN3 0x00004000 /* GP Int 3 */#define E1000_ICR_TXD_LOW 0x00008000#define E1000_ICR_SRPD 0x00010000/* Interrupt Cause Set */#define E1000_ICS_TXDW E1000_ICR_TXDW /* Transmit desc written back */#define E1000_ICS_TXQE E1000_ICR_TXQE /* Transmit Queue empty */#define E1000_ICS_LSC E1000_ICR_LSC /* Link Status Change */#define E1000_ICS_RXSEQ E1000_ICR_RXSEQ /* rx sequence error */#define E1000_ICS_RXDMT0 E1000_ICR_RXDMT0 /* rx desc min. threshold */#define E1000_ICS_RXO E1000_ICR_RXO /* rx overrun */#define E1000_ICS_RXT0 E1000_ICR_RXT0 /* rx timer intr */#define E1000_ICS_MDAC E1000_ICR_MDAC /* MDIO access complete */#define E1000_ICS_RXCFG E1000_ICR_RXCFG /* RX /c/ ordered set */#define E1000_ICS_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */#define E1000_ICS_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */#define E1000_ICS_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */#define E1000_ICS_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */#define E1000_ICS_TXD_LOW E1000_ICR_TXD_LOW#define E1000_ICS_SRPD E1000_ICR_SRPD/* Interrupt Mask Set */#define E1000_IMS_TXDW E1000_ICR_TXDW /* Transmit desc written back */#define E1000_IMS_TXQE E1000_ICR_TXQE /* Transmit Queue empty */#define E1000_IMS_LSC E1000_ICR_LSC /* Link Status Change */#define E1000_IMS_RXSEQ E1000_ICR_RXSEQ /* rx sequence error */#define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0 /* rx desc min. threshold */#define E1000_IMS_RXO E1000_ICR_RXO /* rx overrun */#define E1000_IMS_RXT0 E1000_ICR_RXT0 /* rx timer intr */#define E1000_IMS_MDAC E1000_ICR_MDAC /* MDIO access complete */#define E1000_IMS_RXCFG E1000_ICR_RXCFG /* RX /c/ ordered set */#define E1000_IMS_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */#define E1000_IMS_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */#define E1000_IMS_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */#define E1000_IMS_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */#define E1000_IMS_TXD_LOW E1000_ICR_TXD_LOW#define E1000_IMS_SRPD E1000_ICR_SRPD/* Interrupt Mask Clear */#define E1000_IMC_TXDW E1000_ICR_TXDW /* Transmit desc written back */#define E1000_IMC_TXQE E1000_ICR_TXQE /* Transmit Queue empty */#define E1000_IMC_LSC E1000_ICR_LSC /* Link Status Change */#define E1000_IMC_RXSEQ E1000_ICR_RXSEQ /* rx sequence error */#define E1000_IMC_RXDMT0 E1000_ICR_RXDMT0 /* rx desc min. threshold */#define E1000_IMC_RXO E1000_ICR_RXO /* rx overrun */#define E1000_IMC_RXT0 E1000_ICR_RXT0 /* rx timer intr */#define E1000_IMC_MDAC E1000_ICR_MDAC /* MDIO access complete */#define E1000_IMC_RXCFG E1000_ICR_RXCFG /* RX /c/ ordered set */#define E1000_IMC_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */#define E1000_IMC_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */#define E1000_IMC_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */#define E1000_IMC_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */#define E1000_IMC_TXD_LOW E1000_ICR_TXD_LOW#define E1000_IMC_SRPD E1000_ICR_SRPD/* Receive Control */#define E1000_RCTL_RST 0x00000001 /* Software reset */#define E1000_RCTL_EN 0x00000002 /* enable */#define E1000_RCTL_SBP 0x00000004 /* store bad packet */#define E1000_RCTL_UPE 0x00000008 /* unicast promiscuous enable */#define E1000_RCTL_MPE 0x00000010 /* multicast promiscuous enab */#define E1000_RCTL_LPE 0x00000020 /* long packet enable */#define E1000_RCTL_LBM_NO 0x00000000 /* no loopback mode */#define E1000_RCTL_LBM_MAC 0x00000040 /* MAC loopback mode */#define E1000_RCTL_LBM_SLP 0x00000080 /* serial link loopback mode */#define E1000_RCTL_LBM_TCVR 0x000000C0 /* tcvr loopback mode */#define E1000_RCTL_RDMTS_HALF 0x00000000 /* rx desc min threshold size */#define E1000_RCTL_RDMTS_QUAT 0x00000100 /* rx desc min threshold size */#define E1000_RCTL_RDMTS_EIGTH 0x00000200 /* rx desc min threshold size */#define E1000_RCTL_MO_SHIFT 12 /* multicast offset shift */#define E1000_RCTL_MO_0 0x00000000 /* multicast offset 11:0 */#define E1000_RCTL_MO_1 0x00001000 /* multicast offset 12:1 */#define E1000_RCTL_MO_2 0x00002000 /* multicast offset 13:2 */#define E1000_RCTL_MO_3 0x00003000 /* multicast offset 15:4 */#define E1000_RCTL_MDR 0x00004000 /* multicast desc ring 0 */#define E1000_RCTL_BAM 0x00008000 /* broadcast enable *//* these buffer sizes are valid if E1000_RCTL_BSEX is 0 */#define E1000_RCTL_SZ_2048 0x00000000 /* rx buffer size 2048 */#define E1000_RCTL_SZ_1024 0x00010000 /* rx buffer size 1024 */#define E1000_RCTL_SZ_512 0x00020000 /* rx buffer size 512 */#define E1000_RCTL_SZ_256 0x00030000 /* rx buffer size 256 *//* these buffer sizes are valid if E1000_RCTL_BSEX is 1 */#define E1000_RCTL_SZ_16384 0x00010000 /* rx buffer size 16384 */#define E1000_RCTL_SZ_8192 0x00020000 /* rx buffer size 8192 */#define E1000_RCTL_SZ_4096 0x00030000 /* rx buffer size 4096 */#define E1000_RCTL_VFE 0x00040000 /* vlan filter enable */#define E1000_RCTL_CFIEN 0x00080000 /* canonical form enable */#define E1000_RCTL_CFI 0x00100000 /* canonical form indicator */#define E1000_RCTL_DPF 0x00400000 /* discard pause frames */#define E1000_RCTL_PMCF 0x00800000 /* pass MAC control frames */#define E1000_RCTL_BSEX 0x02000000 /* Buffer size extension *//* Receive Descriptor */#define E1000_RDT_DELAY 0x0000ffff /* Delay timer (1=1024us) */#define E1000_RDT_FPDB 0x80000000 /* Flush descriptor block */#define E1000_RDLEN_LEN 0x0007ff80 /* descriptor length */#define E1000_RDH_RDH 0x0000ffff /* receive descriptor head */#define E1000_RDT_RDT 0x0000ffff /* receive descriptor tail *//* Flow Control */#define E1000_FCRTH_RTH 0x0000FFF8 /* Mask Bits[15:3] for RTH */#define E1000_FCRTH_XFCE 0x80000000 /* External Flow Control Enable */#define E1000_FCRTL_RTL 0x0000FFF8 /* Mask Bits[15:3] for RTL */#define E1000_FCRTL_XONE 0x80000000 /* Enable XON frame transmission */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -