📄 e1000_hw.h
字号:
struct e1000_hw { uint8_t __iomem *hw_addr; uint8_t *flash_address; e1000_mac_type mac_type; e1000_phy_type phy_type; uint32_t phy_init_script; e1000_media_type media_type; void *back; e1000_fc_type fc; e1000_bus_speed bus_speed; e1000_bus_width bus_width; e1000_bus_type bus_type; struct e1000_eeprom_info eeprom; e1000_ms_type master_slave; e1000_ms_type original_master_slave; e1000_ffe_config ffe_config_state; uint32_t asf_firmware_present; uint32_t eeprom_semaphore_present; unsigned long io_base; uint32_t phy_id; uint32_t phy_revision; uint32_t phy_addr; uint32_t original_fc; uint32_t txcw; uint32_t autoneg_failed; uint32_t max_frame_size; uint32_t min_frame_size; uint32_t mc_filter_type; uint32_t num_mc_addrs; uint32_t collision_delta; uint32_t tx_packet_delta; uint32_t ledctl_default; uint32_t ledctl_mode1; uint32_t ledctl_mode2; boolean_t tx_pkt_filtering; struct e1000_host_mng_dhcp_cookie mng_cookie; uint16_t phy_spd_default; uint16_t autoneg_advertised; uint16_t pci_cmd_word; uint16_t fc_high_water; uint16_t fc_low_water; uint16_t fc_pause_time; uint16_t current_ifs_val; uint16_t ifs_min_val; uint16_t ifs_max_val; uint16_t ifs_step_size; uint16_t ifs_ratio; uint16_t device_id; uint16_t vendor_id; uint16_t subsystem_id; uint16_t subsystem_vendor_id; uint8_t revision_id; uint8_t autoneg; uint8_t mdix; uint8_t forced_speed_duplex; uint8_t wait_autoneg_complete; uint8_t dma_fairness; uint8_t mac_addr[NODE_ADDRESS_SIZE]; uint8_t perm_mac_addr[NODE_ADDRESS_SIZE]; boolean_t disable_polarity_correction; boolean_t speed_downgraded; e1000_smart_speed smart_speed; e1000_dsp_config dsp_config_state; boolean_t get_link_status; boolean_t serdes_link_down; boolean_t tbi_compatibility_en; boolean_t tbi_compatibility_on; boolean_t laa_is_present; 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; boolean_t mng_reg_access_disabled;};#define E1000_EEPROM_SWDPIN0 0x0001 /* SWDPIN 0 EEPROM Value */#define E1000_EEPROM_LED_LOGIC 0x0020 /* Led Logic Word */#define E1000_EEPROM_RW_REG_DATA 16 /* Offset to data in EEPROM read/write registers */#define E1000_EEPROM_RW_REG_DONE 2 /* Offset to READ/WRITE done bit */#define E1000_EEPROM_RW_REG_START 1 /* First bit for telling part to start operation */#define E1000_EEPROM_RW_ADDR_SHIFT 2 /* Shift to the address bits */#define E1000_EEPROM_POLL_WRITE 1 /* Flag for polling for write complete */#define E1000_EEPROM_POLL_READ 0 /* Flag for polling for read complete *//* 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_GIO_MASTER_DISABLE 0x00000004 /*Blocks new Master requests */#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_D_UD_EN 0x00002000 /* Dock/Undock enable */#define E1000_CTRL_D_UD_POLARITY 0x00004000 /* Defined polarity of Dock/Undock indication in SDP[0] */#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_SHIFT 2#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_DOCK_CI 0x00000800 /* Change in Dock/Undock state. Clear on write '0'. */#define E1000_STATUS_GIO_MASTER_ENABLE 0x00080000 /* Status of Master requests. */#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#define E1000_EECD_AUTO_RD 0x00000200 /* EEPROM Auto Read done */#define E1000_EECD_SIZE_EX_MASK 0x00007800 /* EEprom Size */#define E1000_EECD_SIZE_EX_SHIFT 11#define E1000_EECD_NVADDS 0x00018000 /* NVM Address Size */#define E1000_EECD_SELSHAD 0x00020000 /* Select Shadow RAM */#define E1000_EECD_INITSRAM 0x00040000 /* Initialize Shadow RAM */#define E1000_EECD_FLUPD 0x00080000 /* Update FLASH */#define E1000_EECD_AUPDEN 0x00100000 /* Enable Autonomous FLASH update */#define E1000_EECD_SHADV 0x00200000 /* Shadow RAM Data Valid */#define E1000_EECD_SEC1VAL 0x00400000 /* Sector One Valid */#define E1000_STM_OPCODE 0xDB00#define E1000_HICR_FW_RESET 0xC0/* 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#define E1000_CTRL_EXT_CANC 0x04000000 /* Interrupt delay cancellation */#define E1000_CTRL_EXT_DRV_LOAD 0x10000000 /* Driver loaded bit for FW */#define E1000_CTRL_EXT_IAME 0x08000000 /* Interrupt acknowledge Auto-mask */#define E1000_CTRL_EXT_INT_TIMER_CLR 0x20000000 /* Clear Interrupt timers after IMS clear *//* 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_BLINK_RATE 0x0000020#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_BLINK_RATE 0x0002000#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_BLINK_RATE 0x00200000#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_BLINK_RATE 0x20000000#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#define E1000_ICR_ACK 0x00020000 /* Receive Ack frame */#define E1000_ICR_MNG 0x00040000 /* Manageability event */#define E1000_ICR_DOCK 0x00080000 /* Dock/Undock */#define E1000_ICR_INT_ASSERTED 0x80000000 /* If this bit asserted, the driver should claim the interrupt *//* 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 E10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -