70 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10,
71 10, 10, 20, 20, 20, 20, 20, 25, 25, 25, 25, 25, 25, 25, 30, 30, 30, 30,
72 40, 40, 40, 40, 40, 40, 40, 40, 40, 50, 50, 50, 50, 50, 50, 50, 60, 60,
73 60, 60, 60, 60, 60, 60, 60, 70, 70, 70, 70, 70, 70, 80, 80, 80, 80, 80,
74 80, 90, 90, 90, 90, 90, 90, 90, 90, 90, 100, 100, 100, 100, 100, 100,
75 100, 100, 100, 100, 100, 100, 100, 100, 110, 110, 110, 110, 110, 110,
76 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 120, 120,
77 120, 120, 120, 120, 120, 120, 120, 120};
78#define IGP01E1000_AGC_LENGTH_TABLE_SIZE \
79 (sizeof(e1000_igp_cable_length_table) / \
80 sizeof(e1000_igp_cable_length_table[0]))
136 DEBUGFUNC(
"e1000_init_nvm_params_82541");
145 eecd &= ~E1000_EECD_ADDR_BITS;
153 eecd &= ~E1000_EECD_SIZE;
224 DEBUGFUNC(
"e1000_init_mac_params_82541");
284 DEBUGFUNC(
"e1000_init_function_pointers_82541");
299 u32 ledctl, ctrl, manc;
303 DEBUGOUT(
"Masking off all interrupts\n");
325 DEBUGOUT(
"Issuing a global reset to 82541/82547 MAC\n");
346 manc &= ~E1000_MANC_ARP_EN;
360 DEBUGOUT(
"Masking off all interrupts\n");
387 DEBUGOUT(
"Error initializing identification LED\n");
398 DEBUGOUT(
"Initializing the IEEE VLAN\n");
421 txdctl = (txdctl & ~E1000_TXDCTL_WTHRESH) |
452 DEBUGFUNC(
"e1000_get_link_up_info_82541");
541 DEBUGFUNC(
"e1000_setup_copper_link_82541");
652 DEBUGOUT(
"Error configuring flow control\n");
676 u16 phy_data, phy_saved_data, speed, duplex, i;
684 DEBUGFUNC(
"e1000_config_dsp_after_link_change_82541");
689 DEBUGOUT(
"Error getting link speed and duplex\n");
712 phy_data &= ~IGP01E1000_PHY_EDAC_MU_INDEX;
734 for (i = 0; i < ffe_idle_err_timeout; i++) {
754 ffe_idle_err_timeout =
786 phy_data &= ~IGP01E1000_PHY_EDAC_MU_INDEX;
821 ret_val = phy->
ops.
read_reg(hw, 0x2F5B, &phy_saved_data);
850 ret_val = phy->
ops.
write_reg(hw, 0x2F5B, phy_saved_data);
878 u16 cur_agc_value, agc_value = 0;
885 DEBUGFUNC(
"e1000_get_cable_length_igp_82541");
889 ret_val = phy->
ops.
read_reg(hw, agc_reg_array[i], &data);
897 (cur_agc_value == 0)) {
902 agc_value += cur_agc_value;
904 if (min_agc_value > cur_agc_value)
905 min_agc_value = cur_agc_value;
910 agc_value -= min_agc_value;
952 DEBUGFUNC(
"e1000_set_d3_lplu_state_82541");
969 data &= ~IGP01E1000_GMII_FLEX_SPD;
1000 data &= ~IGP01E1000_PSCFR_SMART_SPEED;
1021 data &= ~IGP01E1000_PSCFR_SMART_SPEED;
1098 DEBUGFUNC(
"e1000_phy_init_script_82541");
1160 u16 fused, fine, coarse;
1176 }
else if (coarse ==
1209 DEBUGFUNC(
"e1000_init_script_state_82541");
1212 DEBUGOUT(
"Initialization script not necessary.\n");
1246 DEBUGFUNC(
"e1000_clear_hw_cntrs_82541");
1284 u16 offset, nvm_data, i;
1288 for (i = 0; i < ETHER_ADDR_LEN; i += 2) {
1290 ret_val = hw->
nvm.
ops.
read(hw, offset, 1, &nvm_data);
1299 for (i = 0; i < ETHER_ADDR_LEN; i++)
static s32 e1000_cleanup_led_82541(struct e1000_hw *hw)
static const u16 e1000_igp_cable_length_table[]
static void e1000_clear_hw_cntrs_82541(struct e1000_hw *hw)
static s32 e1000_config_dsp_after_link_change_82541(struct e1000_hw *hw, bool link_up)
static s32 e1000_init_nvm_params_82541(struct e1000_hw *hw)
static s32 e1000_get_link_up_info_82541(struct e1000_hw *hw, u16 *speed, u16 *duplex)
void e1000_init_script_state_82541(struct e1000_hw *hw, bool state)
static s32 e1000_init_mac_params_82541(struct e1000_hw *hw)
static s32 e1000_init_hw_82541(struct e1000_hw *hw)
static s32 e1000_read_mac_addr_82541(struct e1000_hw *hw)
static s32 e1000_check_for_link_82541(struct e1000_hw *hw)
static s32 e1000_reset_hw_82541(struct e1000_hw *hw)
static s32 e1000_phy_hw_reset_82541(struct e1000_hw *hw)
static s32 e1000_setup_led_82541(struct e1000_hw *hw)
static s32 e1000_get_cable_length_igp_82541(struct e1000_hw *hw)
#define IGP01E1000_AGC_LENGTH_TABLE_SIZE
void e1000_init_function_pointers_82541(struct e1000_hw *hw)
static s32 e1000_set_d3_lplu_state_82541(struct e1000_hw *hw, bool active)
static s32 e1000_phy_init_script_82541(struct e1000_hw *hw)
static s32 e1000_init_phy_params_82541(struct e1000_hw *hw)
static s32 e1000_setup_copper_link_82541(struct e1000_hw *hw)
static void e1000_power_down_phy_copper_82541(struct e1000_hw *hw)
#define IGP01E1000_PHY_AGC_B
#define IGP01E1000_PHY_EDAC_SIGN_EXT_9_BITS
#define IGP01E1000_ANALOG_FUSE_COARSE_10
#define IGP01E1000_ANALOG_SPARE_FUSE_ENABLED
#define IGP01E1000_IEEE_RESTART_AUTONEG
#define IGP01E1000_PHY_CHANNEL_NUM
#define IGP01E1000_PHY_AGC_PARAM_C
#define IGP01E1000_PHY_AGC_A
#define IGP01E1000_ANALOG_FUSE_POLY_MASK
#define IGP01E1000_ANALOG_SPARE_FUSE_STATUS
#define IGP01E1000_ANALOG_FUSE_FINE_1
#define IGP01E1000_AGC_LENGTH_SHIFT
#define IGP01E1000_PHY_AGC_D
#define IGP01E1000_ANALOG_FUSE_STATUS
#define IGP01E1000_ANALOG_FUSE_CONTROL
#define FFE_IDLE_ERR_COUNT_TIMEOUT_20
#define IGP01E1000_AGC_RANGE
#define IGP01E1000_PHY_AGC_PARAM_A
#define IGP01E1000_ANALOG_FUSE_FINE_10
#define IGP01E1000_ANALOG_FUSE_COARSE_MASK
#define IGP01E1000_PHY_AGC_PARAM_B
#define NVM_WORD_SIZE_BASE_SHIFT_82541
#define IGP01E1000_PHY_DSP_FFE
#define IGP01E1000_ANALOG_FUSE_ENABLE_SW_CONTROL
#define IGP01E1000_IEEE_FORCE_GIG
#define IGP01E1000_ANALOG_FUSE_COARSE_THRESH
#define IGP01E1000_PHY_DSP_FFE_CM_CP
#define IGP01E1000_ANALOG_FUSE_BYPASS
#define IGP01E1000_ANALOG_FUSE_FINE_MASK
#define FFE_IDLE_ERR_COUNT_TIMEOUT_100
#define IGP01E1000_PHY_AGC_PARAM_D
#define IGP01E1000_PHY_DSP_FFE_DEFAULT
#define IGP01E1000_PHY_AGC_C
#define IGP_ACTIVITY_LED_ENABLE
#define E1000_CTRL_FRCSPD
#define E1000_ALL_SPEED_DUPLEX
#define IGP_ACTIVITY_LED_MASK
#define E1000_ALL_10_SPEED
#define NWAY_LPAR_10T_FD_CAPS
#define E1000_CTRL_PHY_RST
#define NWAY_ER_LP_NWAY_CAPS
#define AUTONEG_ADVERTISE_SPEED_DEFAULT
#define SR_1000T_IDLE_ERROR_CNT
#define E1000_MANC_SMBUS_EN
#define E1000_ALL_NOT_GIG
#define E1000_EECD_ADDR_BITS
#define E1000_RAR_ENTRIES
#define E1000_CTRL_FRCDPX
#define SR_1000T_PHY_EXCESSIVE_IDLE_ERR_COUNT
#define IGP01E1000_I_PHY_ID
#define E1000_TXDCTL_FULL_TX_DESC_WB
#define NWAY_LPAR_100TX_FD_CAPS
@ e1000_nvm_override_microwire_large
@ e1000_nvm_override_microwire_small
@ e1000_nvm_override_spi_large
@ e1000_nvm_override_spi_small
@ e1000_dsp_config_activated
@ e1000_dsp_config_enabled
@ e1000_dsp_config_disabled
@ e1000_media_type_copper
@ e1000_nvm_eeprom_microwire
@ e1000_ffe_config_enabled
@ e1000_ffe_config_active
s32 e1000_valid_led_default_generic(struct e1000_hw *hw, u16 *data)
s32 e1000_id_led_init_generic(struct e1000_hw *hw)
s32 e1000_get_bus_info_pci_generic(struct e1000_hw *hw)
s32 e1000_led_on_generic(struct e1000_hw *hw)
s32 e1000_setup_link_generic(struct e1000_hw *hw)
void e1000_clear_hw_cntrs_base_generic(struct e1000_hw *hw)
s32 e1000_led_off_generic(struct e1000_hw *hw)
void e1000_update_mc_addr_list_generic(struct e1000_hw *hw, u8 *mc_addr_list, u32 mc_addr_count)
void e1000_clear_vfta_generic(struct e1000_hw *hw)
s32 e1000_get_speed_and_duplex_copper_generic(struct e1000_hw *hw, u16 *speed, u16 *duplex)
void e1000_init_rx_addrs_generic(struct e1000_hw *hw, u16 rar_count)
void e1000_write_vfta_generic(struct e1000_hw *hw, u32 offset, u32 value)
s32 e1000_config_fc_after_link_up_generic(struct e1000_hw *hw)
void e1000_set_lan_id_single_port(struct e1000_hw *hw)
s32 e1000_update_nvm_checksum_generic(struct e1000_hw *hw)
s32 e1000_read_nvm_microwire(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
s32 e1000_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
s32 e1000_read_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
s32 e1000_write_nvm_microwire(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
void e1000_release_nvm_generic(struct e1000_hw *hw)
s32 e1000_acquire_nvm_generic(struct e1000_hw *hw)
s32 e1000_validate_nvm_checksum_generic(struct e1000_hw *hw)
#define E1000_WRITE_REG_IO(hw, reg, value)
#define E1000_WRITE_REG_ARRAY(hw, reg, index, value)
#define E1000_WRITE_FLUSH(a)
#define E1000_WRITE_REG(hw, reg, value)
#define msec_delay_irq(x)
#define E1000_READ_REG(hw, reg)
s32 e1000_phy_force_speed_duplex_igp(struct e1000_hw *hw)
s32 e1000_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data)
s32 e1000_phy_has_link_generic(struct e1000_hw *hw, u32 iterations, u32 usec_interval, bool *success)
s32 e1000_get_phy_id(struct e1000_hw *hw)
void e1000_power_down_phy_copper(struct e1000_hw *hw)
s32 e1000_get_phy_info_igp(struct e1000_hw *hw)
s32 e1000_check_polarity_igp(struct e1000_hw *hw)
void e1000_power_up_phy_copper(struct e1000_hw *hw)
s32 e1000_get_cfg_done_generic(struct e1000_hw E1000_UNUSEDARG *hw)
s32 e1000_phy_hw_reset_generic(struct e1000_hw *hw)
s32 e1000_set_d3_lplu_state_generic(struct e1000_hw *hw, bool active)
s32 e1000_check_downshift_generic(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_setup_copper_link_generic(struct e1000_hw *hw)
#define IGP01E1000_PHY_PORT_CONFIG
#define IGP01E1000_GMII_FLEX_SPD
#define IGP01E1000_GMII_SPD
#define IGP01E1000_GMII_FIFO
#define IGP01E1000_PSCFR_SMART_SPEED
enum e1000_ffe_config ffe_config
enum e1000_dsp_config dsp_config
union e1000_hw::@46 dev_spec
struct e1000_mac_info mac
struct e1000_dev_spec_82541 _82541
struct e1000_nvm_info nvm
struct e1000_phy_info phy
bool asf_firmware_present
struct e1000_mac_operations ops
u8 perm_addr[ETHER_ADDR_LEN]
s32(* setup_led)(struct e1000_hw *)
s32(* id_led_init)(struct e1000_hw *)
s32(* get_link_up_info)(struct e1000_hw *, u16 *, u16 *)
s32(* setup_physical_interface)(struct e1000_hw *)
s32(* check_for_link)(struct e1000_hw *)
void(* config_collision_dist)(struct e1000_hw *)
void(* clear_vfta)(struct e1000_hw *)
s32(* reset_hw)(struct e1000_hw *)
s32(* led_on)(struct e1000_hw *)
s32(* read_mac_addr)(struct e1000_hw *)
void(* write_vfta)(struct e1000_hw *, u32, u32)
s32(* init_hw)(struct e1000_hw *)
s32(* setup_link)(struct e1000_hw *)
s32(* cleanup_led)(struct e1000_hw *)
void(* clear_hw_cntrs)(struct e1000_hw *)
void(* set_lan_id)(struct e1000_hw *)
void(* update_mc_addr_list)(struct e1000_hw *, u8 *, u32)
s32(* led_off)(struct e1000_hw *)
s32(* get_bus_info)(struct e1000_hw *)
s32(* init_params)(struct e1000_hw *)
struct e1000_nvm_operations ops
enum e1000_nvm_override override
void(* release)(struct e1000_hw *)
s32(* init_params)(struct e1000_hw *)
s32(* write)(struct e1000_hw *, u16, u16, u16 *)
s32(* validate)(struct e1000_hw *)
s32(* update)(struct e1000_hw *)
s32(* read)(struct e1000_hw *, u16, u16, u16 *)
s32(* acquire)(struct e1000_hw *)
s32(* valid_led_default)(struct e1000_hw *, u16 *)
enum e1000_media_type media_type
struct e1000_phy_operations ops
enum e1000_smart_speed smart_speed
s32(* get_cfg_done)(struct e1000_hw *hw)
void(* power_up)(struct e1000_hw *)
s32(* reset)(struct e1000_hw *)
s32(* init_params)(struct e1000_hw *)
s32(* read_reg)(struct e1000_hw *, u32, u16 *)
s32(* get_info)(struct e1000_hw *)
s32(* set_d3_lplu_state)(struct e1000_hw *, bool)
s32(* force_speed_duplex)(struct e1000_hw *)
s32(* get_cable_length)(struct e1000_hw *)
s32(* write_reg)(struct e1000_hw *, u32, u16)
void(* power_down)(struct e1000_hw *)
s32(* check_polarity)(struct e1000_hw *)