40 u16 *data,
bool read,
bool page_set);
43 u16 *data,
bool read);
48#define M88E1000_CABLE_LENGTH_TABLE_SIZE \
49 (sizeof(e1000_m88_cable_length_table) / \
50 sizeof(e1000_m88_cable_length_table[0]))
53 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 8, 11, 13, 16, 18, 21, 0, 0, 0, 3,
54 6, 10, 13, 16, 19, 23, 26, 29, 32, 35, 38, 41, 6, 10, 14, 18, 22,
55 26, 30, 33, 37, 41, 44, 48, 51, 54, 58, 61, 21, 26, 31, 35, 40,
56 44, 49, 53, 57, 61, 65, 68, 72, 75, 79, 82, 40, 45, 51, 56, 61,
57 66, 70, 75, 79, 83, 87, 91, 94, 98, 101, 104, 60, 66, 72, 77, 82,
58 87, 92, 96, 100, 104, 108, 111, 114, 117, 119, 121, 83, 89, 95,
59 100, 105, 109, 113, 116, 119, 122, 124, 104, 109, 114, 118, 121,
61#define IGP02E1000_CABLE_LENGTH_TABLE_SIZE \
62 (sizeof(e1000_igp_2_cable_length_table) / \
63 sizeof(e1000_igp_2_cable_length_table[0]))
237 while (retry_count < 2) {
242 phy->
id = (
u32)(phy_id << 16);
270 DEBUGFUNC(
"e1000_phy_reset_dsp_generic");
299 DEBUGOUT1(
"PHY Address %d is out of range\n", offset);
324 DEBUGOUT(
"MDI Read did not complete\n");
332 DEBUGOUT2(
"MDI Read offset error - requested %d, returned %d\n",
364 DEBUGOUT1(
"PHY Address %d is out of range\n", offset);
372 mdic = (((
u32)data) |
390 DEBUGOUT(
"MDI Write did not complete\n");
398 DEBUGOUT2(
"MDI Write offset error - requested %d, returned %d\n",
447 DEBUGOUT(
"I2CCMD Read did not complete\n");
456 *data = ((i2ccmd >> 8) & 0x00FF) | ((i2ccmd << 8) & 0xFF00);
473 u16 phy_data_swapped;
479 DEBUGOUT1(
"PHY I2C Address %d is out of range.\n",
485 phy_data_swapped = ((data >> 8) & 0x00FF) | ((data << 8) & 0xFF00);
506 DEBUGOUT(
"I2CCMD Write did not complete\n");
539 DEBUGOUT(
"I2CCMD command address exceeds upper limit\n");
560 DEBUGOUT(
"I2CCMD Read did not complete\n");
567 *data = (
u8) data_local & 0xFF;
594 DEBUGOUT(
"I2CCMD command address exceeds upper limit\n");
623 data_local = i2ccmd & 0xFF00;
624 data_local |= (
u32)data;
635 DEBUGOUT(
"I2CCMD Write did not complete\n");
901 *data = (
u16)kmrnctrlsta;
955 DEBUGFUNC(
"e1000_write_kmrn_reg_generic");
1040 phy_data &= ~CR_1000T_MS_ENABLE;
1060 DEBUGFUNC(
"e1000_copper_link_setup_82577");
1065 DEBUGOUT(
"Error resetting the PHY.\n");
1088 phy_data &= ~I82577_PHY_CTRL2_MDIX_CFG_MASK;
1126 DEBUGFUNC(
"e1000_copper_link_setup_m88");
1145 phy_data &= ~M88E1000_PSCR_AUTO_X_MODE;
1147 switch (phy->
mdix) {
1170 phy_data &= ~M88E1000_PSCR_POLARITY_REVERSAL;
1178 phy_data &= ~BME1000_PSCR_ENABLE_DOWNSHIFT;
1186 DEBUGOUT(
"Error committing the PHY changes\n");
1214 phy_data &= ~M88EC018_EPSCR_DOWNSHIFT_COUNTER_MASK;
1244 DEBUGOUT(
"Error committing the PHY changes\n");
1256 phy_data &= ~I82578_EPSCR_DOWNSHIFT_COUNTER_MASK;
1279 DEBUGFUNC(
"e1000_copper_link_setup_m88_gen2");
1294 phy_data &= ~M88E1000_PSCR_AUTO_X_MODE;
1296 switch (phy->
mdix) {
1323 phy_data &= ~M88E1000_PSCR_POLARITY_REVERSAL;
1329 phy_data &= ~I347AT4_PSCR_DOWNSHIFT_ENABLE;
1337 DEBUGOUT(
"Error committing the PHY changes\n");
1342 phy_data &= ~I347AT4_PSCR_DOWNSHIFT_MASK;
1353 DEBUGOUT(
"Error committing the PHY changes\n");
1377 DEBUGFUNC(
"e1000_copper_link_setup_igp");
1382 DEBUGOUT(
"Error resetting the PHY.\n");
1398 DEBUGOUT(
"Error Disabling LPLU D3\n");
1407 DEBUGOUT(
"Error Disabling LPLU D0\n");
1416 data &= ~IGP01E1000_PSCR_AUTO_MDIX;
1418 switch (phy->
mdix) {
1420 data &= ~IGP01E1000_PSCR_FORCE_MDI_MDIX;
1449 data &= ~IGP01E1000_PSCFR_SMART_SPEED;
1461 data &= ~CR_1000T_MS_ENABLE;
1486 u16 mii_autoneg_adv_reg;
1487 u16 mii_1000t_ctrl_reg = 0;
1501 &mii_1000t_ctrl_reg);
1527 DEBUGOUT(
"Advertise 10mb Half duplex\n");
1533 DEBUGOUT(
"Advertise 10mb Full duplex\n");
1539 DEBUGOUT(
"Advertise 100mb Half duplex\n");
1545 DEBUGOUT(
"Advertise 100mb Full duplex\n");
1551 DEBUGOUT(
"Advertise 1000mb Half duplex request denied!\n");
1555 DEBUGOUT(
"Advertise 1000mb Full duplex\n");
1600 mii_autoneg_adv_reg &= ~NWAY_AR_PAUSE;
1609 DEBUGOUT(
"Flow control param set incorrectly\n");
1617 DEBUGOUT1(
"Auto-Neg Advertising %x\n", mii_autoneg_adv_reg);
1621 mii_1000t_ctrl_reg);
1654 DEBUGOUT(
"Reconfiguring auto-neg advertisement params\n");
1657 DEBUGOUT(
"Error Setting up Auto-Negotiation\n");
1680 DEBUGOUT(
"Error while waiting for autoneg to complete\n");
1704 DEBUGFUNC(
"e1000_setup_copper_link_generic");
1717 DEBUGOUT(
"Forcing Speed and Duplex\n");
1720 DEBUGOUT(
"Error Forcing Speed and Duplex\n");
1734 DEBUGOUT(
"Valid link established!!!\n");
1738 DEBUGOUT(
"Unable to establish link!!!\n");
1759 DEBUGFUNC(
"e1000_phy_force_speed_duplex_igp");
1778 phy_data &= ~IGP01E1000_PSCR_AUTO_MDIX;
1779 phy_data &= ~IGP01E1000_PSCR_FORCE_MDI_MDIX;
1790 DEBUGOUT(
"Waiting for forced speed/duplex link on IGP phy.\n");
1798 DEBUGOUT(
"Link taking longer than expected.\n");
1825 DEBUGFUNC(
"e1000_phy_force_speed_duplex_m88");
1837 phy_data &= ~M88E1000_PSCR_AUTO_X_MODE;
1843 DEBUGOUT1(
"M88E1000 PSCR: %X\n", phy_data);
1862 DEBUGOUT(
"Waiting for forced speed/duplex link on M88 phy.\n");
1870 bool reset_dsp =
true;
1872 switch (hw->
phy.
id) {
1888 DEBUGOUT(
"Link taking longer than expected.\n");
1964 DEBUGFUNC(
"e1000_phy_force_speed_duplex_ife");
1981 data &= ~IFE_PMC_AUTO_MDIX;
1982 data &= ~IFE_PMC_FORCE_MDIX;
1993 DEBUGOUT(
"Waiting for forced speed/duplex link on IFE phy.\n");
2001 DEBUGOUT(
"Link taking longer than expected.\n");
2030 DEBUGFUNC(
"e1000_phy_force_speed_duplex_setup");
2038 ctrl &= ~E1000_CTRL_SPD_SEL;
2041 ctrl &= ~E1000_CTRL_ASDE;
2044 *phy_ctrl &= ~MII_CR_AUTO_NEG_EN;
2048 ctrl &= ~E1000_CTRL_FD;
2049 *phy_ctrl &= ~MII_CR_FULL_DUPLEX;
2061 *phy_ctrl &= ~MII_CR_SPEED_1000;
2094 DEBUGFUNC(
"e1000_set_d3_lplu_state_generic");
2104 data &= ~IGP02E1000_PM_D3_LPLU;
2134 data &= ~IGP01E1000_PSCFR_SMART_SPEED;
2156 data &= ~IGP01E1000_PSCFR_SMART_SPEED;
2176 u16 phy_data, offset, mask;
2178 DEBUGFUNC(
"e1000_check_downshift_generic");
2180 switch (phy->
type) {
2201 ret_val = phy->
ops.
read_reg(hw, offset, &phy_data);
2248 u16 data, offset, mask;
2291 u16 phy_data, offset, mask;
2305 ret_val = phy->
ops.
read_reg(hw, offset, &phy_data);
2361 u32 usec_interval,
bool *success)
2366 DEBUGFUNC(
"e1000_phy_has_link_generic");
2371 for (i = 0; i < iterations; i++) {
2382 if (usec_interval >= 1000)
2392 if (usec_interval >= 1000)
2398 *success = (i < iterations);
2422 u16 phy_data, index;
2424 DEBUGFUNC(
"e1000_get_cable_length_m88");
2448 u16 phy_data, phy_data2, is_cm;
2449 u16 index, default_page;
2451 DEBUGFUNC(
"e1000_get_cable_length_m88_gen2");
2453 switch (hw->
phy.
id) {
2571 u16 phy_data, i, agc_value = 0;
2572 u16 cur_agc_index, max_agc_index = 0;
2581 DEBUGFUNC(
"e1000_get_cable_length_igp_2");
2585 ret_val = phy->
ops.
read_reg(hw, agc_reg_array[i], &phy_data);
2599 (cur_agc_index == 0))
2605 min_agc_index = cur_agc_index;
2608 max_agc_index = cur_agc_index;
2647 DEBUGOUT(
"Phy info is only valid for copper media\n");
2656 DEBUGOUT(
"Phy info is only valid if link is up\n");
2726 DEBUGOUT(
"Phy info is only valid if link is up\n");
2788 DEBUGOUT(
"Phy info is only valid if link is up\n");
2834 DEBUGFUNC(
"e1000_phy_sw_reset_generic");
2868 DEBUGFUNC(
"e1000_phy_hw_reset_generic");
2905 DEBUGFUNC(
"e1000_get_cfg_done_generic");
2920 DEBUGOUT(
"Running IGP 3 PHY init script\n");
3074 hw->
phy.
id = phy_type;
3109 if ((page >= 768) || (page == 0 && reg == 25) || (reg == 31))
3145 u32 page_shift, page_select;
3161 (page << page_shift));
3205 u32 page_shift, page_select;
3221 (page << page_shift));
3338 DEBUGFUNC(
"e1000_enable_phy_wakeup_reg_access_bm");
3349 DEBUGOUT(
"Could not set Port Control page\n");
3355 DEBUGOUT2(
"Could not read PHY register %d.%d\n",
3369 DEBUGOUT2(
"Could not write PHY register %d.%d\n",
3395 DEBUGFUNC(
"e1000_disable_phy_wakeup_reg_access_bm");
3403 DEBUGOUT(
"Could not set Port Control page\n");
3410 DEBUGOUT2(
"Could not restore PHY register %d.%d\n",
3442 u16 *data,
bool read,
bool page_set)
3449 DEBUGFUNC(
"e1000_access_phy_wakeup_reg_bm");
3454 DEBUGOUT1(
"Attempting to access page %d while gig enabled.\n",
3461 DEBUGOUT(
"Could not enable PHY wakeup reg access\n");
3466 DEBUGOUT2(
"Accessing PHY page %d reg 0x%x\n", page, reg);
3471 DEBUGOUT1(
"Could not write address opcode to page %d\n", page);
3486 DEBUGOUT2(
"Could not access PHY reg %d.%d\n", page, reg);
3510 mii_reg &= ~MII_CR_POWER_DOWN;
3546 bool locked,
bool page_set)
3589 DEBUGOUT3(
"reading PHY page %d (or 0x%x shifted) reg 0x%x\n", page,
3656 bool locked,
bool page_set)
3694 (data & (1 << 11))) {
3715 DEBUGOUT3(
"writing PHY page %d (or 0x%x shifted) reg 0x%x\n", page,
3797 u16 *data,
bool read)
3803 DEBUGFUNC(
"e1000_access_phy_debug_regs_hv");
3808 data_reg = addr_reg + 1;
3816 DEBUGOUT(
"Could not write the Address Offset port register\n");
3827 DEBUGOUT(
"Could not access the Data port register\n");
3848 DEBUGFUNC(
"e1000_link_stall_workaround_hv");
3897 DEBUGFUNC(
"e1000_check_polarity_82577");
3922 DEBUGFUNC(
"e1000_phy_force_speed_duplex_82577");
3937 DEBUGOUT(
"Waiting for forced speed/duplex link on 82577 phy\n");
3945 DEBUGOUT(
"Link taking longer than expected.\n");
3978 DEBUGOUT(
"Phy info is only valid if link is up\n");
4031 u16 phy_data, length;
4033 DEBUGFUNC(
"e1000_get_cable_length_82577");
4125 bool locked =
false;
4152 mphy_ctrl = (mphy_ctrl & ~E1000_MPHY_ADDRESS_MASK &
4153 ~E1000_MPHY_ADDRESS_FNC_OVERRIDE) |
4187 bool locked =
false;
4217 mphy_ctrl &= ~E1000_MPHY_ADDRESS_FNC_OVERRIDE;
4218 mphy_ctrl = (mphy_ctrl & ~E1000_MPHY_ADDRESS_MASK) |
4247 u16 retry_count = 0;
4251 while (retry_count < 2) {
4263 DEBUGOUT(
"ERROR READING mPHY control register, phy is busy.\n");
4277 u8 dev_addr,
u16 *data,
bool read)
#define I347AT4_PSCR_DOWNSHIFT_6X
#define E1000_I2CCMD_PHY_TIMEOUT
#define M88E1000_PHY_GEN_CONTROL
#define E1000_I2CCMD_OPCODE_WRITE
#define MII_SR_AUTONEG_COMPLETE
#define M88E1000_E_PHY_ID
#define E1000_I2CCMD_PHY_ADDR_SHIFT
#define PHY_REVISION_MASK
#define I347AT4_PAGE_SELECT
#define M88E1000_PSSR_CABLE_LENGTH_SHIFT
#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK
#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X
#define M88E1000_PSSR_CABLE_LENGTH
#define M88E1000_PSCR_AUTO_X_1000T
#define BME1000_E_PHY_ID_R2
#define E1000_I2CCMD_SFP_DIAG_ADDR(a)
#define M88E1000_PSSR_1000MBS
#define M88E1111_I_PHY_ID
#define E1000_MDIC_REG_SHIFT
#define I347AT4_PCDC_CABLE_LENGTH_UNIT
#define NWAY_AR_100TX_FD_CAPS
#define M88E1000_PSCR_POLARITY_REVERSAL
#define M88E1000_PHY_SPEC_CTRL
#define E1000_CTRL_FRCSPD
#define M88E1000_PSSR_DOWNSHIFT
#define NWAY_AR_10T_HD_CAPS
#define E1000_ERR_PHY_TYPE
#define M88E1000_PHY_SPEC_STATUS
#define E1000_I2CCMD_READY
#define MAX_PHY_REG_ADDRESS
#define E1000_BLK_PHY_RESET
#define E1000_ALL_SPEED_DUPLEX
#define M88E1000_PSCR_MDIX_MANUAL_MODE
#define MII_CR_POWER_DOWN
#define M88E1000_PSSR_REV_POLARITY
#define M88E1000_PSSR_SPEED
#define CR_1000T_MS_VALUE
#define COPPER_LINK_UP_LIMIT
#define E1000_PHY_CTRL_GBE_DISABLE
#define M88E1112_E_PHY_ID
#define SR_1000T_REMOTE_RX_STATUS
#define M88E1000_PSCR_MDI_MANUAL_MODE
#define ADVERTISE_1000_HALF
#define E1000_ALL_10_SPEED
#define I347AT4_PSCR_DOWNSHIFT_ENABLE
#define M88E1543_E_PHY_ID
#define MII_CR_FULL_DUPLEX
#define E1000_ALL_100_SPEED
#define BME1000_PSCR_ENABLE_DOWNSHIFT
#define MII_SR_LINK_STATUS
#define ADVERTISE_10_FULL
#define E1000_MDIC_OP_READ
#define E1000_I2CCMD_OPCODE_READ
#define E1000_CTRL_PHY_RST
#define M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK
#define MII_CR_SPEED_1000
#define M88E1000_EPSCR_TX_CLK_25
#define E1000_MANC_BLK_PHY_RST_ON_IDE
#define M88E1340M_E_PHY_ID
#define NWAY_AR_10T_FD_CAPS
#define E1000_MMDAC_FUNC_DATA
#define ADVERTISE_10_HALF
#define MII_CR_RESTART_AUTO_NEG
#define E1000_ALL_HALF_DUPLEX
#define ADVERTISE_100_FULL
#define E1000_ALL_NOT_GIG
#define M88E1000_EXT_PHY_SPEC_CTRL
#define MII_CR_AUTO_NEG_EN
#define NWAY_AR_100TX_HD_CAPS
#define M88E1000_PSCR_AUTO_X_MODE
#define M88E1000_I_PHY_ID
#define MAX_PHY_MULTI_PAGE_REG
#define E1000_MDIC_PHY_SHIFT
#define E1000_CTRL_FRCDPX
#define ADVERTISE_100_HALF
#define CR_1000T_MS_ENABLE
#define SR_1000T_LOCAL_RX_STATUS
#define E1000_MDIC_OP_WRITE
#define M88E1000_PSSR_MDIX
#define ADVERTISE_1000_FULL
#define PHY_AUTO_NEG_LIMIT
#define E1000_I2CCMD_REG_ADDR_SHIFT
#define M88E1000_PHY_PAGE_SELECT
#define E1000_GEN_POLL_TIMEOUT
#define I82578_EPSCR_DOWNSHIFT_ENABLE
#define IGP01E1000_I_PHY_ID
#define IFE_PLUS_E_PHY_ID
#define E1000_CTRL_SPD_1000
#define M88E1512_E_PHY_ID
#define E1000_MDIC_REG_MASK
#define E1000_CTRL_SPD_100
#define M88E1112_VCT_DSP_DISTANCE
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_5X
#define E1000_I2CCMD_ERROR
#define M88E1000_PSCR_ASSERT_CRS_ON_TX
#define M88E1011_I_PHY_ID
#define M88E1000_EPSCR_MASTER_DOWNSHIFT_1X
#define IGP03E1000_E_PHY_ID
@ e1000_1000t_rx_status_ok
@ e1000_1000t_rx_status_not_ok
@ e1000_1000t_rx_status_undefined
@ e1000_media_type_copper
@ e1000_rev_polarity_reversed
@ e1000_rev_polarity_normal
#define HV_MUX_DATA_CTRL_GEN_TO_MAC
#define HV_MUX_DATA_CTRL_FORCE_SPEED
s32 e1000_null_ops_generic(struct e1000_hw E1000_UNUSEDARG *hw)
s32 e1000_config_fc_after_link_up_generic(struct e1000_hw *hw)
#define E1000_WRITE_FLUSH(a)
#define E1000_WRITE_REG(hw, reg, value)
#define msec_delay_irq(x)
#define E1000_READ_REG(hw, reg)
#define usec_delay_irq(x)
s32 e1000_null_write_reg(struct e1000_hw E1000_UNUSEDARG *hw, u32 E1000_UNUSEDARG offset, u16 E1000_UNUSEDARG data)
s32 e1000_phy_force_speed_duplex_igp(struct e1000_hw *hw)
s32 e1000_check_reset_block_generic(struct e1000_hw *hw)
s32 e1000_get_cable_length_m88(struct e1000_hw *hw)
static u32 e1000_get_phy_addr_for_bm_page(u32 page, u32 reg)
s32 e1000_write_xmdio_reg(struct e1000_hw *hw, u16 addr, u8 dev_addr, u16 data)
s32 e1000_read_sfp_data_byte(struct e1000_hw *hw, u16 offset, u8 *data)
static s32 e1000_access_phy_wakeup_reg_bm(struct e1000_hw *hw, u32 offset, u16 *data, bool read, bool page_set)
s32 e1000_write_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 data)
s32 e1000_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data)
static s32 e1000_set_master_slave_mode(struct e1000_hw *hw)
void e1000_phy_force_speed_duplex_setup(struct e1000_hw *hw, u16 *phy_ctrl)
void e1000_null_phy_generic(struct e1000_hw E1000_UNUSEDARG *hw)
s32 e1000_read_xmdio_reg(struct e1000_hw *hw, u16 addr, u8 dev_addr, u16 *data)
s32 e1000_phy_has_link_generic(struct e1000_hw *hw, u32 iterations, u32 usec_interval, bool *success)
s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data)
s32 e1000_read_i2c_byte_null(struct e1000_hw E1000_UNUSEDARG *hw, u8 E1000_UNUSEDARG byte_offset, u8 E1000_UNUSEDARG dev_addr, u8 E1000_UNUSEDARG *data)
s32 e1000_read_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_phy_force_speed_duplex_ife(struct e1000_hw *hw)
s32 e1000_read_phy_reg_mphy(struct e1000_hw *hw, u32 address, u32 *data)
s32 e1000_write_phy_reg_page_hv(struct e1000_hw *hw, u32 offset, u16 data)
s32 e1000_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_copper_link_autoneg(struct e1000_hw *hw)
s32 e1000_get_cable_length_igp_2(struct e1000_hw *hw)
static u32 e1000_get_phy_addr_for_hv_page(u32 page)
s32 e1000_phy_setup_autoneg(struct e1000_hw *hw)
s32 e1000_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data)
s32 e1000_read_kmrn_reg_generic(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_get_phy_id(struct e1000_hw *hw)
void e1000_power_down_phy_copper(struct e1000_hw *hw)
static s32 e1000_wait_autoneg(struct e1000_hw *hw)
s32 e1000_get_phy_info_82577(struct e1000_hw *hw)
#define M88E1000_CABLE_LENGTH_TABLE_SIZE
s32 e1000_check_polarity_ife(struct e1000_hw *hw)
bool e1000_is_mphy_ready(struct e1000_hw *hw)
s32 e1000_enable_phy_wakeup_reg_access_bm(struct e1000_hw *hw, u16 *phy_reg)
s32 e1000_get_phy_info_m88(struct e1000_hw *hw)
s32 e1000_get_phy_info_igp(struct e1000_hw *hw)
static const u16 e1000_m88_cable_length_table[]
s32 e1000_set_page_igp(struct e1000_hw *hw, u16 page)
s32 e1000_check_polarity_igp(struct e1000_hw *hw)
#define IGP02E1000_CABLE_LENGTH_TABLE_SIZE
enum e1000_phy_type e1000_get_phy_type_from_id(u32 phy_id)
s32 e1000_read_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_phy_force_speed_duplex_82577(struct e1000_hw *hw)
s32 e1000_write_phy_reg_gs40g(struct e1000_hw *hw, u32 offset, u16 data)
void e1000_power_up_phy_copper(struct e1000_hw *hw)
s32 e1000_write_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 data)
s32 e1000_get_cable_length_m88_gen2(struct e1000_hw *hw)
s32 e1000_phy_sw_reset_generic(struct e1000_hw *hw)
static s32 __e1000_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data, bool locked)
static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data, bool locked, bool page_set)
s32 e1000_null_read_reg(struct e1000_hw E1000_UNUSEDARG *hw, u32 E1000_UNUSEDARG offset, u16 E1000_UNUSEDARG *data)
s32 e1000_null_lplu_state(struct e1000_hw E1000_UNUSEDARG *hw, bool E1000_UNUSEDARG active)
s32 e1000_write_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 data)
s32 e1000_null_set_page(struct e1000_hw E1000_UNUSEDARG *hw, u16 E1000_UNUSEDARG data)
s32 e1000_get_phy_info_ife(struct e1000_hw *hw)
void e1000_init_phy_ops_generic(struct e1000_hw *hw)
s32 e1000_get_cfg_done_generic(struct e1000_hw E1000_UNUSEDARG *hw)
s32 e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_phy_force_speed_duplex_m88(struct e1000_hw *hw)
s32 e1000_phy_reset_dsp_generic(struct e1000_hw *hw)
s32 e1000_read_phy_reg_gs40g(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_copper_link_setup_m88_gen2(struct e1000_hw *hw)
s32 e1000_write_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, u16 data)
s32 e1000_disable_phy_wakeup_reg_access_bm(struct e1000_hw *hw, u16 *phy_reg)
s32 e1000_read_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_read_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_read_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_check_polarity_m88(struct e1000_hw *hw)
s32 e1000_link_stall_workaround_hv(struct e1000_hw *hw)
static s32 __e1000_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data, bool locked)
s32 e1000_write_phy_reg_m88(struct e1000_hw *hw, u32 offset, u16 data)
s32 e1000_phy_hw_reset_generic(struct e1000_hw *hw)
s32 e1000_copper_link_setup_82577(struct e1000_hw *hw)
s32 e1000_set_d3_lplu_state_generic(struct e1000_hw *hw, bool active)
s32 e1000_write_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 data)
static s32 __e1000_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data, bool locked)
s32 e1000_check_polarity_82577(struct e1000_hw *hw)
s32 e1000_read_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_copper_link_setup_m88(struct e1000_hw *hw)
static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset, u16 *data, bool read)
s32 e1000_read_phy_reg_m88(struct e1000_hw *hw, u32 offset, u16 *data)
static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data, bool locked, bool page_set)
s32 e1000_read_phy_reg_page_hv(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_check_downshift_generic(struct e1000_hw *hw)
s32 e1000_write_i2c_byte_null(struct e1000_hw E1000_UNUSEDARG *hw, u8 E1000_UNUSEDARG byte_offset, u8 E1000_UNUSEDARG dev_addr, u8 E1000_UNUSEDARG data)
s32 e1000_write_phy_reg_mphy(struct e1000_hw *hw, u32 address, u32 data, bool line_override)
static s32 __e1000_access_xmdio_reg(struct e1000_hw *hw, u16 address, u8 dev_addr, u16 *data, bool read)
static s32 __e1000_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data, bool locked)
s32 e1000_write_kmrn_reg_generic(struct e1000_hw *hw, u32 offset, u16 data)
s32 e1000_get_cable_length_82577(struct e1000_hw *hw)
s32 e1000_copper_link_setup_igp(struct e1000_hw *hw)
s32 e1000_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data)
s32 e1000_write_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 data)
static const u16 e1000_igp_2_cable_length_table[]
s32 e1000_write_sfp_data_byte(struct e1000_hw *hw, u16 offset, u8 data)
s32 e1000_determine_phy_address(struct e1000_hw *hw)
s32 e1000_phy_init_script_igp3(struct e1000_hw *hw)
s32 e1000_setup_copper_link_generic(struct e1000_hw *hw)
#define I82577_PHY_STATUS_2
#define I82577_PHY_DIAG_STATUS
#define BM_CS_STATUS_LINK_UP
#define IGP01E1000_PHY_PAGE_SELECT
#define BM_WUC_ADDRESS_OPCODE
#define IFE_PSC_AUTO_POLARITY_DISABLE
#define IGP01E1000_PHY_PORT_CTRL
#define IGP02E1000_AGC_LENGTH_SHIFT
#define E1000_MPHY_ADDRESS_MASK
#define IGP01E1000_PSCR_FORCE_MDI_MDIX
#define BM_PHY_REG_PAGE(offset)
#define I82577_PHY_CTRL_2
#define IGP01E1000_PSSR_POLARITY_REVERSED
#define IGP02E1000_PM_D3_LPLU
#define BM_CS_STATUS_SPEED_1000
#define IFE_PSC_FORCE_POLARITY
#define E1000_KMRNCTRLSTA_REN
#define I82577_DSTATUS_CABLE_LENGTH_SHIFT
#define IGP01E1000_PHY_PORT_CONFIG
#define I82577_PHY_STATUS2_REV_POLARITY
#define E1000_CABLE_LENGTH_UNDEFINED
#define IGP01E1000_PHY_PCS_INIT_REG
#define IGP01E1000_PHY_LINK_HEALTH
#define IFE_PHY_SPECIAL_CONTROL
#define BM_CS_STATUS_SPEED_MASK
#define IGP02E1000_PHY_AGC_B
#define E1000_MPHY_DIS_ACCESS
#define I82577_PHY_STATUS2_SPEED_1000MBPS
#define BM_WUC_ENABLE_BIT
#define I82577_CFG_ASSERT_CRS_ON_TX
#define IGP02E1000_PHY_AGC_D
#define IGP02E1000_PHY_CHANNEL_NUM
#define I82577_PHY_CTRL2_MANUAL_MDIX
#define I82577_PHY_STATUS2_SPEED_MASK
#define IGP01E1000_PSSR_SPEED_MASK
#define IGP02E1000_PHY_AGC_C
#define GS40G_PAGE_SELECT
#define IGP02E1000_PHY_AGC_A
#define E1000_MAX_PHY_ADDR
#define IGP01E1000_PSSR_MDIX
#define I82577_DSTATUS_CABLE_LENGTH
#define HV_INTC_FC_PAGE_START
#define IGP02E1000_AGC_RANGE
#define BM_CS_STATUS_RESOLVED
#define IGP01E1000_PLHR_SS_DOWNGRADE
#define I82577_PHY_STATUS2_MDIX
#define BM_PHY_REG_NUM(offset)
#define IGP01E1000_PHY_PORT_STATUS
#define BM_PHY_PAGE_SELECT
#define I82577_CFG_ENABLE_DOWNSHIFT
#define IGP01E1000_PSCR_AUTO_MDIX
#define IFE_PESC_POLARITY_REVERSED
#define IGP02E1000_PHY_POWER_MGMT
#define GS40G_OFFSET_MASK
#define E1000_MPHY_ENA_ACCESS
#define IGP01E1000_PHY_POLARITY_MASK
#define BM_WUC_DATA_OPCODE
#define IGP01E1000_PSSR_SPEED_1000MBPS
#define E1000_KMRNCTRLSTA_OFFSET_SHIFT
#define IFE_PHY_MDIX_CONTROL
#define BM_WUC_HOST_WU_BIT
#define BM_WUC_ENABLE_REG
#define IGP02E1000_AGC_LENGTH_MASK
#define IFE_PMC_MDIX_STATUS
#define E1000_MPHY_ADDRESS_FNC_OVERRIDE
#define I82577_PHY_CTRL2_AUTO_MDI_MDIX
#define E1000_KMRNCTRLSTA_OFFSET
#define BM_PORT_CTRL_PAGE
#define IFE_PHY_EXTENDED_STATUS_CONTROL
#define IGP01E1000_PSCFR_SMART_SPEED
#define E1000_MPHY_ADDR_CTRL
#define E1000_KMRNCTRLSTA
enum e1000_fc_mode current_mode
struct e1000_mac_info mac
struct e1000_phy_info phy
struct e1000_mac_operations ops
void(* config_collision_dist)(struct e1000_hw *)
bool autoneg_wait_to_complete
enum e1000_1000t_rx_status local_rx
enum e1000_media_type media_type
enum e1000_rev_polarity cable_polarity
bool disable_polarity_correction
struct e1000_phy_operations ops
enum e1000_ms_type ms_type
enum e1000_1000t_rx_status remote_rx
enum e1000_ms_type original_ms_type
enum e1000_smart_speed smart_speed
s32(* set_page)(struct e1000_hw *, u16)
s32(* read_reg_locked)(struct e1000_hw *, u32, u16 *)
s32(* get_cfg_done)(struct e1000_hw *hw)
void(* power_up)(struct e1000_hw *)
s32(* reset)(struct e1000_hw *)
s32(* read_i2c_byte)(struct e1000_hw *, u8, u8, u8 *)
s32(* init_params)(struct e1000_hw *)
s32(* read_reg)(struct e1000_hw *, u32, u16 *)
s32(* get_info)(struct e1000_hw *)
void(* release)(struct e1000_hw *)
s32(* set_d3_lplu_state)(struct e1000_hw *, bool)
s32(* force_speed_duplex)(struct e1000_hw *)
s32(* write_i2c_byte)(struct e1000_hw *, u8, u8, u8)
s32(* get_cable_length)(struct e1000_hw *)
s32(* check_reset_block)(struct e1000_hw *)
s32(* acquire)(struct e1000_hw *)
s32(* write_reg_locked)(struct e1000_hw *, u32, u16)
s32(* cfg_on_link_up)(struct e1000_hw *)
s32(* set_d0_lplu_state)(struct e1000_hw *, bool)
s32(* write_reg)(struct e1000_hw *, u32, u16)
s32(* commit)(struct e1000_hw *)
void(* power_down)(struct e1000_hw *)
s32(* check_polarity)(struct e1000_hw *)
s32(* write_reg_page)(struct e1000_hw *, u32, u16)
s32(* read_reg_page)(struct e1000_hw *, u32, u16 *)