37#include "e1000_osdep.h"
70 e1000_eeprom_uninitialized = 0,
72 e1000_eeprom_microwire,
76 e1000_num_eeprom_types
81 e1000_media_type_copper = 0,
82 e1000_media_type_fiber = 1,
83 e1000_media_type_internal_serdes = 2,
92} e1000_speed_duplex_type;
97 e1000_fc_rx_pause = 1,
98 e1000_fc_tx_pause = 2,
100 e1000_fc_default = 0xFF
103struct e1000_shadow_ram {
104 uint16_t eeprom_word;
110 e1000_bus_type_unknown = 0,
113 e1000_bus_type_pci_express,
114 e1000_bus_type_reserved
119 e1000_bus_speed_unknown = 0,
125 e1000_bus_speed_2500,
126 e1000_bus_speed_reserved
131 e1000_bus_width_unknown = 0,
134 e1000_bus_width_pciex_1,
135 e1000_bus_width_pciex_2,
136 e1000_bus_width_pciex_4,
137 e1000_bus_width_reserved
142 e1000_cable_length_50 = 0,
143 e1000_cable_length_50_80,
144 e1000_cable_length_80_110,
145 e1000_cable_length_110_140,
146 e1000_cable_length_140,
147 e1000_cable_length_undefined = 0xFF
151 e1000_gg_cable_length_60 = 0,
152 e1000_gg_cable_length_60_115 = 1,
153 e1000_gg_cable_length_115_150 = 2,
154 e1000_gg_cable_length_150 = 4
155} e1000_gg_cable_length;
158 e1000_igp_cable_length_10 = 10,
159 e1000_igp_cable_length_20 = 20,
160 e1000_igp_cable_length_30 = 30,
161 e1000_igp_cable_length_40 = 40,
162 e1000_igp_cable_length_50 = 50,
163 e1000_igp_cable_length_60 = 60,
164 e1000_igp_cable_length_70 = 70,
165 e1000_igp_cable_length_80 = 80,
166 e1000_igp_cable_length_90 = 90,
167 e1000_igp_cable_length_100 = 100,
168 e1000_igp_cable_length_110 = 110,
169 e1000_igp_cable_length_115 = 115,
170 e1000_igp_cable_length_120 = 120,
171 e1000_igp_cable_length_130 = 130,
172 e1000_igp_cable_length_140 = 140,
173 e1000_igp_cable_length_150 = 150,
174 e1000_igp_cable_length_160 = 160,
175 e1000_igp_cable_length_170 = 170,
176 e1000_igp_cable_length_180 = 180
177} e1000_igp_cable_length;
180 e1000_10bt_ext_dist_enable_normal = 0,
181 e1000_10bt_ext_dist_enable_lower,
182 e1000_10bt_ext_dist_enable_undefined = 0xFF
183} e1000_10bt_ext_dist_enable;
186 e1000_rev_polarity_normal = 0,
187 e1000_rev_polarity_reversed,
188 e1000_rev_polarity_undefined = 0xFF
192 e1000_downshift_normal = 0,
193 e1000_downshift_activated,
194 e1000_downshift_undefined = 0xFF
198 e1000_smart_speed_default = 0,
199 e1000_smart_speed_on,
200 e1000_smart_speed_off
204 e1000_polarity_reversal_enabled = 0,
205 e1000_polarity_reversal_disabled,
206 e1000_polarity_reversal_undefined = 0xFF
207} e1000_polarity_reversal;
210 e1000_auto_x_mode_manual_mdi = 0,
211 e1000_auto_x_mode_manual_mdix,
212 e1000_auto_x_mode_auto1,
213 e1000_auto_x_mode_auto2,
214 e1000_auto_x_mode_undefined = 0xFF
218 e1000_1000t_rx_status_not_ok = 0,
219 e1000_1000t_rx_status_ok,
220 e1000_1000t_rx_status_undefined = 0xFF
221} e1000_1000t_rx_status;
230 e1000_phy_undefined = 0xFF
234 e1000_ms_hw_default = 0,
235 e1000_ms_force_master,
236 e1000_ms_force_slave,
241 e1000_ffe_config_enabled = 0,
242 e1000_ffe_config_active,
243 e1000_ffe_config_blocked
247 e1000_dsp_config_disabled = 0,
248 e1000_dsp_config_enabled,
249 e1000_dsp_config_activated,
250 e1000_dsp_config_undefined = 0xFF
253struct e1000_phy_info {
254 e1000_cable_length cable_length;
255 e1000_10bt_ext_dist_enable extended_10bt_distance;
256 e1000_rev_polarity cable_polarity;
257 e1000_downshift downshift;
258 e1000_polarity_reversal polarity_correction;
259 e1000_auto_x_mode mdix_mode;
260 e1000_1000t_rx_status local_rx;
261 e1000_1000t_rx_status remote_rx;
264struct e1000_phy_stats {
265 uint32_t idle_errors;
266 uint32_t receive_errors;
269struct e1000_eeprom_info {
270 e1000_eeprom_type type;
272 uint16_t opcode_bits;
273 uint16_t address_bits;
281#define E1000_HOST_IF_MAX_SIZE 2048
284 e1000_byte_align = 0,
285 e1000_word_align = 1,
286 e1000_dword_align = 2
292#define E1000_SUCCESS 0
293#define E1000_ERR_EEPROM 1
294#define E1000_ERR_PHY 2
295#define E1000_ERR_CONFIG 3
296#define E1000_ERR_PARAM 4
297#define E1000_ERR_MAC_TYPE 5
298#define E1000_ERR_PHY_TYPE 6
299#define E1000_ERR_RESET 9
300#define E1000_ERR_MASTER_REQUESTS_PENDING 10
301#define E1000_ERR_HOST_INTERFACE_COMMAND 11
302#define E1000_BLK_PHY_RESET 12
303#define E1000_ERR_SWFW_SYNC 13
307int32_t e1000_reset_hw(
struct e1000_hw *hw);
308int32_t e1000_init_hw(
struct e1000_hw *hw);
309int32_t e1000_id_led_init(
struct e1000_hw * hw);
310int32_t e1000_set_mac_type(
struct e1000_hw *hw);
311void e1000_set_media_type(
struct e1000_hw *hw);
314int32_t e1000_setup_link(
struct e1000_hw *hw);
315int32_t e1000_phy_setup_autoneg(
struct e1000_hw *hw);
316void e1000_config_collision_dist(
struct e1000_hw *hw);
317int32_t e1000_config_fc_after_link_up(
struct e1000_hw *hw);
318int32_t e1000_check_for_link(
struct e1000_hw *hw);
319int32_t e1000_get_speed_and_duplex(
struct e1000_hw *hw, uint16_t * speed, uint16_t * duplex);
320int32_t e1000_wait_autoneg(
struct e1000_hw *hw);
321int32_t e1000_force_mac_fc(
struct e1000_hw *hw);
324int32_t e1000_read_phy_reg(
struct e1000_hw *hw, uint32_t reg_addr, uint16_t *phy_data);
325int32_t e1000_write_phy_reg(
struct e1000_hw *hw, uint32_t reg_addr, uint16_t data);
326int32_t e1000_phy_hw_reset(
struct e1000_hw *hw);
327int32_t e1000_phy_reset(
struct e1000_hw *hw);
328void e1000_phy_powerdown_workaround(
struct e1000_hw *hw);
329int32_t e1000_kumeran_lock_loss_workaround(
struct e1000_hw *hw);
330int32_t e1000_duplex_reversal(
struct e1000_hw *hw);
331int32_t e1000_init_lcd_from_nvm_config_region(
struct e1000_hw *hw, uint32_t cnf_base_addr, uint32_t cnf_size);
332int32_t e1000_init_lcd_from_nvm(
struct e1000_hw *hw);
333int32_t e1000_detect_gig_phy(
struct e1000_hw *hw);
334int32_t e1000_phy_get_info(
struct e1000_hw *hw,
struct e1000_phy_info *phy_info);
335int32_t e1000_phy_m88_get_info(
struct e1000_hw *hw,
struct e1000_phy_info *phy_info);
336int32_t e1000_phy_igp_get_info(
struct e1000_hw *hw,
struct e1000_phy_info *phy_info);
337int32_t e1000_get_cable_length(
struct e1000_hw *hw, uint16_t *min_length, uint16_t *max_length);
338int32_t e1000_check_polarity(
struct e1000_hw *hw, uint16_t *polarity);
339int32_t e1000_check_downshift(
struct e1000_hw *hw);
340int32_t e1000_validate_mdi_setting(
struct e1000_hw *hw);
341int32_t e1000_read_kmrn_reg(
struct e1000_hw *hw, uint32_t reg_addr, uint16_t *data);
342int32_t e1000_write_kmrn_reg(
struct e1000_hw *hw, uint32_t reg_addr, uint16_t data);
345int32_t e1000_init_eeprom_params(
struct e1000_hw *hw);
346boolean_t e1000_is_onboard_nvm_eeprom(
struct e1000_hw *hw);
347int32_t e1000_read_eeprom_eerd(
struct e1000_hw *hw, uint16_t offset, uint16_t words, uint16_t *data);
348int32_t e1000_write_eeprom_eewr(
struct e1000_hw *hw, uint16_t offset, uint16_t words, uint16_t *data);
349int32_t e1000_poll_eerd_eewr_done(
struct e1000_hw *hw,
int eerd);
352uint32_t e1000_enable_mng_pass_thru(
struct e1000_hw *hw);
354#define E1000_MNG_DHCP_TX_PAYLOAD_CMD 64
355#define E1000_HI_MAX_MNG_DATA_LENGTH 0x6F8
357#define E1000_MNG_DHCP_COMMAND_TIMEOUT 10
358#define E1000_MNG_DHCP_COOKIE_OFFSET 0x6F0
359#define E1000_MNG_DHCP_COOKIE_LENGTH 0x10
360#define E1000_MNG_IAMT_MODE 0x3
361#define E1000_MNG_ICH_IAMT_MODE 0x2
362#define E1000_IAMT_SIGNATURE 0x544D4149
364#define E1000_MNG_DHCP_COOKIE_STATUS_PARSING_SUPPORT 0x1
365#define E1000_MNG_DHCP_COOKIE_STATUS_VLAN_SUPPORT 0x2
366#define E1000_VFTA_ENTRY_SHIFT 0x5
367#define E1000_VFTA_ENTRY_MASK 0x7F
368#define E1000_VFTA_ENTRY_BIT_SHIFT_MASK 0x1F
370struct e1000_host_mng_command_header {
375 uint16_t command_length;
378struct e1000_host_mng_command_info {
379 struct e1000_host_mng_command_header command_header;
380 uint8_t command_data[E1000_HI_MAX_MNG_DATA_LENGTH];
382#ifdef E1000_BIG_ENDIAN
383struct e1000_host_mng_dhcp_cookie{
394struct e1000_host_mng_dhcp_cookie{
406int32_t e1000_mng_write_dhcp_info(
struct e1000_hw *hw, uint8_t *buffer,
408boolean_t e1000_check_mng_mode(
struct e1000_hw *hw);
409boolean_t e1000_enable_tx_pkt_filtering(
struct e1000_hw *hw);
410int32_t e1000_mng_enable_host_if(
struct e1000_hw *hw);
411int32_t e1000_mng_host_if_write(
struct e1000_hw *hw, uint8_t *buffer,
412 uint16_t length, uint16_t offset, uint8_t *sum);
413int32_t e1000_mng_write_cmd_header(
struct e1000_hw* hw,
414 struct e1000_host_mng_command_header* hdr);
416int32_t e1000_mng_write_commit(
struct e1000_hw *hw);
418int32_t e1000_read_eeprom(
struct e1000_hw *hw, uint16_t reg, uint16_t words, uint16_t *data);
419int32_t e1000_validate_eeprom_checksum(
struct e1000_hw *hw);
420int32_t e1000_update_eeprom_checksum(
struct e1000_hw *hw);
421int32_t e1000_write_eeprom(
struct e1000_hw *hw, uint16_t reg, uint16_t words, uint16_t *data);
422int32_t e1000_read_part_num(
struct e1000_hw *hw, uint32_t * part_num);
423int32_t e1000_read_mac_addr(
struct e1000_hw * hw);
424int32_t e1000_swfw_sync_acquire(
struct e1000_hw *hw, uint16_t mask);
425void e1000_swfw_sync_release(
struct e1000_hw *hw, uint16_t mask);
426void e1000_release_software_flag(
struct e1000_hw *hw);
427int32_t e1000_get_software_flag(
struct e1000_hw *hw);
430void e1000_init_rx_addrs(
struct e1000_hw *hw);
431void e1000_mc_addr_list_update(
struct e1000_hw *hw, uint8_t * mc_addr_list, uint32_t mc_addr_count, uint32_t pad, uint32_t rar_used_count);
432uint32_t e1000_hash_mc_addr(
struct e1000_hw *hw, uint8_t * mc_addr);
433void e1000_mta_set(
struct e1000_hw *hw, uint32_t hash_value);
434void e1000_rar_set(
struct e1000_hw *hw, uint8_t * mc_addr, uint32_t rar_index);
435void e1000_write_vfta(
struct e1000_hw *hw, uint32_t offset, uint32_t value);
436void e1000_clear_vfta(
struct e1000_hw *hw);
439int32_t e1000_setup_led(
struct e1000_hw *hw);
440int32_t e1000_cleanup_led(
struct e1000_hw *hw);
441int32_t e1000_led_on(
struct e1000_hw *hw);
442int32_t e1000_led_off(
struct e1000_hw *hw);
443int32_t e1000_blink_led_start(
struct e1000_hw *hw);
448void e1000_clear_hw_cntrs(
struct e1000_hw *hw);
449void e1000_reset_adaptive(
struct e1000_hw *hw);
450void e1000_update_adaptive(
struct e1000_hw *hw);
451void e1000_tbi_adjust_stats(
struct e1000_hw *hw,
struct e1000_hw_stats *stats, uint32_t frame_len, uint8_t * mac_addr);
452void e1000_get_bus_info(
struct e1000_hw *hw);
453void e1000_pci_set_mwi(
struct e1000_hw *hw);
454void e1000_pci_clear_mwi(
struct e1000_hw *hw);
455void e1000_read_pci_cfg(
struct e1000_hw *hw, uint32_t reg, uint16_t * value);
456void e1000_write_pci_cfg(
struct e1000_hw *hw, uint32_t reg, uint16_t * value);
458uint32_t e1000_io_read(
struct e1000_hw *hw,
unsigned long port);
459uint32_t e1000_read_reg_io(
struct e1000_hw *hw, uint32_t offset);
460void e1000_io_write(
struct e1000_hw *hw,
unsigned long port, uint32_t value);
461void e1000_write_reg_io(
struct e1000_hw *hw, uint32_t offset, uint32_t value);
462int32_t e1000_config_dsp_after_link_change(
struct e1000_hw *hw, boolean_t link_up);
463int32_t e1000_set_d3_lplu_state(
struct e1000_hw *hw, boolean_t active);
464int32_t e1000_set_d0_lplu_state(
struct e1000_hw *hw, boolean_t active);
465void e1000_set_pci_express_master_disable(
struct e1000_hw *hw);
466void e1000_enable_pciex_master(
struct e1000_hw *hw);
467int32_t e1000_disable_pciex_master(
struct e1000_hw *hw);
468int32_t e1000_get_auto_rd_done(
struct e1000_hw *hw);
469int32_t e1000_get_phy_cfg_done(
struct e1000_hw *hw);
470int32_t e1000_get_software_semaphore(
struct e1000_hw *hw);
471void e1000_release_software_semaphore(
struct e1000_hw *hw);
472int32_t e1000_check_phy_reset_block(
struct e1000_hw *hw);
473int32_t e1000_get_hw_eeprom_semaphore(
struct e1000_hw *hw);
474void e1000_put_hw_eeprom_semaphore(
struct e1000_hw *hw);
475int32_t e1000_commit_shadow_ram(
struct e1000_hw *hw);
476uint8_t e1000_arc_subsystem_valid(
struct e1000_hw *hw);
477int32_t e1000_set_pci_ex_no_snoop(
struct e1000_hw *hw, uint32_t no_snoop);
479int32_t e1000_read_ich8_byte(
struct e1000_hw *hw, uint32_t index,
481int32_t e1000_verify_write_ich8_byte(
struct e1000_hw *hw, uint32_t index,
483int32_t e1000_write_ich8_byte(
struct e1000_hw *hw, uint32_t index,
485int32_t e1000_read_ich8_word(
struct e1000_hw *hw, uint32_t index,
487int32_t e1000_write_ich8_word(
struct e1000_hw *hw, uint32_t index,
489int32_t e1000_read_ich8_data(
struct e1000_hw *hw, uint32_t index,
490 uint32_t size, uint16_t *data);
491int32_t e1000_write_ich8_data(
struct e1000_hw *hw, uint32_t index,
492 uint32_t size, uint16_t data);
493int32_t e1000_read_eeprom_ich8(
struct e1000_hw *hw, uint16_t offset,
494 uint16_t words, uint16_t *data);
495int32_t e1000_write_eeprom_ich8(
struct e1000_hw *hw, uint16_t offset,
496 uint16_t words, uint16_t *data);
497int32_t e1000_erase_ich8_4k_segment(
struct e1000_hw *hw, uint32_t segment);
498int32_t e1000_ich8_cycle_init(
struct e1000_hw *hw);
499int32_t e1000_ich8_flash_cycle(
struct e1000_hw *hw, uint32_t timeout);
500int32_t e1000_phy_ife_get_info(
struct e1000_hw *hw,
501 struct e1000_phy_info *phy_info);
502int32_t e1000_ife_disable_dynamic_power_down(
struct e1000_hw *hw);
503int32_t e1000_ife_enable_dynamic_power_down(
struct e1000_hw *hw);
505#define E1000_READ_REG_IO(a, reg) \
506 e1000_read_reg_io((a), E1000_##reg)
507#define E1000_WRITE_REG_IO(a, reg, val) \
508 e1000_write_reg_io((a), E1000_##reg, val)
511#define E1000_DEV_ID_82542 0x1000
512#define E1000_DEV_ID_82543GC_FIBER 0x1001
513#define E1000_DEV_ID_82543GC_COPPER 0x1004
514#define E1000_DEV_ID_82544EI_COPPER 0x1008
515#define E1000_DEV_ID_82544EI_FIBER 0x1009
516#define E1000_DEV_ID_82544GC_COPPER 0x100C
517#define E1000_DEV_ID_82544GC_LOM 0x100D
518#define E1000_DEV_ID_82540EM 0x100E
519#define E1000_DEV_ID_82540EM_LOM 0x1015
520#define E1000_DEV_ID_82540EP_LOM 0x1016
521#define E1000_DEV_ID_82540EP 0x1017
522#define E1000_DEV_ID_82540EP_LP 0x101E
523#define E1000_DEV_ID_82545EM_COPPER 0x100F
524#define E1000_DEV_ID_82545EM_FIBER 0x1011
525#define E1000_DEV_ID_82545GM_COPPER 0x1026
526#define E1000_DEV_ID_82545GM_FIBER 0x1027
527#define E1000_DEV_ID_82545GM_SERDES 0x1028
528#define E1000_DEV_ID_82546EB_COPPER 0x1010
529#define E1000_DEV_ID_82546EB_FIBER 0x1012
530#define E1000_DEV_ID_82546EB_QUAD_COPPER 0x101D
531#define E1000_DEV_ID_82541EI 0x1013
532#define E1000_DEV_ID_82541EI_MOBILE 0x1018
533#define E1000_DEV_ID_82541ER_LOM 0x1014
534#define E1000_DEV_ID_82541ER 0x1078
535#define E1000_DEV_ID_82547GI 0x1075
536#define E1000_DEV_ID_82541GI 0x1076
537#define E1000_DEV_ID_82541GI_MOBILE 0x1077
538#define E1000_DEV_ID_82541GI_LF 0x107C
539#define E1000_DEV_ID_82546GB_COPPER 0x1079
540#define E1000_DEV_ID_82546GB_FIBER 0x107A
541#define E1000_DEV_ID_82546GB_SERDES 0x107B
542#define E1000_DEV_ID_82546GB_PCIE 0x108A
543#define E1000_DEV_ID_82546GB_QUAD_COPPER 0x1099
544#define E1000_DEV_ID_82547EI 0x1019
545#define E1000_DEV_ID_82547EI_MOBILE 0x101A
546#define E1000_DEV_ID_82571EB_COPPER 0x105E
547#define E1000_DEV_ID_82571EB_FIBER 0x105F
548#define E1000_DEV_ID_82571EB_SERDES 0x1060
549#define E1000_DEV_ID_82571EB_QUAD_COPPER 0x10A4
550#define E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE 0x10BC
551#define E1000_DEV_ID_82572EI_COPPER 0x107D
552#define E1000_DEV_ID_82572EI_FIBER 0x107E
553#define E1000_DEV_ID_82572EI_SERDES 0x107F
554#define E1000_DEV_ID_82572EI 0x10B9
555#define E1000_DEV_ID_82573E 0x108B
556#define E1000_DEV_ID_82573E_IAMT 0x108C
557#define E1000_DEV_ID_82573L 0x109A
558#define E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3 0x10B5
559#define E1000_DEV_ID_80003ES2LAN_COPPER_DPT 0x1096
560#define E1000_DEV_ID_80003ES2LAN_SERDES_DPT 0x1098
561#define E1000_DEV_ID_80003ES2LAN_COPPER_SPT 0x10BA
562#define E1000_DEV_ID_80003ES2LAN_SERDES_SPT 0x10BB
564#define E1000_DEV_ID_ICH8_IGP_M_AMT 0x1049
565#define E1000_DEV_ID_ICH8_IGP_AMT 0x104A
566#define E1000_DEV_ID_ICH8_IGP_C 0x104B
567#define E1000_DEV_ID_ICH8_IFE 0x104C
568#define E1000_DEV_ID_ICH8_IFE_GT 0x10C4
569#define E1000_DEV_ID_ICH8_IFE_G 0x10C5
570#define E1000_DEV_ID_ICH8_IGP_M 0x104D
573#define NODE_ADDRESS_SIZE 6
574#define ETH_LENGTH_OF_ADDRESS 6
577#define MAC_DECODE_SIZE (128 * 1024)
579#define E1000_82542_2_0_REV_ID 2
580#define E1000_82542_2_1_REV_ID 3
581#define E1000_REVISION_0 0
582#define E1000_REVISION_1 1
583#define E1000_REVISION_2 2
584#define E1000_REVISION_3 3
588#define SPEED_1000 1000
593#define ENET_HEADER_SIZE 14
594#define MAXIMUM_ETHERNET_FRAME_SIZE 1518
595#define MINIMUM_ETHERNET_FRAME_SIZE 64
596#define ETHERNET_FCS_SIZE 4
597#define MAXIMUM_ETHERNET_PACKET_SIZE \
598 (MAXIMUM_ETHERNET_FRAME_SIZE - ETHERNET_FCS_SIZE)
599#define MINIMUM_ETHERNET_PACKET_SIZE \
600 (MINIMUM_ETHERNET_FRAME_SIZE - ETHERNET_FCS_SIZE)
601#define CRC_LENGTH ETHERNET_FCS_SIZE
602#define MAX_JUMBO_FRAME_SIZE 0x3F00
606#define VLAN_TAG_SIZE 4
609#define ETHERNET_IEEE_VLAN_TYPE 0x8100
610#define ETHERNET_IP_TYPE 0x0800
611#define ETHERNET_ARP_TYPE 0x0806
614#define IP_PROTOCOL_TCP 6
615#define IP_PROTOCOL_UDP 0x11
622#define POLL_IMS_ENABLE_MASK ( \
634#define IMS_ENABLE_MASK ( \
645#define IMS_ICH8LAN_ENABLE_MASK (\
655#define E1000_RAR_ENTRIES 15
656#define E1000_RAR_ENTRIES_ICH8LAN 7
658#define MIN_NUMBER_OF_DESCRIPTORS 8
659#define MAX_NUMBER_OF_DESCRIPTORS 0xFFF8
662struct e1000_rx_desc {
663 uint64_t buffer_addr;
672union e1000_rx_desc_extended {
674 uint64_t buffer_addr;
689 uint32_t status_error;
696#define MAX_PS_BUFFERS 4
698union e1000_rx_desc_packet_split {
701 uint64_t buffer_addr[MAX_PS_BUFFERS];
715 uint32_t status_error;
720 uint16_t header_status;
728#define E1000_RXD_STAT_DD 0x01
729#define E1000_RXD_STAT_EOP 0x02
730#define E1000_RXD_STAT_IXSM 0x04
731#define E1000_RXD_STAT_VP 0x08
732#define E1000_RXD_STAT_UDPCS 0x10
733#define E1000_RXD_STAT_TCPCS 0x20
734#define E1000_RXD_STAT_IPCS 0x40
735#define E1000_RXD_STAT_PIF 0x80
736#define E1000_RXD_STAT_IPIDV 0x200
737#define E1000_RXD_STAT_UDPV 0x400
738#define E1000_RXD_STAT_ACK 0x8000
739#define E1000_RXD_ERR_CE 0x01
740#define E1000_RXD_ERR_SE 0x02
741#define E1000_RXD_ERR_SEQ 0x04
742#define E1000_RXD_ERR_CXE 0x10
743#define E1000_RXD_ERR_TCPE 0x20
744#define E1000_RXD_ERR_IPE 0x40
745#define E1000_RXD_ERR_RXE 0x80
746#define E1000_RXD_SPC_VLAN_MASK 0x0FFF
747#define E1000_RXD_SPC_PRI_MASK 0xE000
748#define E1000_RXD_SPC_PRI_SHIFT 13
749#define E1000_RXD_SPC_CFI_MASK 0x1000
750#define E1000_RXD_SPC_CFI_SHIFT 12
752#define E1000_RXDEXT_STATERR_CE 0x01000000
753#define E1000_RXDEXT_STATERR_SE 0x02000000
754#define E1000_RXDEXT_STATERR_SEQ 0x04000000
755#define E1000_RXDEXT_STATERR_CXE 0x10000000
756#define E1000_RXDEXT_STATERR_TCPE 0x20000000
757#define E1000_RXDEXT_STATERR_IPE 0x40000000
758#define E1000_RXDEXT_STATERR_RXE 0x80000000
760#define E1000_RXDPS_HDRSTAT_HDRSP 0x00008000
761#define E1000_RXDPS_HDRSTAT_HDRLEN_MASK 0x000003FF
764#define E1000_RXD_ERR_FRAME_ERR_MASK ( \
767 E1000_RXD_ERR_SEQ | \
768 E1000_RXD_ERR_CXE | \
773#define E1000_RXDEXT_ERR_FRAME_ERR_MASK ( \
774 E1000_RXDEXT_STATERR_CE | \
775 E1000_RXDEXT_STATERR_SE | \
776 E1000_RXDEXT_STATERR_SEQ | \
777 E1000_RXDEXT_STATERR_CXE | \
778 E1000_RXDEXT_STATERR_RXE)
781struct e1000_tx_desc {
782 uint64_t buffer_addr;
802#define E1000_TXD_DTYP_D 0x00100000
803#define E1000_TXD_DTYP_C 0x00000000
804#define E1000_TXD_POPTS_IXSM 0x01
805#define E1000_TXD_POPTS_TXSM 0x02
806#define E1000_TXD_CMD_EOP 0x01000000
807#define E1000_TXD_CMD_IFCS 0x02000000
808#define E1000_TXD_CMD_IC 0x04000000
809#define E1000_TXD_CMD_RS 0x08000000
810#define E1000_TXD_CMD_RPS 0x10000000
811#define E1000_TXD_CMD_DEXT 0x20000000
812#define E1000_TXD_CMD_VLE 0x40000000
813#define E1000_TXD_CMD_IDE 0x80000000
814#define E1000_TXD_STAT_DD 0x00000001
815#define E1000_TXD_STAT_EC 0x00000002
816#define E1000_TXD_STAT_LC 0x00000004
817#define E1000_TXD_STAT_TU 0x00000008
818#define E1000_TXD_CMD_TCP 0x01000000
819#define E1000_TXD_CMD_IP 0x02000000
820#define E1000_TXD_CMD_TSE 0x04000000
821#define E1000_TXD_STAT_TC 0x00000004
824struct e1000_context_desc {
841 uint32_t cmd_and_length;
853struct e1000_data_desc {
854 uint64_t buffer_addr;
874#define E1000_NUM_UNICAST 16
875#define E1000_MC_TBL_SIZE 128
876#define E1000_VLAN_FILTER_TBL_SIZE 128
878#define E1000_NUM_UNICAST_ICH8LAN 7
879#define E1000_MC_TBL_SIZE_ICH8LAN 32
884 volatile uint32_t low;
885 volatile uint32_t high;
889#define E1000_NUM_MTA_REGISTERS 128
890#define E1000_NUM_MTA_REGISTERS_ICH8LAN 32
893struct e1000_ipv4_at_entry {
894 volatile uint32_t ipv4_addr;
895 volatile uint32_t reserved;
899#define E1000_WAKEUP_IP_ADDRESS_COUNT_MAX 4
900#define E1000_IP4AT_SIZE E1000_WAKEUP_IP_ADDRESS_COUNT_MAX
901#define E1000_IP4AT_SIZE_ICH8LAN 3
902#define E1000_IP6AT_SIZE 1
905struct e1000_ipv6_at_entry {
906 volatile uint8_t ipv6_addr[16];
910struct e1000_fflt_entry {
911 volatile uint32_t length;
912 volatile uint32_t reserved;
916struct e1000_ffmt_entry {
917 volatile uint32_t mask;
918 volatile uint32_t reserved;
922struct e1000_ffvt_entry {
923 volatile uint32_t value;
924 volatile uint32_t reserved;
928#define E1000_FLEXIBLE_FILTER_COUNT_MAX 4
931#define E1000_FLEXIBLE_FILTER_SIZE_MAX 128
933#define E1000_FFLT_SIZE E1000_FLEXIBLE_FILTER_COUNT_MAX
934#define E1000_FFMT_SIZE E1000_FLEXIBLE_FILTER_SIZE_MAX
935#define E1000_FFVT_SIZE E1000_FLEXIBLE_FILTER_SIZE_MAX
937#define E1000_DISABLE_SERDES_LOOPBACK 0x0400
951#define E1000_CTRL 0x00000
952#define E1000_CTRL_DUP 0x00004
953#define E1000_STATUS 0x00008
954#define E1000_EECD 0x00010
955#define E1000_EERD 0x00014
956#define E1000_CTRL_EXT 0x00018
957#define E1000_FLA 0x0001C
958#define E1000_MDIC 0x00020
959#define E1000_SCTL 0x00024
960#define E1000_FEXTNVM 0x00028
961#define E1000_FCAL 0x00028
962#define E1000_FCAH 0x0002C
963#define E1000_FCT 0x00030
964#define E1000_VET 0x00038
965#define E1000_ICR 0x000C0
966#define E1000_ITR 0x000C4
967#define E1000_ICS 0x000C8
968#define E1000_IMS 0x000D0
969#define E1000_IMC 0x000D8
970#define E1000_IAM 0x000E0
971#define E1000_RCTL 0x00100
972#define E1000_RDTR1 0x02820
973#define E1000_RDBAL1 0x02900
974#define E1000_RDBAH1 0x02904
975#define E1000_RDLEN1 0x02908
976#define E1000_RDH1 0x02910
977#define E1000_RDT1 0x02918
978#define E1000_FCTTV 0x00170
979#define E1000_TXCW 0x00178
980#define E1000_RXCW 0x00180
981#define E1000_TCTL 0x00400
982#define E1000_TCTL_EXT 0x00404
983#define E1000_TIPG 0x00410
984#define E1000_TBT 0x00448
985#define E1000_AIT 0x00458
986#define E1000_LEDCTL 0x00E00
987#define E1000_EXTCNF_CTRL 0x00F00
988#define E1000_EXTCNF_SIZE 0x00F08
989#define E1000_PHY_CTRL 0x00F10
990#define FEXTNVM_SW_CONFIG 0x0001
991#define E1000_PBA 0x01000
992#define E1000_PBS 0x01008
993#define E1000_EEMNGCTL 0x01010
994#define E1000_FLASH_UPDATES 1000
995#define E1000_EEARBC 0x01024
996#define E1000_FLASHT 0x01028
997#define E1000_EEWR 0x0102C
998#define E1000_FLSWCTL 0x01030
999#define E1000_FLSWDATA 0x01034
1000#define E1000_FLSWCNT 0x01038
1001#define E1000_FLOP 0x0103C
1002#define E1000_ERT 0x02008
1003#define E1000_FCRTL 0x02160
1004#define E1000_FCRTH 0x02168
1005#define E1000_PSRCTL 0x02170
1006#define E1000_RDBAL 0x02800
1007#define E1000_RDBAH 0x02804
1008#define E1000_RDLEN 0x02808
1009#define E1000_RDH 0x02810
1010#define E1000_RDT 0x02818
1011#define E1000_RDTR 0x02820
1012#define E1000_RDBAL0 E1000_RDBAL
1013#define E1000_RDBAH0 E1000_RDBAH
1014#define E1000_RDLEN0 E1000_RDLEN
1015#define E1000_RDH0 E1000_RDH
1016#define E1000_RDT0 E1000_RDT
1017#define E1000_RDTR0 E1000_RDTR
1018#define E1000_RXDCTL 0x02828
1019#define E1000_RXDCTL1 0x02928
1020#define E1000_RADV 0x0282C
1021#define E1000_RSRPD 0x02C00
1022#define E1000_RAID 0x02C08
1023#define E1000_TXDMAC 0x03000
1024#define E1000_KABGTXD 0x03004
1025#define E1000_TDFH 0x03410
1026#define E1000_TDFT 0x03418
1027#define E1000_TDFHS 0x03420
1028#define E1000_TDFTS 0x03428
1029#define E1000_TDFPC 0x03430
1030#define E1000_TDBAL 0x03800
1031#define E1000_TDBAH 0x03804
1032#define E1000_TDLEN 0x03808
1033#define E1000_TDH 0x03810
1034#define E1000_TDT 0x03818
1035#define E1000_TIDV 0x03820
1036#define E1000_TXDCTL 0x03828
1037#define E1000_TADV 0x0382C
1038#define E1000_TSPMT 0x03830
1039#define E1000_TARC0 0x03840
1040#define E1000_TDBAL1 0x03900
1041#define E1000_TDBAH1 0x03904
1042#define E1000_TDLEN1 0x03908
1043#define E1000_TDH1 0x03910
1044#define E1000_TDT1 0x03918
1045#define E1000_TXDCTL1 0x03928
1046#define E1000_TARC1 0x03940
1047#define E1000_CRCERRS 0x04000
1048#define E1000_ALGNERRC 0x04004
1049#define E1000_SYMERRS 0x04008
1050#define E1000_RXERRC 0x0400C
1051#define E1000_MPC 0x04010
1052#define E1000_SCC 0x04014
1053#define E1000_ECOL 0x04018
1054#define E1000_MCC 0x0401C
1055#define E1000_LATECOL 0x04020
1056#define E1000_COLC 0x04028
1057#define E1000_DC 0x04030
1058#define E1000_TNCRS 0x04034
1059#define E1000_SEC 0x04038
1060#define E1000_CEXTERR 0x0403C
1061#define E1000_RLEC 0x04040
1062#define E1000_XONRXC 0x04048
1063#define E1000_XONTXC 0x0404C
1064#define E1000_XOFFRXC 0x04050
1065#define E1000_XOFFTXC 0x04054
1066#define E1000_FCRUC 0x04058
1067#define E1000_PRC64 0x0405C
1068#define E1000_PRC127 0x04060
1069#define E1000_PRC255 0x04064
1070#define E1000_PRC511 0x04068
1071#define E1000_PRC1023 0x0406C
1072#define E1000_PRC1522 0x04070
1073#define E1000_GPRC 0x04074
1074#define E1000_BPRC 0x04078
1075#define E1000_MPRC 0x0407C
1076#define E1000_GPTC 0x04080
1077#define E1000_GORCL 0x04088
1078#define E1000_GORCH 0x0408C
1079#define E1000_GOTCL 0x04090
1080#define E1000_GOTCH 0x04094
1081#define E1000_RNBC 0x040A0
1082#define E1000_RUC 0x040A4
1083#define E1000_RFC 0x040A8
1084#define E1000_ROC 0x040AC
1085#define E1000_RJC 0x040B0
1086#define E1000_MGTPRC 0x040B4
1087#define E1000_MGTPDC 0x040B8
1088#define E1000_MGTPTC 0x040BC
1089#define E1000_TORL 0x040C0
1090#define E1000_TORH 0x040C4
1091#define E1000_TOTL 0x040C8
1092#define E1000_TOTH 0x040CC
1093#define E1000_TPR 0x040D0
1094#define E1000_TPT 0x040D4
1095#define E1000_PTC64 0x040D8
1096#define E1000_PTC127 0x040DC
1097#define E1000_PTC255 0x040E0
1098#define E1000_PTC511 0x040E4
1099#define E1000_PTC1023 0x040E8
1100#define E1000_PTC1522 0x040EC
1101#define E1000_MPTC 0x040F0
1102#define E1000_BPTC 0x040F4
1103#define E1000_TSCTC 0x040F8
1104#define E1000_TSCTFC 0x040FC
1105#define E1000_IAC 0x04100
1106#define E1000_ICRXPTC 0x04104
1107#define E1000_ICRXATC 0x04108
1108#define E1000_ICTXPTC 0x0410C
1109#define E1000_ICTXATC 0x04110
1110#define E1000_ICTXQEC 0x04118
1111#define E1000_ICTXQMTC 0x0411C
1112#define E1000_ICRXDMTC 0x04120
1113#define E1000_ICRXOC 0x04124
1114#define E1000_RXCSUM 0x05000
1115#define E1000_RFCTL 0x05008
1116#define E1000_MTA 0x05200
1117#define E1000_RA 0x05400
1118#define E1000_VFTA 0x05600
1119#define E1000_WUC 0x05800
1120#define E1000_WUFC 0x05808
1121#define E1000_WUS 0x05810
1122#define E1000_MANC 0x05820
1123#define E1000_IPAV 0x05838
1124#define E1000_IP4AT 0x05840
1125#define E1000_IP6AT 0x05880
1126#define E1000_WUPL 0x05900
1127#define E1000_WUPM 0x05A00
1128#define E1000_FFLT 0x05F00
1129#define E1000_HOST_IF 0x08800
1130#define E1000_FFMT 0x09000
1131#define E1000_FFVT 0x09800
1133#define E1000_KUMCTRLSTA 0x00034
1134#define E1000_MDPHYA 0x0003C
1135#define E1000_MANC2H 0x05860
1136#define E1000_SW_FW_SYNC 0x05B5C
1138#define E1000_GCR 0x05B00
1139#define E1000_GSCL_1 0x05B10
1140#define E1000_GSCL_2 0x05B14
1141#define E1000_GSCL_3 0x05B18
1142#define E1000_GSCL_4 0x05B1C
1143#define E1000_FACTPS 0x05B30
1144#define E1000_SWSM 0x05B50
1145#define E1000_FWSM 0x05B54
1146#define E1000_FFLT_DBG 0x05F04
1147#define E1000_HICR 0x08F00
1150#define E1000_CPUVEC 0x02C10
1151#define E1000_MRQC 0x05818
1152#define E1000_RETA 0x05C00
1153#define E1000_RSSRK 0x05C80
1154#define E1000_RSSIM 0x05864
1155#define E1000_RSSIR 0x05868
1162#define E1000_82542_CTRL E1000_CTRL
1163#define E1000_82542_CTRL_DUP E1000_CTRL_DUP
1164#define E1000_82542_STATUS E1000_STATUS
1165#define E1000_82542_EECD E1000_EECD
1166#define E1000_82542_EERD E1000_EERD
1167#define E1000_82542_CTRL_EXT E1000_CTRL_EXT
1168#define E1000_82542_FLA E1000_FLA
1169#define E1000_82542_MDIC E1000_MDIC
1170#define E1000_82542_SCTL E1000_SCTL
1171#define E1000_82542_FEXTNVM E1000_FEXTNVM
1172#define E1000_82542_FCAL E1000_FCAL
1173#define E1000_82542_FCAH E1000_FCAH
1174#define E1000_82542_FCT E1000_FCT
1175#define E1000_82542_VET E1000_VET
1176#define E1000_82542_RA 0x00040
1177#define E1000_82542_ICR E1000_ICR
1178#define E1000_82542_ITR E1000_ITR
1179#define E1000_82542_ICS E1000_ICS
1180#define E1000_82542_IMS E1000_IMS
1181#define E1000_82542_IMC E1000_IMC
1182#define E1000_82542_RCTL E1000_RCTL
1183#define E1000_82542_RDTR 0x00108
1184#define E1000_82542_RDBAL 0x00110
1185#define E1000_82542_RDBAH 0x00114
1186#define E1000_82542_RDLEN 0x00118
1187#define E1000_82542_RDH 0x00120
1188#define E1000_82542_RDT 0x00128
1189#define E1000_82542_RDTR0 E1000_82542_RDTR
1190#define E1000_82542_RDBAL0 E1000_82542_RDBAL
1191#define E1000_82542_RDBAH0 E1000_82542_RDBAH
1192#define E1000_82542_RDLEN0 E1000_82542_RDLEN
1193#define E1000_82542_RDH0 E1000_82542_RDH
1194#define E1000_82542_RDT0 E1000_82542_RDT
1195#define E1000_82542_SRRCTL(_n) (0x280C + ((_n) << 8))
1197#define E1000_82542_DCA_RXCTRL(_n) (0x02814 + ((_n) << 8))
1198#define E1000_82542_RDBAH3 0x02B04
1199#define E1000_82542_RDBAL3 0x02B00
1200#define E1000_82542_RDLEN3 0x02B08
1201#define E1000_82542_RDH3 0x02B10
1202#define E1000_82542_RDT3 0x02B18
1203#define E1000_82542_RDBAL2 0x02A00
1204#define E1000_82542_RDBAH2 0x02A04
1205#define E1000_82542_RDLEN2 0x02A08
1206#define E1000_82542_RDH2 0x02A10
1207#define E1000_82542_RDT2 0x02A18
1208#define E1000_82542_RDTR1 0x00130
1209#define E1000_82542_RDBAL1 0x00138
1210#define E1000_82542_RDBAH1 0x0013C
1211#define E1000_82542_RDLEN1 0x00140
1212#define E1000_82542_RDH1 0x00148
1213#define E1000_82542_RDT1 0x00150
1214#define E1000_82542_FCRTH 0x00160
1215#define E1000_82542_FCRTL 0x00168
1216#define E1000_82542_FCTTV E1000_FCTTV
1217#define E1000_82542_TXCW E1000_TXCW
1218#define E1000_82542_RXCW E1000_RXCW
1219#define E1000_82542_MTA 0x00200
1220#define E1000_82542_TCTL E1000_TCTL
1221#define E1000_82542_TCTL_EXT E1000_TCTL_EXT
1222#define E1000_82542_TIPG E1000_TIPG
1223#define E1000_82542_TDBAL 0x00420
1224#define E1000_82542_TDBAH 0x00424
1225#define E1000_82542_TDLEN 0x00428
1226#define E1000_82542_TDH 0x00430
1227#define E1000_82542_TDT 0x00438
1228#define E1000_82542_TIDV 0x00440
1229#define E1000_82542_TBT E1000_TBT
1230#define E1000_82542_AIT E1000_AIT
1231#define E1000_82542_VFTA 0x00600
1232#define E1000_82542_LEDCTL E1000_LEDCTL
1233#define E1000_82542_PBA E1000_PBA
1234#define E1000_82542_PBS E1000_PBS
1235#define E1000_82542_EEMNGCTL E1000_EEMNGCTL
1236#define E1000_82542_EEARBC E1000_EEARBC
1237#define E1000_82542_FLASHT E1000_FLASHT
1238#define E1000_82542_EEWR E1000_EEWR
1239#define E1000_82542_FLSWCTL E1000_FLSWCTL
1240#define E1000_82542_FLSWDATA E1000_FLSWDATA
1241#define E1000_82542_FLSWCNT E1000_FLSWCNT
1242#define E1000_82542_FLOP E1000_FLOP
1243#define E1000_82542_EXTCNF_CTRL E1000_EXTCNF_CTRL
1244#define E1000_82542_EXTCNF_SIZE E1000_EXTCNF_SIZE
1245#define E1000_82542_PHY_CTRL E1000_PHY_CTRL
1246#define E1000_82542_ERT E1000_ERT
1247#define E1000_82542_RXDCTL E1000_RXDCTL
1248#define E1000_82542_RXDCTL1 E1000_RXDCTL1
1249#define E1000_82542_RADV E1000_RADV
1250#define E1000_82542_RSRPD E1000_RSRPD
1251#define E1000_82542_TXDMAC E1000_TXDMAC
1252#define E1000_82542_KABGTXD E1000_KABGTXD
1253#define E1000_82542_TDFHS E1000_TDFHS
1254#define E1000_82542_TDFTS E1000_TDFTS
1255#define E1000_82542_TDFPC E1000_TDFPC
1256#define E1000_82542_TXDCTL E1000_TXDCTL
1257#define E1000_82542_TADV E1000_TADV
1258#define E1000_82542_TSPMT E1000_TSPMT
1259#define E1000_82542_CRCERRS E1000_CRCERRS
1260#define E1000_82542_ALGNERRC E1000_ALGNERRC
1261#define E1000_82542_SYMERRS E1000_SYMERRS
1262#define E1000_82542_RXERRC E1000_RXERRC
1263#define E1000_82542_MPC E1000_MPC
1264#define E1000_82542_SCC E1000_SCC
1265#define E1000_82542_ECOL E1000_ECOL
1266#define E1000_82542_MCC E1000_MCC
1267#define E1000_82542_LATECOL E1000_LATECOL
1268#define E1000_82542_COLC E1000_COLC
1269#define E1000_82542_DC E1000_DC
1270#define E1000_82542_TNCRS E1000_TNCRS
1271#define E1000_82542_SEC E1000_SEC
1272#define E1000_82542_CEXTERR E1000_CEXTERR
1273#define E1000_82542_RLEC E1000_RLEC
1274#define E1000_82542_XONRXC E1000_XONRXC
1275#define E1000_82542_XONTXC E1000_XONTXC
1276#define E1000_82542_XOFFRXC E1000_XOFFRXC
1277#define E1000_82542_XOFFTXC E1000_XOFFTXC
1278#define E1000_82542_FCRUC E1000_FCRUC
1279#define E1000_82542_PRC64 E1000_PRC64
1280#define E1000_82542_PRC127 E1000_PRC127
1281#define E1000_82542_PRC255 E1000_PRC255
1282#define E1000_82542_PRC511 E1000_PRC511
1283#define E1000_82542_PRC1023 E1000_PRC1023
1284#define E1000_82542_PRC1522 E1000_PRC1522
1285#define E1000_82542_GPRC E1000_GPRC
1286#define E1000_82542_BPRC E1000_BPRC
1287#define E1000_82542_MPRC E1000_MPRC
1288#define E1000_82542_GPTC E1000_GPTC
1289#define E1000_82542_GORCL E1000_GORCL
1290#define E1000_82542_GORCH E1000_GORCH
1291#define E1000_82542_GOTCL E1000_GOTCL
1292#define E1000_82542_GOTCH E1000_GOTCH
1293#define E1000_82542_RNBC E1000_RNBC
1294#define E1000_82542_RUC E1000_RUC
1295#define E1000_82542_RFC E1000_RFC
1296#define E1000_82542_ROC E1000_ROC
1297#define E1000_82542_RJC E1000_RJC
1298#define E1000_82542_MGTPRC E1000_MGTPRC
1299#define E1000_82542_MGTPDC E1000_MGTPDC
1300#define E1000_82542_MGTPTC E1000_MGTPTC
1301#define E1000_82542_TORL E1000_TORL
1302#define E1000_82542_TORH E1000_TORH
1303#define E1000_82542_TOTL E1000_TOTL
1304#define E1000_82542_TOTH E1000_TOTH
1305#define E1000_82542_TPR E1000_TPR
1306#define E1000_82542_TPT E1000_TPT
1307#define E1000_82542_PTC64 E1000_PTC64
1308#define E1000_82542_PTC127 E1000_PTC127
1309#define E1000_82542_PTC255 E1000_PTC255
1310#define E1000_82542_PTC511 E1000_PTC511
1311#define E1000_82542_PTC1023 E1000_PTC1023
1312#define E1000_82542_PTC1522 E1000_PTC1522
1313#define E1000_82542_MPTC E1000_MPTC
1314#define E1000_82542_BPTC E1000_BPTC
1315#define E1000_82542_TSCTC E1000_TSCTC
1316#define E1000_82542_TSCTFC E1000_TSCTFC
1317#define E1000_82542_RXCSUM E1000_RXCSUM
1318#define E1000_82542_WUC E1000_WUC
1319#define E1000_82542_WUFC E1000_WUFC
1320#define E1000_82542_WUS E1000_WUS
1321#define E1000_82542_MANC E1000_MANC
1322#define E1000_82542_IPAV E1000_IPAV
1323#define E1000_82542_IP4AT E1000_IP4AT
1324#define E1000_82542_IP6AT E1000_IP6AT
1325#define E1000_82542_WUPL E1000_WUPL
1326#define E1000_82542_WUPM E1000_WUPM
1327#define E1000_82542_FFLT E1000_FFLT
1328#define E1000_82542_TDFH 0x08010
1329#define E1000_82542_TDFT 0x08018
1330#define E1000_82542_FFMT E1000_FFMT
1331#define E1000_82542_FFVT E1000_FFVT
1332#define E1000_82542_HOST_IF E1000_HOST_IF
1333#define E1000_82542_IAM E1000_IAM
1334#define E1000_82542_EEMNGCTL E1000_EEMNGCTL
1335#define E1000_82542_PSRCTL E1000_PSRCTL
1336#define E1000_82542_RAID E1000_RAID
1337#define E1000_82542_TARC0 E1000_TARC0
1338#define E1000_82542_TDBAL1 E1000_TDBAL1
1339#define E1000_82542_TDBAH1 E1000_TDBAH1
1340#define E1000_82542_TDLEN1 E1000_TDLEN1
1341#define E1000_82542_TDH1 E1000_TDH1
1342#define E1000_82542_TDT1 E1000_TDT1
1343#define E1000_82542_TXDCTL1 E1000_TXDCTL1
1344#define E1000_82542_TARC1 E1000_TARC1
1345#define E1000_82542_RFCTL E1000_RFCTL
1346#define E1000_82542_GCR E1000_GCR
1347#define E1000_82542_GSCL_1 E1000_GSCL_1
1348#define E1000_82542_GSCL_2 E1000_GSCL_2
1349#define E1000_82542_GSCL_3 E1000_GSCL_3
1350#define E1000_82542_GSCL_4 E1000_GSCL_4
1351#define E1000_82542_FACTPS E1000_FACTPS
1352#define E1000_82542_SWSM E1000_SWSM
1353#define E1000_82542_FWSM E1000_FWSM
1354#define E1000_82542_FFLT_DBG E1000_FFLT_DBG
1355#define E1000_82542_IAC E1000_IAC
1356#define E1000_82542_ICRXPTC E1000_ICRXPTC
1357#define E1000_82542_ICRXATC E1000_ICRXATC
1358#define E1000_82542_ICTXPTC E1000_ICTXPTC
1359#define E1000_82542_ICTXATC E1000_ICTXATC
1360#define E1000_82542_ICTXQEC E1000_ICTXQEC
1361#define E1000_82542_ICTXQMTC E1000_ICTXQMTC
1362#define E1000_82542_ICRXDMTC E1000_ICRXDMTC
1363#define E1000_82542_ICRXOC E1000_ICRXOC
1364#define E1000_82542_HICR E1000_HICR
1366#define E1000_82542_CPUVEC E1000_CPUVEC
1367#define E1000_82542_MRQC E1000_MRQC
1368#define E1000_82542_RETA E1000_RETA
1369#define E1000_82542_RSSRK E1000_RSSRK
1370#define E1000_82542_RSSIM E1000_RSSIM
1371#define E1000_82542_RSSIR E1000_RSSIR
1372#define E1000_82542_KUMCTRLSTA E1000_KUMCTRLSTA
1373#define E1000_82542_SW_FW_SYNC E1000_SW_FW_SYNC
1376struct e1000_hw_stats {
1449 uint8_t *flash_address;
1450 e1000_mac_type mac_type;
1451 e1000_phy_type phy_type;
1452 uint32_t phy_init_script;
1453 e1000_media_type media_type;
1455 struct e1000_shadow_ram *eeprom_shadow_ram;
1456 uint32_t flash_bank_size;
1457 uint32_t flash_base_addr;
1459 e1000_bus_speed bus_speed;
1460 e1000_bus_width bus_width;
1461 e1000_bus_type bus_type;
1462 struct e1000_eeprom_info eeprom;
1463 e1000_ms_type master_slave;
1464 e1000_ms_type original_master_slave;
1465 e1000_ffe_config ffe_config_state;
1466 uint32_t asf_firmware_present;
1467 uint32_t eeprom_semaphore_present;
1468 uint32_t swfw_sync_present;
1469 uint32_t swfwhw_semaphore_present;
1470 unsigned long io_base;
1472 uint32_t phy_revision;
1474 uint32_t original_fc;
1476 uint32_t autoneg_failed;
1477 uint32_t max_frame_size;
1478 uint32_t min_frame_size;
1479 uint32_t mc_filter_type;
1480 uint32_t num_mc_addrs;
1481 uint32_t collision_delta;
1482 uint32_t tx_packet_delta;
1483 uint32_t ledctl_default;
1484 uint32_t ledctl_mode1;
1485 uint32_t ledctl_mode2;
1486 boolean_t tx_pkt_filtering;
1487 struct e1000_host_mng_dhcp_cookie mng_cookie;
1488 uint16_t phy_spd_default;
1489 uint16_t autoneg_advertised;
1490 uint16_t pci_cmd_word;
1491 uint16_t fc_high_water;
1492 uint16_t fc_low_water;
1493 uint16_t fc_pause_time;
1494 uint16_t current_ifs_val;
1495 uint16_t ifs_min_val;
1496 uint16_t ifs_max_val;
1497 uint16_t ifs_step_size;
1501 uint16_t subsystem_id;
1502 uint16_t subsystem_vendor_id;
1503 uint8_t revision_id;
1506 uint8_t forced_speed_duplex;
1507 uint8_t wait_autoneg_complete;
1508 uint8_t dma_fairness;
1509 uint8_t mac_addr[NODE_ADDRESS_SIZE];
1510 uint8_t perm_mac_addr[NODE_ADDRESS_SIZE];
1511 boolean_t disable_polarity_correction;
1512 boolean_t speed_downgraded;
1513 e1000_smart_speed smart_speed;
1514 e1000_dsp_config dsp_config_state;
1515 boolean_t get_link_status;
1516 boolean_t serdes_link_down;
1517 boolean_t tbi_compatibility_en;
1518 boolean_t tbi_compatibility_on;
1519 boolean_t laa_is_present;
1520 boolean_t phy_reset_disable;
1521 boolean_t fc_send_xon;
1522 boolean_t fc_strict_ieee;
1523 boolean_t report_tx_early;
1524 boolean_t adaptive_ifs;
1525 boolean_t ifs_params_forced;
1526 boolean_t in_ifs_mode;
1527 boolean_t mng_reg_access_disabled;
1528 boolean_t leave_av_bit_off;
1529 boolean_t kmrn_lock_loss_workaround_disabled;
1533#define E1000_EEPROM_SWDPIN0 0x0001
1534#define E1000_EEPROM_LED_LOGIC 0x0020
1535#define E1000_EEPROM_RW_REG_DATA 16
1536#define E1000_EEPROM_RW_REG_DONE 2
1537#define E1000_EEPROM_RW_REG_START 1
1538#define E1000_EEPROM_RW_ADDR_SHIFT 2
1539#define E1000_EEPROM_POLL_WRITE 1
1540#define E1000_EEPROM_POLL_READ 0
1543#define E1000_CTRL_FD 0x00000001
1544#define E1000_CTRL_BEM 0x00000002
1545#define E1000_CTRL_PRIOR 0x00000004
1546#define E1000_CTRL_GIO_MASTER_DISABLE 0x00000004
1547#define E1000_CTRL_LRST 0x00000008
1548#define E1000_CTRL_TME 0x00000010
1549#define E1000_CTRL_SLE 0x00000020
1550#define E1000_CTRL_ASDE 0x00000020
1551#define E1000_CTRL_SLU 0x00000040
1552#define E1000_CTRL_ILOS 0x00000080
1553#define E1000_CTRL_SPD_SEL 0x00000300
1554#define E1000_CTRL_SPD_10 0x00000000
1555#define E1000_CTRL_SPD_100 0x00000100
1556#define E1000_CTRL_SPD_1000 0x00000200
1557#define E1000_CTRL_BEM32 0x00000400
1558#define E1000_CTRL_FRCSPD 0x00000800
1559#define E1000_CTRL_FRCDPX 0x00001000
1560#define E1000_CTRL_D_UD_EN 0x00002000
1561#define E1000_CTRL_D_UD_POLARITY 0x00004000
1562#define E1000_CTRL_FORCE_PHY_RESET 0x00008000
1563#define E1000_CTRL_EXT_LINK_EN 0x00010000
1564#define E1000_CTRL_SWDPIN0 0x00040000
1565#define E1000_CTRL_SWDPIN1 0x00080000
1566#define E1000_CTRL_SWDPIN2 0x00100000
1567#define E1000_CTRL_SWDPIN3 0x00200000
1568#define E1000_CTRL_SWDPIO0 0x00400000
1569#define E1000_CTRL_SWDPIO1 0x00800000
1570#define E1000_CTRL_SWDPIO2 0x01000000
1571#define E1000_CTRL_SWDPIO3 0x02000000
1572#define E1000_CTRL_RST 0x04000000
1573#define E1000_CTRL_RFCE 0x08000000
1574#define E1000_CTRL_TFCE 0x10000000
1575#define E1000_CTRL_RTE 0x20000000
1576#define E1000_CTRL_VME 0x40000000
1577#define E1000_CTRL_PHY_RST 0x80000000
1578#define E1000_CTRL_SW2FW_INT 0x02000000
1581#define E1000_STATUS_FD 0x00000001
1582#define E1000_STATUS_LU 0x00000002
1583#define E1000_STATUS_FUNC_MASK 0x0000000C
1584#define E1000_STATUS_FUNC_SHIFT 2
1585#define E1000_STATUS_FUNC_0 0x00000000
1586#define E1000_STATUS_FUNC_1 0x00000004
1587#define E1000_STATUS_TXOFF 0x00000010
1588#define E1000_STATUS_TBIMODE 0x00000020
1589#define E1000_STATUS_SPEED_MASK 0x000000C0
1590#define E1000_STATUS_SPEED_10 0x00000000
1591#define E1000_STATUS_SPEED_100 0x00000040
1592#define E1000_STATUS_SPEED_1000 0x00000080
1593#define E1000_STATUS_LAN_INIT_DONE 0x00000200
1595#define E1000_STATUS_ASDV 0x00000300
1596#define E1000_STATUS_DOCK_CI 0x00000800
1597#define E1000_STATUS_GIO_MASTER_ENABLE 0x00080000
1598#define E1000_STATUS_MTXCKOK 0x00000400
1599#define E1000_STATUS_PCI66 0x00000800
1600#define E1000_STATUS_BUS64 0x00001000
1601#define E1000_STATUS_PCIX_MODE 0x00002000
1602#define E1000_STATUS_PCIX_SPEED 0x0000C000
1603#define E1000_STATUS_BMC_SKU_0 0x00100000
1604#define E1000_STATUS_BMC_SKU_1 0x00200000
1605#define E1000_STATUS_BMC_SKU_2 0x00400000
1606#define E1000_STATUS_BMC_CRYPTO 0x00800000
1607#define E1000_STATUS_BMC_LITE 0x01000000
1608#define E1000_STATUS_RGMII_ENABLE 0x02000000
1609#define E1000_STATUS_FUSE_8 0x04000000
1610#define E1000_STATUS_FUSE_9 0x08000000
1611#define E1000_STATUS_SERDES0_DIS 0x10000000
1612#define E1000_STATUS_SERDES1_DIS 0x20000000
1615#define E1000_STATUS_PCIX_SPEED_66 0x00000000
1616#define E1000_STATUS_PCIX_SPEED_100 0x00004000
1617#define E1000_STATUS_PCIX_SPEED_133 0x00008000
1620#define E1000_EECD_SK 0x00000001
1621#define E1000_EECD_CS 0x00000002
1622#define E1000_EECD_DI 0x00000004
1623#define E1000_EECD_DO 0x00000008
1624#define E1000_EECD_FWE_MASK 0x00000030
1625#define E1000_EECD_FWE_DIS 0x00000010
1626#define E1000_EECD_FWE_EN 0x00000020
1627#define E1000_EECD_FWE_SHIFT 4
1628#define E1000_EECD_REQ 0x00000040
1629#define E1000_EECD_GNT 0x00000080
1630#define E1000_EECD_PRES 0x00000100
1631#define E1000_EECD_SIZE 0x00000200
1632#define E1000_EECD_ADDR_BITS 0x00000400
1634#define E1000_EECD_TYPE 0x00002000
1635#ifndef E1000_EEPROM_GRANT_ATTEMPTS
1636#define E1000_EEPROM_GRANT_ATTEMPTS 1000
1638#define E1000_EECD_AUTO_RD 0x00000200
1639#define E1000_EECD_SIZE_EX_MASK 0x00007800
1640#define E1000_EECD_SIZE_EX_SHIFT 11
1641#define E1000_EECD_NVADDS 0x00018000
1642#define E1000_EECD_SELSHAD 0x00020000
1643#define E1000_EECD_INITSRAM 0x00040000
1644#define E1000_EECD_FLUPD 0x00080000
1645#define E1000_EECD_AUPDEN 0x00100000
1646#define E1000_EECD_SHADV 0x00200000
1647#define E1000_EECD_SEC1VAL 0x00400000
1648#define E1000_EECD_SECVAL_SHIFT 22
1649#define E1000_STM_OPCODE 0xDB00
1650#define E1000_HICR_FW_RESET 0xC0
1652#define E1000_SHADOW_RAM_WORDS 2048
1653#define E1000_ICH8_NVM_SIG_WORD 0x13
1654#define E1000_ICH8_NVM_SIG_MASK 0xC0
1657#define E1000_EERD_START 0x00000001
1658#define E1000_EERD_DONE 0x00000010
1659#define E1000_EERD_ADDR_SHIFT 8
1660#define E1000_EERD_ADDR_MASK 0x0000FF00
1661#define E1000_EERD_DATA_SHIFT 16
1662#define E1000_EERD_DATA_MASK 0xFFFF0000
1665#define EEPROM_STATUS_RDY_SPI 0x01
1666#define EEPROM_STATUS_WEN_SPI 0x02
1667#define EEPROM_STATUS_BP0_SPI 0x04
1668#define EEPROM_STATUS_BP1_SPI 0x08
1669#define EEPROM_STATUS_WPEN_SPI 0x80
1672#define E1000_CTRL_EXT_GPI0_EN 0x00000001
1673#define E1000_CTRL_EXT_GPI1_EN 0x00000002
1674#define E1000_CTRL_EXT_PHYINT_EN E1000_CTRL_EXT_GPI1_EN
1675#define E1000_CTRL_EXT_GPI2_EN 0x00000004
1676#define E1000_CTRL_EXT_GPI3_EN 0x00000008
1677#define E1000_CTRL_EXT_SDP4_DATA 0x00000010
1678#define E1000_CTRL_EXT_SDP5_DATA 0x00000020
1679#define E1000_CTRL_EXT_PHY_INT E1000_CTRL_EXT_SDP5_DATA
1680#define E1000_CTRL_EXT_SDP6_DATA 0x00000040
1681#define E1000_CTRL_EXT_SDP7_DATA 0x00000080
1682#define E1000_CTRL_EXT_SDP4_DIR 0x00000100
1683#define E1000_CTRL_EXT_SDP5_DIR 0x00000200
1684#define E1000_CTRL_EXT_SDP6_DIR 0x00000400
1685#define E1000_CTRL_EXT_SDP7_DIR 0x00000800
1686#define E1000_CTRL_EXT_ASDCHK 0x00001000
1687#define E1000_CTRL_EXT_EE_RST 0x00002000
1688#define E1000_CTRL_EXT_IPS 0x00004000
1689#define E1000_CTRL_EXT_SPD_BYPS 0x00008000
1690#define E1000_CTRL_EXT_RO_DIS 0x00020000
1691#define E1000_CTRL_EXT_LINK_MODE_MASK 0x00C00000
1692#define E1000_CTRL_EXT_LINK_MODE_GMII 0x00000000
1693#define E1000_CTRL_EXT_LINK_MODE_TBI 0x00C00000
1694#define E1000_CTRL_EXT_LINK_MODE_KMRN 0x00000000
1695#define E1000_CTRL_EXT_LINK_MODE_SERDES 0x00C00000
1696#define E1000_CTRL_EXT_WR_WMARK_MASK 0x03000000
1697#define E1000_CTRL_EXT_WR_WMARK_256 0x00000000
1698#define E1000_CTRL_EXT_WR_WMARK_320 0x01000000
1699#define E1000_CTRL_EXT_WR_WMARK_384 0x02000000
1700#define E1000_CTRL_EXT_WR_WMARK_448 0x03000000
1701#define E1000_CTRL_EXT_DRV_LOAD 0x10000000
1702#define E1000_CTRL_EXT_IAME 0x08000000
1703#define E1000_CTRL_EXT_INT_TIMER_CLR 0x20000000
1704#define E1000_CRTL_EXT_PB_PAREN 0x01000000
1705#define E1000_CTRL_EXT_DF_PAREN 0x02000000
1706#define E1000_CTRL_EXT_GHOST_PAREN 0x40000000
1709#define E1000_MDIC_DATA_MASK 0x0000FFFF
1710#define E1000_MDIC_REG_MASK 0x001F0000
1711#define E1000_MDIC_REG_SHIFT 16
1712#define E1000_MDIC_PHY_MASK 0x03E00000
1713#define E1000_MDIC_PHY_SHIFT 21
1714#define E1000_MDIC_OP_WRITE 0x04000000
1715#define E1000_MDIC_OP_READ 0x08000000
1716#define E1000_MDIC_READY 0x10000000
1717#define E1000_MDIC_INT_EN 0x20000000
1718#define E1000_MDIC_ERROR 0x40000000
1720#define E1000_KUMCTRLSTA_MASK 0x0000FFFF
1721#define E1000_KUMCTRLSTA_OFFSET 0x001F0000
1722#define E1000_KUMCTRLSTA_OFFSET_SHIFT 16
1723#define E1000_KUMCTRLSTA_REN 0x00200000
1725#define E1000_KUMCTRLSTA_OFFSET_FIFO_CTRL 0x00000000
1726#define E1000_KUMCTRLSTA_OFFSET_CTRL 0x00000001
1727#define E1000_KUMCTRLSTA_OFFSET_INB_CTRL 0x00000002
1728#define E1000_KUMCTRLSTA_OFFSET_DIAG 0x00000003
1729#define E1000_KUMCTRLSTA_OFFSET_TIMEOUTS 0x00000004
1730#define E1000_KUMCTRLSTA_OFFSET_INB_PARAM 0x00000009
1731#define E1000_KUMCTRLSTA_OFFSET_HD_CTRL 0x00000010
1732#define E1000_KUMCTRLSTA_OFFSET_M2P_SERDES 0x0000001E
1733#define E1000_KUMCTRLSTA_OFFSET_M2P_MODES 0x0000001F
1736#define E1000_KUMCTRLSTA_FIFO_CTRL_RX_BYPASS 0x00000008
1737#define E1000_KUMCTRLSTA_FIFO_CTRL_TX_BYPASS 0x00000800
1740#define E1000_KUMCTRLSTA_INB_CTRL_LINK_STATUS_TX_TIMEOUT_DEFAULT 0x00000500
1741#define E1000_KUMCTRLSTA_INB_CTRL_DIS_PADDING 0x00000010
1744#define E1000_KUMCTRLSTA_HD_CTRL_10_100_DEFAULT 0x00000004
1745#define E1000_KUMCTRLSTA_HD_CTRL_1000_DEFAULT 0x00000000
1747#define E1000_KUMCTRLSTA_OFFSET_K0S_CTRL 0x0000001E
1749#define E1000_KUMCTRLSTA_DIAG_FELPBK 0x2000
1750#define E1000_KUMCTRLSTA_DIAG_NELPBK 0x1000
1752#define E1000_KUMCTRLSTA_K0S_100_EN 0x2000
1753#define E1000_KUMCTRLSTA_K0S_GBE_EN 0x1000
1754#define E1000_KUMCTRLSTA_K0S_ENTRY_LATENCY_MASK 0x0003
1756#define E1000_KABGTXD_BGSQLBIAS 0x00050000
1758#define E1000_PHY_CTRL_SPD_EN 0x00000001
1759#define E1000_PHY_CTRL_D0A_LPLU 0x00000002
1760#define E1000_PHY_CTRL_NOND0A_LPLU 0x00000004
1761#define E1000_PHY_CTRL_NOND0A_GBE_DISABLE 0x00000008
1762#define E1000_PHY_CTRL_GBE_DISABLE 0x00000040
1763#define E1000_PHY_CTRL_B2B_EN 0x00000080
1766#define E1000_LEDCTL_LED0_MODE_MASK 0x0000000F
1767#define E1000_LEDCTL_LED0_MODE_SHIFT 0
1768#define E1000_LEDCTL_LED0_BLINK_RATE 0x0000020
1769#define E1000_LEDCTL_LED0_IVRT 0x00000040
1770#define E1000_LEDCTL_LED0_BLINK 0x00000080
1771#define E1000_LEDCTL_LED1_MODE_MASK 0x00000F00
1772#define E1000_LEDCTL_LED1_MODE_SHIFT 8
1773#define E1000_LEDCTL_LED1_BLINK_RATE 0x0002000
1774#define E1000_LEDCTL_LED1_IVRT 0x00004000
1775#define E1000_LEDCTL_LED1_BLINK 0x00008000
1776#define E1000_LEDCTL_LED2_MODE_MASK 0x000F0000
1777#define E1000_LEDCTL_LED2_MODE_SHIFT 16
1778#define E1000_LEDCTL_LED2_BLINK_RATE 0x00200000
1779#define E1000_LEDCTL_LED2_IVRT 0x00400000
1780#define E1000_LEDCTL_LED2_BLINK 0x00800000
1781#define E1000_LEDCTL_LED3_MODE_MASK 0x0F000000
1782#define E1000_LEDCTL_LED3_MODE_SHIFT 24
1783#define E1000_LEDCTL_LED3_BLINK_RATE 0x20000000
1784#define E1000_LEDCTL_LED3_IVRT 0x40000000
1785#define E1000_LEDCTL_LED3_BLINK 0x80000000
1787#define E1000_LEDCTL_MODE_LINK_10_1000 0x0
1788#define E1000_LEDCTL_MODE_LINK_100_1000 0x1
1789#define E1000_LEDCTL_MODE_LINK_UP 0x2
1790#define E1000_LEDCTL_MODE_ACTIVITY 0x3
1791#define E1000_LEDCTL_MODE_LINK_ACTIVITY 0x4
1792#define E1000_LEDCTL_MODE_LINK_10 0x5
1793#define E1000_LEDCTL_MODE_LINK_100 0x6
1794#define E1000_LEDCTL_MODE_LINK_1000 0x7
1795#define E1000_LEDCTL_MODE_PCIX_MODE 0x8
1796#define E1000_LEDCTL_MODE_FULL_DUPLEX 0x9
1797#define E1000_LEDCTL_MODE_COLLISION 0xA
1798#define E1000_LEDCTL_MODE_BUS_SPEED 0xB
1799#define E1000_LEDCTL_MODE_BUS_SIZE 0xC
1800#define E1000_LEDCTL_MODE_PAUSED 0xD
1801#define E1000_LEDCTL_MODE_LED_ON 0xE
1802#define E1000_LEDCTL_MODE_LED_OFF 0xF
1805#define E1000_RAH_AV 0x80000000
1808#define E1000_ICR_TXDW 0x00000001
1809#define E1000_ICR_TXQE 0x00000002
1810#define E1000_ICR_LSC 0x00000004
1811#define E1000_ICR_RXSEQ 0x00000008
1812#define E1000_ICR_RXDMT0 0x00000010
1813#define E1000_ICR_RXO 0x00000040
1814#define E1000_ICR_RXT0 0x00000080
1815#define E1000_ICR_MDAC 0x00000200
1816#define E1000_ICR_RXCFG 0x00000400
1817#define E1000_ICR_GPI_EN0 0x00000800
1818#define E1000_ICR_GPI_EN1 0x00001000
1819#define E1000_ICR_GPI_EN2 0x00002000
1820#define E1000_ICR_GPI_EN3 0x00004000
1821#define E1000_ICR_TXD_LOW 0x00008000
1822#define E1000_ICR_SRPD 0x00010000
1823#define E1000_ICR_ACK 0x00020000
1824#define E1000_ICR_MNG 0x00040000
1825#define E1000_ICR_DOCK 0x00080000
1826#define E1000_ICR_INT_ASSERTED 0x80000000
1827#define E1000_ICR_RXD_FIFO_PAR0 0x00100000
1828#define E1000_ICR_TXD_FIFO_PAR0 0x00200000
1829#define E1000_ICR_HOST_ARB_PAR 0x00400000
1830#define E1000_ICR_PB_PAR 0x00800000
1831#define E1000_ICR_RXD_FIFO_PAR1 0x01000000
1832#define E1000_ICR_TXD_FIFO_PAR1 0x02000000
1833#define E1000_ICR_ALL_PARITY 0x03F00000
1834#define E1000_ICR_DSW 0x00000020
1835#define E1000_ICR_PHYINT 0x00001000
1836#define E1000_ICR_EPRST 0x00100000
1839#define E1000_ICS_TXDW E1000_ICR_TXDW
1840#define E1000_ICS_TXQE E1000_ICR_TXQE
1841#define E1000_ICS_LSC E1000_ICR_LSC
1842#define E1000_ICS_RXSEQ E1000_ICR_RXSEQ
1843#define E1000_ICS_RXDMT0 E1000_ICR_RXDMT0
1844#define E1000_ICS_RXO E1000_ICR_RXO
1845#define E1000_ICS_RXT0 E1000_ICR_RXT0
1846#define E1000_ICS_MDAC E1000_ICR_MDAC
1847#define E1000_ICS_RXCFG E1000_ICR_RXCFG
1848#define E1000_ICS_GPI_EN0 E1000_ICR_GPI_EN0
1849#define E1000_ICS_GPI_EN1 E1000_ICR_GPI_EN1
1850#define E1000_ICS_GPI_EN2 E1000_ICR_GPI_EN2
1851#define E1000_ICS_GPI_EN3 E1000_ICR_GPI_EN3
1852#define E1000_ICS_TXD_LOW E1000_ICR_TXD_LOW
1853#define E1000_ICS_SRPD E1000_ICR_SRPD
1854#define E1000_ICS_ACK E1000_ICR_ACK
1855#define E1000_ICS_MNG E1000_ICR_MNG
1856#define E1000_ICS_DOCK E1000_ICR_DOCK
1857#define E1000_ICS_RXD_FIFO_PAR0 E1000_ICR_RXD_FIFO_PAR0
1858#define E1000_ICS_TXD_FIFO_PAR0 E1000_ICR_TXD_FIFO_PAR0
1859#define E1000_ICS_HOST_ARB_PAR E1000_ICR_HOST_ARB_PAR
1860#define E1000_ICS_PB_PAR E1000_ICR_PB_PAR
1861#define E1000_ICS_RXD_FIFO_PAR1 E1000_ICR_RXD_FIFO_PAR1
1862#define E1000_ICS_TXD_FIFO_PAR1 E1000_ICR_TXD_FIFO_PAR1
1863#define E1000_ICS_DSW E1000_ICR_DSW
1864#define E1000_ICS_PHYINT E1000_ICR_PHYINT
1865#define E1000_ICS_EPRST E1000_ICR_EPRST
1868#define E1000_IMS_TXDW E1000_ICR_TXDW
1869#define E1000_IMS_TXQE E1000_ICR_TXQE
1870#define E1000_IMS_LSC E1000_ICR_LSC
1871#define E1000_IMS_RXSEQ E1000_ICR_RXSEQ
1872#define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0
1873#define E1000_IMS_RXO E1000_ICR_RXO
1874#define E1000_IMS_RXT0 E1000_ICR_RXT0
1875#define E1000_IMS_MDAC E1000_ICR_MDAC
1876#define E1000_IMS_RXCFG E1000_ICR_RXCFG
1877#define E1000_IMS_GPI_EN0 E1000_ICR_GPI_EN0
1878#define E1000_IMS_GPI_EN1 E1000_ICR_GPI_EN1
1879#define E1000_IMS_GPI_EN2 E1000_ICR_GPI_EN2
1880#define E1000_IMS_GPI_EN3 E1000_ICR_GPI_EN3
1881#define E1000_IMS_TXD_LOW E1000_ICR_TXD_LOW
1882#define E1000_IMS_SRPD E1000_ICR_SRPD
1883#define E1000_IMS_ACK E1000_ICR_ACK
1884#define E1000_IMS_MNG E1000_ICR_MNG
1885#define E1000_IMS_DOCK E1000_ICR_DOCK
1886#define E1000_IMS_RXD_FIFO_PAR0 E1000_ICR_RXD_FIFO_PAR0
1887#define E1000_IMS_TXD_FIFO_PAR0 E1000_ICR_TXD_FIFO_PAR0
1888#define E1000_IMS_HOST_ARB_PAR E1000_ICR_HOST_ARB_PAR
1889#define E1000_IMS_PB_PAR E1000_ICR_PB_PAR
1890#define E1000_IMS_RXD_FIFO_PAR1 E1000_ICR_RXD_FIFO_PAR1
1891#define E1000_IMS_TXD_FIFO_PAR1 E1000_ICR_TXD_FIFO_PAR1
1892#define E1000_IMS_DSW E1000_ICR_DSW
1893#define E1000_IMS_PHYINT E1000_ICR_PHYINT
1894#define E1000_IMS_EPRST E1000_ICR_EPRST
1897#define E1000_IMC_TXDW E1000_ICR_TXDW
1898#define E1000_IMC_TXQE E1000_ICR_TXQE
1899#define E1000_IMC_LSC E1000_ICR_LSC
1900#define E1000_IMC_RXSEQ E1000_ICR_RXSEQ
1901#define E1000_IMC_RXDMT0 E1000_ICR_RXDMT0
1902#define E1000_IMC_RXO E1000_ICR_RXO
1903#define E1000_IMC_RXT0 E1000_ICR_RXT0
1904#define E1000_IMC_MDAC E1000_ICR_MDAC
1905#define E1000_IMC_RXCFG E1000_ICR_RXCFG
1906#define E1000_IMC_GPI_EN0 E1000_ICR_GPI_EN0
1907#define E1000_IMC_GPI_EN1 E1000_ICR_GPI_EN1
1908#define E1000_IMC_GPI_EN2 E1000_ICR_GPI_EN2
1909#define E1000_IMC_GPI_EN3 E1000_ICR_GPI_EN3
1910#define E1000_IMC_TXD_LOW E1000_ICR_TXD_LOW
1911#define E1000_IMC_SRPD E1000_ICR_SRPD
1912#define E1000_IMC_ACK E1000_ICR_ACK
1913#define E1000_IMC_MNG E1000_ICR_MNG
1914#define E1000_IMC_DOCK E1000_ICR_DOCK
1915#define E1000_IMC_RXD_FIFO_PAR0 E1000_ICR_RXD_FIFO_PAR0
1916#define E1000_IMC_TXD_FIFO_PAR0 E1000_ICR_TXD_FIFO_PAR0
1917#define E1000_IMC_HOST_ARB_PAR E1000_ICR_HOST_ARB_PAR
1918#define E1000_IMC_PB_PAR E1000_ICR_PB_PAR
1919#define E1000_IMC_RXD_FIFO_PAR1 E1000_ICR_RXD_FIFO_PAR1
1920#define E1000_IMC_TXD_FIFO_PAR1 E1000_ICR_TXD_FIFO_PAR1
1921#define E1000_IMC_DSW E1000_ICR_DSW
1922#define E1000_IMC_PHYINT E1000_ICR_PHYINT
1923#define E1000_IMC_EPRST E1000_ICR_EPRST
1926#define E1000_RCTL_RST 0x00000001
1927#define E1000_RCTL_EN 0x00000002
1928#define E1000_RCTL_SBP 0x00000004
1929#define E1000_RCTL_UPE 0x00000008
1930#define E1000_RCTL_MPE 0x00000010
1931#define E1000_RCTL_LPE 0x00000020
1932#define E1000_RCTL_LBM_NO 0x00000000
1933#define E1000_RCTL_LBM_MAC 0x00000040
1934#define E1000_RCTL_LBM_SLP 0x00000080
1935#define E1000_RCTL_LBM_TCVR 0x000000C0
1936#define E1000_RCTL_DTYP_MASK 0x00000C00
1937#define E1000_RCTL_DTYP_PS 0x00000400
1938#define E1000_RCTL_RDMTS_HALF 0x00000000
1939#define E1000_RCTL_RDMTS_QUAT 0x00000100
1940#define E1000_RCTL_RDMTS_EIGTH 0x00000200
1941#define E1000_RCTL_MO_SHIFT 12
1942#define E1000_RCTL_MO_0 0x00000000
1943#define E1000_RCTL_MO_1 0x00001000
1944#define E1000_RCTL_MO_2 0x00002000
1945#define E1000_RCTL_MO_3 0x00003000
1946#define E1000_RCTL_MDR 0x00004000
1947#define E1000_RCTL_BAM 0x00008000
1949#define E1000_RCTL_SZ_2048 0x00000000
1950#define E1000_RCTL_SZ_1024 0x00010000
1951#define E1000_RCTL_SZ_512 0x00020000
1952#define E1000_RCTL_SZ_256 0x00030000
1954#define E1000_RCTL_SZ_16384 0x00010000
1955#define E1000_RCTL_SZ_8192 0x00020000
1956#define E1000_RCTL_SZ_4096 0x00030000
1957#define E1000_RCTL_VFE 0x00040000
1958#define E1000_RCTL_CFIEN 0x00080000
1959#define E1000_RCTL_CFI 0x00100000
1960#define E1000_RCTL_DPF 0x00400000
1961#define E1000_RCTL_PMCF 0x00800000
1962#define E1000_RCTL_BSEX 0x02000000
1963#define E1000_RCTL_SECRC 0x04000000
1964#define E1000_RCTL_FLXBUF_MASK 0x78000000
1965#define E1000_RCTL_FLXBUF_SHIFT 27
1983#define E1000_PSRCTL_BSIZE0_MASK 0x0000007F
1984#define E1000_PSRCTL_BSIZE1_MASK 0x00003F00
1985#define E1000_PSRCTL_BSIZE2_MASK 0x003F0000
1986#define E1000_PSRCTL_BSIZE3_MASK 0x3F000000
1988#define E1000_PSRCTL_BSIZE0_SHIFT 7
1989#define E1000_PSRCTL_BSIZE1_SHIFT 2
1990#define E1000_PSRCTL_BSIZE2_SHIFT 6
1991#define E1000_PSRCTL_BSIZE3_SHIFT 14
1994#define E1000_SWFW_EEP_SM 0x0001
1995#define E1000_SWFW_PHY0_SM 0x0002
1996#define E1000_SWFW_PHY1_SM 0x0004
1997#define E1000_SWFW_MAC_CSR_SM 0x0008
2000#define E1000_RDT_DELAY 0x0000ffff
2001#define E1000_RDT_FPDB 0x80000000
2002#define E1000_RDLEN_LEN 0x0007ff80
2003#define E1000_RDH_RDH 0x0000ffff
2004#define E1000_RDT_RDT 0x0000ffff
2007#define E1000_FCRTH_RTH 0x0000FFF8
2008#define E1000_FCRTH_XFCE 0x80000000
2009#define E1000_FCRTL_RTL 0x0000FFF8
2010#define E1000_FCRTL_XONE 0x80000000
2013#define E1000_RFCTL_ISCSI_DIS 0x00000001
2014#define E1000_RFCTL_ISCSI_DWC_MASK 0x0000003E
2015#define E1000_RFCTL_ISCSI_DWC_SHIFT 1
2016#define E1000_RFCTL_NFSW_DIS 0x00000040
2017#define E1000_RFCTL_NFSR_DIS 0x00000080
2018#define E1000_RFCTL_NFS_VER_MASK 0x00000300
2019#define E1000_RFCTL_NFS_VER_SHIFT 8
2020#define E1000_RFCTL_IPV6_DIS 0x00000400
2021#define E1000_RFCTL_IPV6_XSUM_DIS 0x00000800
2022#define E1000_RFCTL_ACK_DIS 0x00001000
2023#define E1000_RFCTL_ACKD_DIS 0x00002000
2024#define E1000_RFCTL_IPFRSP_DIS 0x00004000
2025#define E1000_RFCTL_EXTEN 0x00008000
2026#define E1000_RFCTL_IPV6_EX_DIS 0x00010000
2027#define E1000_RFCTL_NEW_IPV6_EXT_DIS 0x00020000
2030#define E1000_RXDCTL_PTHRESH 0x0000003F
2031#define E1000_RXDCTL_HTHRESH 0x00003F00
2032#define E1000_RXDCTL_WTHRESH 0x003F0000
2033#define E1000_RXDCTL_GRAN 0x01000000
2036#define E1000_TXDCTL_PTHRESH 0x000000FF
2037#define E1000_TXDCTL_HTHRESH 0x0000FF00
2038#define E1000_TXDCTL_WTHRESH 0x00FF0000
2039#define E1000_TXDCTL_GRAN 0x01000000
2040#define E1000_TXDCTL_LWTHRESH 0xFE000000
2041#define E1000_TXDCTL_FULL_TX_DESC_WB 0x01010000
2042#define E1000_TXDCTL_COUNT_DESC 0x00400000
2045#define E1000_TXCW_FD 0x00000020
2046#define E1000_TXCW_HD 0x00000040
2047#define E1000_TXCW_PAUSE 0x00000080
2048#define E1000_TXCW_ASM_DIR 0x00000100
2049#define E1000_TXCW_PAUSE_MASK 0x00000180
2050#define E1000_TXCW_RF 0x00003000
2051#define E1000_TXCW_NP 0x00008000
2052#define E1000_TXCW_CW 0x0000ffff
2053#define E1000_TXCW_TXC 0x40000000
2054#define E1000_TXCW_ANE 0x80000000
2057#define E1000_RXCW_CW 0x0000ffff
2058#define E1000_RXCW_NC 0x04000000
2059#define E1000_RXCW_IV 0x08000000
2060#define E1000_RXCW_CC 0x10000000
2061#define E1000_RXCW_C 0x20000000
2062#define E1000_RXCW_SYNCH 0x40000000
2063#define E1000_RXCW_ANC 0x80000000
2066#define E1000_TCTL_RST 0x00000001
2067#define E1000_TCTL_EN 0x00000002
2068#define E1000_TCTL_BCE 0x00000004
2069#define E1000_TCTL_PSP 0x00000008
2070#define E1000_TCTL_CT 0x00000ff0
2071#define E1000_TCTL_COLD 0x003ff000
2072#define E1000_TCTL_SWXOFF 0x00400000
2073#define E1000_TCTL_PBE 0x00800000
2074#define E1000_TCTL_RTLC 0x01000000
2075#define E1000_TCTL_NRTU 0x02000000
2076#define E1000_TCTL_MULR 0x10000000
2078#define E1000_TCTL_EXT_BST_MASK 0x000003FF
2079#define E1000_TCTL_EXT_GCEX_MASK 0x000FFC00
2081#define DEFAULT_80003ES2LAN_TCTL_EXT_GCEX 0x00010000
2084#define E1000_RXCSUM_PCSS_MASK 0x000000FF
2085#define E1000_RXCSUM_IPOFL 0x00000100
2086#define E1000_RXCSUM_TUOFL 0x00000200
2087#define E1000_RXCSUM_IPV6OFL 0x00000400
2088#define E1000_RXCSUM_IPPCSE 0x00001000
2089#define E1000_RXCSUM_PCSD 0x00002000
2092#define E1000_MRQC_ENABLE_MASK 0x00000003
2093#define E1000_MRQC_ENABLE_RSS_2Q 0x00000001
2094#define E1000_MRQC_ENABLE_RSS_INT 0x00000004
2095#define E1000_MRQC_RSS_FIELD_MASK 0xFFFF0000
2096#define E1000_MRQC_RSS_FIELD_IPV4_TCP 0x00010000
2097#define E1000_MRQC_RSS_FIELD_IPV4 0x00020000
2098#define E1000_MRQC_RSS_FIELD_IPV6_TCP_EX 0x00040000
2099#define E1000_MRQC_RSS_FIELD_IPV6_EX 0x00080000
2100#define E1000_MRQC_RSS_FIELD_IPV6 0x00100000
2101#define E1000_MRQC_RSS_FIELD_IPV6_TCP 0x00200000
2105#define E1000_WUC_APME 0x00000001
2106#define E1000_WUC_PME_EN 0x00000002
2107#define E1000_WUC_PME_STATUS 0x00000004
2108#define E1000_WUC_APMPME 0x00000008
2109#define E1000_WUC_SPM 0x80000000
2112#define E1000_WUFC_LNKC 0x00000001
2113#define E1000_WUFC_MAG 0x00000002
2114#define E1000_WUFC_EX 0x00000004
2115#define E1000_WUFC_MC 0x00000008
2116#define E1000_WUFC_BC 0x00000010
2117#define E1000_WUFC_ARP 0x00000020
2118#define E1000_WUFC_IPV4 0x00000040
2119#define E1000_WUFC_IPV6 0x00000080
2120#define E1000_WUFC_IGNORE_TCO 0x00008000
2121#define E1000_WUFC_FLX0 0x00010000
2122#define E1000_WUFC_FLX1 0x00020000
2123#define E1000_WUFC_FLX2 0x00040000
2124#define E1000_WUFC_FLX3 0x00080000
2125#define E1000_WUFC_ALL_FILTERS 0x000F00FF
2126#define E1000_WUFC_FLX_OFFSET 16
2127#define E1000_WUFC_FLX_FILTERS 0x000F0000
2130#define E1000_WUS_LNKC 0x00000001
2131#define E1000_WUS_MAG 0x00000002
2132#define E1000_WUS_EX 0x00000004
2133#define E1000_WUS_MC 0x00000008
2134#define E1000_WUS_BC 0x00000010
2135#define E1000_WUS_ARP 0x00000020
2136#define E1000_WUS_IPV4 0x00000040
2137#define E1000_WUS_IPV6 0x00000080
2138#define E1000_WUS_FLX0 0x00010000
2139#define E1000_WUS_FLX1 0x00020000
2140#define E1000_WUS_FLX2 0x00040000
2141#define E1000_WUS_FLX3 0x00080000
2142#define E1000_WUS_FLX_FILTERS 0x000F0000
2145#define E1000_MANC_SMBUS_EN 0x00000001
2146#define E1000_MANC_ASF_EN 0x00000002
2147#define E1000_MANC_R_ON_FORCE 0x00000004
2148#define E1000_MANC_RMCP_EN 0x00000100
2149#define E1000_MANC_0298_EN 0x00000200
2150#define E1000_MANC_IPV4_EN 0x00000400
2151#define E1000_MANC_IPV6_EN 0x00000800
2152#define E1000_MANC_SNAP_EN 0x00001000
2153#define E1000_MANC_ARP_EN 0x00002000
2154#define E1000_MANC_NEIGHBOR_EN 0x00004000
2156#define E1000_MANC_ARP_RES_EN 0x00008000
2157#define E1000_MANC_TCO_RESET 0x00010000
2158#define E1000_MANC_RCV_TCO_EN 0x00020000
2159#define E1000_MANC_REPORT_STATUS 0x00040000
2160#define E1000_MANC_RCV_ALL 0x00080000
2161#define E1000_MANC_BLK_PHY_RST_ON_IDE 0x00040000
2162#define E1000_MANC_EN_MAC_ADDR_FILTER 0x00100000
2164#define E1000_MANC_EN_MNG2HOST 0x00200000
2166#define E1000_MANC_EN_IP_ADDR_FILTER 0x00400000
2168#define E1000_MANC_EN_XSUM_FILTER 0x00800000
2169#define E1000_MANC_BR_EN 0x01000000
2170#define E1000_MANC_SMB_REQ 0x01000000
2171#define E1000_MANC_SMB_GNT 0x02000000
2172#define E1000_MANC_SMB_CLK_IN 0x04000000
2173#define E1000_MANC_SMB_DATA_IN 0x08000000
2174#define E1000_MANC_SMB_DATA_OUT 0x10000000
2175#define E1000_MANC_SMB_CLK_OUT 0x20000000
2177#define E1000_MANC_SMB_DATA_OUT_SHIFT 28
2178#define E1000_MANC_SMB_CLK_OUT_SHIFT 29
2181#define E1000_SWSM_SMBI 0x00000001
2182#define E1000_SWSM_SWESMBI 0x00000002
2183#define E1000_SWSM_WMNG 0x00000004
2184#define E1000_SWSM_DRV_LOAD 0x00000008
2187#define E1000_FWSM_MODE_MASK 0x0000000E
2188#define E1000_FWSM_MODE_SHIFT 1
2189#define E1000_FWSM_FW_VALID 0x00008000
2191#define E1000_FWSM_RSPCIPHY 0x00000040
2192#define E1000_FWSM_DISSW 0x10000000
2193#define E1000_FWSM_SKUSEL_MASK 0x60000000
2194#define E1000_FWSM_SKUEL_SHIFT 29
2195#define E1000_FWSM_SKUSEL_EMB 0x0
2196#define E1000_FWSM_SKUSEL_CONS 0x1
2197#define E1000_FWSM_SKUSEL_PERF_100 0x2
2198#define E1000_FWSM_SKUSEL_PERF_GBE 0x3
2201#define E1000_FFLT_DBG_INVC 0x00100000
2204 e1000_mng_mode_none = 0,
2207 e1000_mng_mode_ipmi,
2208 e1000_mng_mode_host_interface_only
2212#define E1000_HICR_EN 0x00000001
2213#define E1000_HICR_C 0x00000002
2215#define E1000_HICR_SV 0x00000004
2216#define E1000_HICR_FWR 0x00000080
2219#define E1000_HI_MAX_DATA_LENGTH 252
2220#define E1000_HI_MAX_BLOCK_BYTE_LENGTH 1792
2221#define E1000_HI_MAX_BLOCK_DWORD_LENGTH 448
2222#define E1000_HI_COMMAND_TIMEOUT 500
2224struct e1000_host_command_header {
2226 uint8_t command_length;
2227 uint8_t command_options;
2230struct e1000_host_command_info {
2231 struct e1000_host_command_header command_header;
2232 uint8_t command_data[E1000_HI_MAX_DATA_LENGTH];
2236#define E1000_HSMC0R_CLKIN 0x00000001
2237#define E1000_HSMC0R_DATAIN 0x00000002
2238#define E1000_HSMC0R_DATAOUT 0x00000004
2239#define E1000_HSMC0R_CLKOUT 0x00000008
2242#define E1000_HSMC1R_CLKIN E1000_HSMC0R_CLKIN
2243#define E1000_HSMC1R_DATAIN E1000_HSMC0R_DATAIN
2244#define E1000_HSMC1R_DATAOUT E1000_HSMC0R_DATAOUT
2245#define E1000_HSMC1R_CLKOUT E1000_HSMC0R_CLKOUT
2248#define E1000_FWSTS_FWS_MASK 0x000000FF
2251#define E1000_WUPL_LENGTH_MASK 0x0FFF
2253#define E1000_MDALIGN 4096
2258#define E1000_GCR_RXD_NO_SNOOP 0x00000001
2259#define E1000_GCR_RXDSCW_NO_SNOOP 0x00000002
2260#define E1000_GCR_RXDSCR_NO_SNOOP 0x00000004
2261#define E1000_GCR_TXD_NO_SNOOP 0x00000008
2262#define E1000_GCR_TXDSCW_NO_SNOOP 0x00000010
2263#define E1000_GCR_TXDSCR_NO_SNOOP 0x00000020
2265#define PCI_EX_NO_SNOOP_ALL (E1000_GCR_RXD_NO_SNOOP | \
2266 E1000_GCR_RXDSCW_NO_SNOOP | \
2267 E1000_GCR_RXDSCR_NO_SNOOP | \
2268 E1000_GCR_TXD_NO_SNOOP | \
2269 E1000_GCR_TXDSCW_NO_SNOOP | \
2270 E1000_GCR_TXDSCR_NO_SNOOP)
2272#define PCI_EX_82566_SNOOP_ALL PCI_EX_NO_SNOOP_ALL
2274#define E1000_GCR_L1_ACT_WITHOUT_L0S_RX 0x08000000
2276#define E1000_FACTPS_FUNC0_POWER_STATE_MASK 0x00000003
2277#define E1000_FACTPS_LAN0_VALID 0x00000004
2278#define E1000_FACTPS_FUNC0_AUX_EN 0x00000008
2279#define E1000_FACTPS_FUNC1_POWER_STATE_MASK 0x000000C0
2280#define E1000_FACTPS_FUNC1_POWER_STATE_SHIFT 6
2281#define E1000_FACTPS_LAN1_VALID 0x00000100
2282#define E1000_FACTPS_FUNC1_AUX_EN 0x00000200
2283#define E1000_FACTPS_FUNC2_POWER_STATE_MASK 0x00003000
2284#define E1000_FACTPS_FUNC2_POWER_STATE_SHIFT 12
2285#define E1000_FACTPS_IDE_ENABLE 0x00004000
2286#define E1000_FACTPS_FUNC2_AUX_EN 0x00008000
2287#define E1000_FACTPS_FUNC3_POWER_STATE_MASK 0x000C0000
2288#define E1000_FACTPS_FUNC3_POWER_STATE_SHIFT 18
2289#define E1000_FACTPS_SP_ENABLE 0x00100000
2290#define E1000_FACTPS_FUNC3_AUX_EN 0x00200000
2291#define E1000_FACTPS_FUNC4_POWER_STATE_MASK 0x03000000
2292#define E1000_FACTPS_FUNC4_POWER_STATE_SHIFT 24
2293#define E1000_FACTPS_IPMI_ENABLE 0x04000000
2294#define E1000_FACTPS_FUNC4_AUX_EN 0x08000000
2295#define E1000_FACTPS_MNGCG 0x20000000
2296#define E1000_FACTPS_LAN_FUNC_SEL 0x40000000
2297#define E1000_FACTPS_PM_STATE_CHANGED 0x80000000
2300#define EEPROM_READ_OPCODE_MICROWIRE 0x6
2301#define EEPROM_WRITE_OPCODE_MICROWIRE 0x5
2302#define EEPROM_ERASE_OPCODE_MICROWIRE 0x7
2303#define EEPROM_EWEN_OPCODE_MICROWIRE 0x13
2304#define EEPROM_EWDS_OPCODE_MICROWIRE 0x10
2307#define EEPROM_MAX_RETRY_SPI 5000
2308#define EEPROM_READ_OPCODE_SPI 0x03
2309#define EEPROM_WRITE_OPCODE_SPI 0x02
2310#define EEPROM_A8_OPCODE_SPI 0x08
2311#define EEPROM_WREN_OPCODE_SPI 0x06
2312#define EEPROM_WRDI_OPCODE_SPI 0x04
2313#define EEPROM_RDSR_OPCODE_SPI 0x05
2314#define EEPROM_WRSR_OPCODE_SPI 0x01
2315#define EEPROM_ERASE4K_OPCODE_SPI 0x20
2316#define EEPROM_ERASE64K_OPCODE_SPI 0xD8
2317#define EEPROM_ERASE256_OPCODE_SPI 0xDB
2320#define EEPROM_WORD_SIZE_SHIFT 6
2321#define EEPROM_SIZE_SHIFT 10
2322#define EEPROM_SIZE_MASK 0x1C00
2325#define EEPROM_COMPAT 0x0003
2326#define EEPROM_ID_LED_SETTINGS 0x0004
2327#define EEPROM_VERSION 0x0005
2328#define EEPROM_SERDES_AMPLITUDE 0x0006
2329#define EEPROM_PHY_CLASS_WORD 0x0007
2330#define EEPROM_INIT_CONTROL1_REG 0x000A
2331#define EEPROM_INIT_CONTROL2_REG 0x000F
2332#define EEPROM_SWDEF_PINS_CTRL_PORT_1 0x0010
2333#define EEPROM_INIT_CONTROL3_PORT_B 0x0014
2334#define EEPROM_INIT_3GIO_3 0x001A
2335#define EEPROM_SWDEF_PINS_CTRL_PORT_0 0x0020
2336#define EEPROM_INIT_CONTROL3_PORT_A 0x0024
2337#define EEPROM_CFG 0x0012
2338#define EEPROM_FLASH_VERSION 0x0032
2339#define EEPROM_CHECKSUM_REG 0x003F
2341#define E1000_EEPROM_CFG_DONE 0x00040000
2342#define E1000_EEPROM_CFG_DONE_PORT_1 0x00080000
2345#define ID_LED_RESERVED_0000 0x0000
2346#define ID_LED_RESERVED_FFFF 0xFFFF
2347#define ID_LED_RESERVED_82573 0xF746
2348#define ID_LED_DEFAULT_82573 0x1811
2349#define ID_LED_DEFAULT ((ID_LED_OFF1_ON2 << 12) | \
2350 (ID_LED_OFF1_OFF2 << 8) | \
2351 (ID_LED_DEF1_DEF2 << 4) | \
2353#define ID_LED_DEFAULT_ICH8LAN ((ID_LED_DEF1_DEF2 << 12) | \
2354 (ID_LED_DEF1_OFF2 << 8) | \
2355 (ID_LED_DEF1_ON2 << 4) | \
2357#define ID_LED_DEF1_DEF2 0x1
2358#define ID_LED_DEF1_ON2 0x2
2359#define ID_LED_DEF1_OFF2 0x3
2360#define ID_LED_ON1_DEF2 0x4
2361#define ID_LED_ON1_ON2 0x5
2362#define ID_LED_ON1_OFF2 0x6
2363#define ID_LED_OFF1_DEF2 0x7
2364#define ID_LED_OFF1_ON2 0x8
2365#define ID_LED_OFF1_OFF2 0x9
2367#define IGP_ACTIVITY_LED_MASK 0xFFFFF0FF
2368#define IGP_ACTIVITY_LED_ENABLE 0x0300
2369#define IGP_LED3_MODE 0x07000000
2373#define EEPROM_SERDES_AMPLITUDE_MASK 0x000F
2376#define EEPROM_PHY_CLASS_A 0x8000
2379#define EEPROM_WORD0A_ILOS 0x0010
2380#define EEPROM_WORD0A_SWDPIO 0x01E0
2381#define EEPROM_WORD0A_LRST 0x0200
2382#define EEPROM_WORD0A_FD 0x0400
2383#define EEPROM_WORD0A_66MHZ 0x0800
2386#define EEPROM_WORD0F_PAUSE_MASK 0x3000
2387#define EEPROM_WORD0F_PAUSE 0x1000
2388#define EEPROM_WORD0F_ASM_DIR 0x2000
2389#define EEPROM_WORD0F_ANE 0x0800
2390#define EEPROM_WORD0F_SWPDIO_EXT 0x00F0
2391#define EEPROM_WORD0F_LPLU 0x0001
2394#define EEPROM_WORD1020_GIGA_DISABLE 0x0010
2395#define EEPROM_WORD1020_GIGA_DISABLE_NON_D0A 0x0008
2398#define EEPROM_WORD1A_ASPM_MASK 0x000C
2401#define EEPROM_SUM 0xBABA
2404#define EEPROM_NODE_ADDRESS_BYTE_0 0
2405#define EEPROM_PBA_BYTE_1 8
2407#define EEPROM_RESERVED_WORD 0xFFFF
2413#define E1000_COLLISION_THRESHOLD 15
2414#define E1000_CT_SHIFT 4
2417#define E1000_COLLISION_DISTANCE 63
2418#define E1000_COLLISION_DISTANCE_82542 64
2419#define E1000_FDX_COLLISION_DISTANCE E1000_COLLISION_DISTANCE
2420#define E1000_HDX_COLLISION_DISTANCE E1000_COLLISION_DISTANCE
2421#define E1000_COLD_SHIFT 12
2424#define REQ_TX_DESCRIPTOR_MULTIPLE 8
2425#define REQ_RX_DESCRIPTOR_MULTIPLE 8
2428#define DEFAULT_82542_TIPG_IPGT 10
2429#define DEFAULT_82543_TIPG_IPGT_FIBER 9
2430#define DEFAULT_82543_TIPG_IPGT_COPPER 8
2432#define E1000_TIPG_IPGT_MASK 0x000003FF
2433#define E1000_TIPG_IPGR1_MASK 0x000FFC00
2434#define E1000_TIPG_IPGR2_MASK 0x3FF00000
2436#define DEFAULT_82542_TIPG_IPGR1 2
2437#define DEFAULT_82543_TIPG_IPGR1 8
2438#define E1000_TIPG_IPGR1_SHIFT 10
2440#define DEFAULT_82542_TIPG_IPGR2 10
2441#define DEFAULT_82543_TIPG_IPGR2 6
2442#define DEFAULT_80003ES2LAN_TIPG_IPGR2 7
2443#define E1000_TIPG_IPGR2_SHIFT 20
2445#define DEFAULT_80003ES2LAN_TIPG_IPGT_10_100 0x00000009
2446#define DEFAULT_80003ES2LAN_TIPG_IPGT_1000 0x00000008
2447#define E1000_TXDMAC_DPP 0x00000001
2450#define TX_THRESHOLD_START 8
2451#define TX_THRESHOLD_INCREMENT 10
2452#define TX_THRESHOLD_DECREMENT 1
2453#define TX_THRESHOLD_STOP 190
2454#define TX_THRESHOLD_DISABLE 0
2455#define TX_THRESHOLD_TIMER_MS 10000
2456#define MIN_NUM_XMITS 1000
2463#define E1000_EXTCNF_CTRL_PCIE_WRITE_ENABLE 0x00000001
2464#define E1000_EXTCNF_CTRL_PHY_WRITE_ENABLE 0x00000002
2465#define E1000_EXTCNF_CTRL_D_UD_ENABLE 0x00000004
2466#define E1000_EXTCNF_CTRL_D_UD_LATENCY 0x00000008
2467#define E1000_EXTCNF_CTRL_D_UD_OWNER 0x00000010
2468#define E1000_EXTCNF_CTRL_MDIO_SW_OWNERSHIP 0x00000020
2469#define E1000_EXTCNF_CTRL_MDIO_HW_OWNERSHIP 0x00000040
2470#define E1000_EXTCNF_CTRL_EXT_CNF_POINTER 0x0FFF0000
2472#define E1000_EXTCNF_SIZE_EXT_PHY_LENGTH 0x000000FF
2473#define E1000_EXTCNF_SIZE_EXT_DOCK_LENGTH 0x0000FF00
2474#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH 0x00FF0000
2475#define E1000_EXTCNF_CTRL_LCD_WRITE_ENABLE 0x00000001
2476#define E1000_EXTCNF_CTRL_SWFLAG 0x00000020
2479#define E1000_PBA_8K 0x0008
2480#define E1000_PBA_12K 0x000C
2481#define E1000_PBA_16K 0x0010
2482#define E1000_PBA_22K 0x0016
2483#define E1000_PBA_24K 0x0018
2484#define E1000_PBA_30K 0x001E
2485#define E1000_PBA_32K 0x0020
2486#define E1000_PBA_34K 0x0022
2487#define E1000_PBA_38K 0x0026
2488#define E1000_PBA_40K 0x0028
2489#define E1000_PBA_48K 0x0030
2491#define E1000_PBS_16K E1000_PBA_16K
2494#define FLOW_CONTROL_ADDRESS_LOW 0x00C28001
2495#define FLOW_CONTROL_ADDRESS_HIGH 0x00000100
2496#define FLOW_CONTROL_TYPE 0x8808
2499#define FC_DEFAULT_HI_THRESH (0x8000)
2500#define FC_DEFAULT_LO_THRESH (0x4000)
2501#define FC_DEFAULT_TX_TIMER (0x100)
2504#define PCIX_COMMAND_REGISTER 0xE6
2505#define PCIX_STATUS_REGISTER_LO 0xE8
2506#define PCIX_STATUS_REGISTER_HI 0xEA
2508#define PCIX_COMMAND_MMRBC_MASK 0x000C
2509#define PCIX_COMMAND_MMRBC_SHIFT 0x2
2510#define PCIX_STATUS_HI_MMRBC_MASK 0x0060
2511#define PCIX_STATUS_HI_MMRBC_SHIFT 0x5
2512#define PCIX_STATUS_HI_MMRBC_4K 0x3
2513#define PCIX_STATUS_HI_MMRBC_2K 0x2
2519#define PAUSE_SHIFT 5
2524#define SWDPIO_SHIFT 17
2529#define SWDPIO__EXT_SHIFT 4
2537#define RECEIVE_BUFFER_ALIGN_SIZE (256)
2540#define LINK_UP_TIMEOUT 500
2543#define MASTER_DISABLE_TIMEOUT 800
2545#define AUTO_READ_DONE_TIMEOUT 10
2547#define PHY_CFG_TIMEOUT 100
2549#define E1000_TX_BUFFER_SIZE ((uint32_t)1514)
2552#define CARRIER_EXTENSION 0x0F
2581#define TBI_ACCEPT(adapter, status, errors, length, last_byte) \
2582 ((adapter)->tbi_compatibility_on && \
2583 (((errors) & E1000_RXD_ERR_FRAME_ERR_MASK) == E1000_RXD_ERR_CE) && \
2584 ((last_byte) == CARRIER_EXTENSION) && \
2585 (((status) & E1000_RXD_STAT_VP) ? \
2586 (((length) > ((adapter)->min_frame_size - VLAN_TAG_SIZE)) && \
2587 ((length) <= ((adapter)->max_frame_size + 1))) : \
2588 (((length) > (adapter)->min_frame_size) && \
2589 ((length) <= ((adapter)->max_frame_size + VLAN_TAG_SIZE + 1)))))
2597#define E1000_CTRL_PHY_RESET_DIR E1000_CTRL_SWDPIO0
2598#define E1000_CTRL_PHY_RESET E1000_CTRL_SWDPIN0
2599#define E1000_CTRL_MDIO_DIR E1000_CTRL_SWDPIO2
2600#define E1000_CTRL_MDIO E1000_CTRL_SWDPIN2
2601#define E1000_CTRL_MDC_DIR E1000_CTRL_SWDPIO3
2602#define E1000_CTRL_MDC E1000_CTRL_SWDPIN3
2603#define E1000_CTRL_PHY_RESET_DIR4 E1000_CTRL_EXT_SDP4_DIR
2604#define E1000_CTRL_PHY_RESET4 E1000_CTRL_EXT_SDP4_DATA
2608#define PHY_CTRL 0x00
2609#define PHY_STATUS 0x01
2612#define PHY_AUTONEG_ADV 0x04
2613#define PHY_LP_ABILITY 0x05
2614#define PHY_AUTONEG_EXP 0x06
2615#define PHY_NEXT_PAGE_TX 0x07
2616#define PHY_LP_NEXT_PAGE 0x08
2617#define PHY_1000T_CTRL 0x09
2618#define PHY_1000T_STATUS 0x0A
2619#define PHY_EXT_STATUS 0x0F
2621#define MAX_PHY_REG_ADDRESS 0x1F
2622#define MAX_PHY_MULTI_PAGE_REG 0xF
2625#define M88E1000_PHY_SPEC_CTRL 0x10
2626#define M88E1000_PHY_SPEC_STATUS 0x11
2627#define M88E1000_INT_ENABLE 0x12
2628#define M88E1000_INT_STATUS 0x13
2629#define M88E1000_EXT_PHY_SPEC_CTRL 0x14
2630#define M88E1000_RX_ERR_CNTR 0x15
2632#define M88E1000_PHY_EXT_CTRL 0x1A
2633#define M88E1000_PHY_PAGE_SELECT 0x1D
2634#define M88E1000_PHY_GEN_CONTROL 0x1E
2635#define M88E1000_PHY_VCO_REG_BIT8 0x100
2636#define M88E1000_PHY_VCO_REG_BIT11 0x800
2638#define IGP01E1000_IEEE_REGS_PAGE 0x0000
2639#define IGP01E1000_IEEE_RESTART_AUTONEG 0x3300
2640#define IGP01E1000_IEEE_FORCE_GIGA 0x0140
2643#define IGP01E1000_PHY_PORT_CONFIG 0x10
2644#define IGP01E1000_PHY_PORT_STATUS 0x11
2645#define IGP01E1000_PHY_PORT_CTRL 0x12
2646#define IGP01E1000_PHY_LINK_HEALTH 0x13
2647#define IGP01E1000_GMII_FIFO 0x14
2648#define IGP01E1000_PHY_CHANNEL_QUALITY 0x15
2649#define IGP02E1000_PHY_POWER_MGMT 0x19
2650#define IGP01E1000_PHY_PAGE_SELECT 0x1F
2653#define IGP01E1000_PHY_AGC_A 0x1172
2654#define IGP01E1000_PHY_AGC_B 0x1272
2655#define IGP01E1000_PHY_AGC_C 0x1472
2656#define IGP01E1000_PHY_AGC_D 0x1872
2659#define IGP02E1000_PHY_AGC_A 0x11B1
2660#define IGP02E1000_PHY_AGC_B 0x12B1
2661#define IGP02E1000_PHY_AGC_C 0x14B1
2662#define IGP02E1000_PHY_AGC_D 0x18B1
2665#define IGP01E1000_PHY_DSP_RESET 0x1F33
2666#define IGP01E1000_PHY_DSP_SET 0x1F71
2667#define IGP01E1000_PHY_DSP_FFE 0x1F35
2669#define IGP01E1000_PHY_CHANNEL_NUM 4
2670#define IGP02E1000_PHY_CHANNEL_NUM 4
2672#define IGP01E1000_PHY_AGC_PARAM_A 0x1171
2673#define IGP01E1000_PHY_AGC_PARAM_B 0x1271
2674#define IGP01E1000_PHY_AGC_PARAM_C 0x1471
2675#define IGP01E1000_PHY_AGC_PARAM_D 0x1871
2677#define IGP01E1000_PHY_EDAC_MU_INDEX 0xC000
2678#define IGP01E1000_PHY_EDAC_SIGN_EXT_9_BITS 0x8000
2680#define IGP01E1000_PHY_ANALOG_TX_STATE 0x2890
2681#define IGP01E1000_PHY_ANALOG_CLASS_A 0x2000
2682#define IGP01E1000_PHY_FORCE_ANALOG_ENABLE 0x0004
2683#define IGP01E1000_PHY_DSP_FFE_CM_CP 0x0069
2685#define IGP01E1000_PHY_DSP_FFE_DEFAULT 0x002A
2688#define IGP01E1000_PHY_PCS_INIT_REG 0x00B4
2689#define IGP01E1000_PHY_PCS_CTRL_REG 0x00B5
2691#define IGP01E1000_ANALOG_REGS_PAGE 0x20C0
2697#define GG82563_PAGE_SHIFT 5
2698#define GG82563_REG(page, reg) \
2699 (((page) << GG82563_PAGE_SHIFT) | ((reg) & MAX_PHY_REG_ADDRESS))
2700#define GG82563_MIN_ALT_REG 30
2703#define GG82563_PHY_SPEC_CTRL \
2705#define GG82563_PHY_SPEC_STATUS \
2707#define GG82563_PHY_INT_ENABLE \
2709#define GG82563_PHY_SPEC_STATUS_2 \
2711#define GG82563_PHY_RX_ERR_CNTR \
2713#define GG82563_PHY_PAGE_SELECT \
2715#define GG82563_PHY_SPEC_CTRL_2 \
2717#define GG82563_PHY_PAGE_SELECT_ALT \
2719#define GG82563_PHY_TEST_CLK_CTRL \
2722#define GG82563_PHY_MAC_SPEC_CTRL \
2724#define GG82563_PHY_MAC_SPEC_CTRL_2 \
2727#define GG82563_PHY_DSP_DISTANCE \
2731#define GG82563_PHY_KMRN_MODE_CTRL \
2732 GG82563_REG(193, 16)
2733#define GG82563_PHY_PORT_RESET \
2734 GG82563_REG(193, 17)
2735#define GG82563_PHY_REVISION_ID \
2736 GG82563_REG(193, 18)
2737#define GG82563_PHY_DEVICE_ID \
2738 GG82563_REG(193, 19)
2739#define GG82563_PHY_PWR_MGMT_CTRL \
2740 GG82563_REG(193, 20)
2741#define GG82563_PHY_RATE_ADAPT_CTRL \
2742 GG82563_REG(193, 25)
2745#define GG82563_PHY_KMRN_FIFO_CTRL_STAT \
2746 GG82563_REG(194, 16)
2747#define GG82563_PHY_KMRN_CTRL \
2748 GG82563_REG(194, 17)
2749#define GG82563_PHY_INBAND_CTRL \
2750 GG82563_REG(194, 18)
2751#define GG82563_PHY_KMRN_DIAGNOSTIC \
2752 GG82563_REG(194, 19)
2753#define GG82563_PHY_ACK_TIMEOUTS \
2754 GG82563_REG(194, 20)
2755#define GG82563_PHY_ADV_ABILITY \
2756 GG82563_REG(194, 21)
2757#define GG82563_PHY_LINK_PARTNER_ADV_ABILITY \
2758 GG82563_REG(194, 23)
2759#define GG82563_PHY_ADV_NEXT_PAGE \
2760 GG82563_REG(194, 24)
2761#define GG82563_PHY_LINK_PARTNER_ADV_NEXT_PAGE \
2762 GG82563_REG(194, 25)
2763#define GG82563_PHY_KMRN_MISC \
2764 GG82563_REG(194, 26)
2767#define MII_CR_SPEED_SELECT_MSB 0x0040
2768#define MII_CR_COLL_TEST_ENABLE 0x0080
2769#define MII_CR_FULL_DUPLEX 0x0100
2770#define MII_CR_RESTART_AUTO_NEG 0x0200
2771#define MII_CR_ISOLATE 0x0400
2772#define MII_CR_POWER_DOWN 0x0800
2773#define MII_CR_AUTO_NEG_EN 0x1000
2774#define MII_CR_SPEED_SELECT_LSB 0x2000
2775#define MII_CR_LOOPBACK 0x4000
2776#define MII_CR_RESET 0x8000
2779#define MII_SR_EXTENDED_CAPS 0x0001
2780#define MII_SR_JABBER_DETECT 0x0002
2781#define MII_SR_LINK_STATUS 0x0004
2782#define MII_SR_AUTONEG_CAPS 0x0008
2783#define MII_SR_REMOTE_FAULT 0x0010
2784#define MII_SR_AUTONEG_COMPLETE 0x0020
2785#define MII_SR_PREAMBLE_SUPPRESS 0x0040
2786#define MII_SR_EXTENDED_STATUS 0x0100
2787#define MII_SR_100T2_HD_CAPS 0x0200
2788#define MII_SR_100T2_FD_CAPS 0x0400
2789#define MII_SR_10T_HD_CAPS 0x0800
2790#define MII_SR_10T_FD_CAPS 0x1000
2791#define MII_SR_100X_HD_CAPS 0x2000
2792#define MII_SR_100X_FD_CAPS 0x4000
2793#define MII_SR_100T4_CAPS 0x8000
2796#define NWAY_AR_SELECTOR_FIELD 0x0001
2797#define NWAY_AR_10T_HD_CAPS 0x0020
2798#define NWAY_AR_10T_FD_CAPS 0x0040
2799#define NWAY_AR_100TX_HD_CAPS 0x0080
2800#define NWAY_AR_100TX_FD_CAPS 0x0100
2801#define NWAY_AR_100T4_CAPS 0x0200
2802#define NWAY_AR_PAUSE 0x0400
2803#define NWAY_AR_ASM_DIR 0x0800
2804#define NWAY_AR_REMOTE_FAULT 0x2000
2805#define NWAY_AR_NEXT_PAGE 0x8000
2808#define NWAY_LPAR_SELECTOR_FIELD 0x0000
2809#define NWAY_LPAR_10T_HD_CAPS 0x0020
2810#define NWAY_LPAR_10T_FD_CAPS 0x0040
2811#define NWAY_LPAR_100TX_HD_CAPS 0x0080
2812#define NWAY_LPAR_100TX_FD_CAPS 0x0100
2813#define NWAY_LPAR_100T4_CAPS 0x0200
2814#define NWAY_LPAR_PAUSE 0x0400
2815#define NWAY_LPAR_ASM_DIR 0x0800
2816#define NWAY_LPAR_REMOTE_FAULT 0x2000
2817#define NWAY_LPAR_ACKNOWLEDGE 0x4000
2818#define NWAY_LPAR_NEXT_PAGE 0x8000
2821#define NWAY_ER_LP_NWAY_CAPS 0x0001
2822#define NWAY_ER_PAGE_RXD 0x0002
2823#define NWAY_ER_NEXT_PAGE_CAPS 0x0004
2824#define NWAY_ER_LP_NEXT_PAGE_CAPS 0x0008
2825#define NWAY_ER_PAR_DETECT_FAULT 0x0010
2828#define NPTX_MSG_CODE_FIELD 0x0001
2829#define NPTX_TOGGLE 0x0800
2832#define NPTX_ACKNOWLDGE2 0x1000
2835#define NPTX_MSG_PAGE 0x2000
2836#define NPTX_NEXT_PAGE 0x8000
2841#define LP_RNPR_MSG_CODE_FIELD 0x0001
2842#define LP_RNPR_TOGGLE 0x0800
2845#define LP_RNPR_ACKNOWLDGE2 0x1000
2848#define LP_RNPR_MSG_PAGE 0x2000
2849#define LP_RNPR_ACKNOWLDGE 0x4000
2850#define LP_RNPR_NEXT_PAGE 0x8000
2855#define CR_1000T_ASYM_PAUSE 0x0080
2856#define CR_1000T_HD_CAPS 0x0100
2857#define CR_1000T_FD_CAPS 0x0200
2858#define CR_1000T_REPEATER_DTE 0x0400
2860#define CR_1000T_MS_VALUE 0x0800
2862#define CR_1000T_MS_ENABLE 0x1000
2864#define CR_1000T_TEST_MODE_NORMAL 0x0000
2865#define CR_1000T_TEST_MODE_1 0x2000
2866#define CR_1000T_TEST_MODE_2 0x4000
2867#define CR_1000T_TEST_MODE_3 0x6000
2868#define CR_1000T_TEST_MODE_4 0x8000
2871#define SR_1000T_IDLE_ERROR_CNT 0x00FF
2872#define SR_1000T_ASYM_PAUSE_DIR 0x0100
2873#define SR_1000T_LP_HD_CAPS 0x0400
2874#define SR_1000T_LP_FD_CAPS 0x0800
2875#define SR_1000T_REMOTE_RX_STATUS 0x1000
2876#define SR_1000T_LOCAL_RX_STATUS 0x2000
2877#define SR_1000T_MS_CONFIG_RES 0x4000
2878#define SR_1000T_MS_CONFIG_FAULT 0x8000
2879#define SR_1000T_REMOTE_RX_STATUS_SHIFT 12
2880#define SR_1000T_LOCAL_RX_STATUS_SHIFT 13
2881#define SR_1000T_PHY_EXCESSIVE_IDLE_ERR_COUNT 5
2882#define FFE_IDLE_ERR_COUNT_TIMEOUT_20 20
2883#define FFE_IDLE_ERR_COUNT_TIMEOUT_100 100
2886#define IEEE_ESR_1000T_HD_CAPS 0x1000
2887#define IEEE_ESR_1000T_FD_CAPS 0x2000
2888#define IEEE_ESR_1000X_HD_CAPS 0x4000
2889#define IEEE_ESR_1000X_FD_CAPS 0x8000
2891#define PHY_TX_POLARITY_MASK 0x0100
2892#define PHY_TX_NORMAL_POLARITY 0
2894#define AUTO_POLARITY_DISABLE 0x0010
2898#define M88E1000_PSCR_JABBER_DISABLE 0x0001
2899#define M88E1000_PSCR_POLARITY_REVERSAL 0x0002
2900#define M88E1000_PSCR_SQE_TEST 0x0004
2901#define M88E1000_PSCR_CLK125_DISABLE 0x0010
2904#define M88E1000_PSCR_MDI_MANUAL_MODE 0x0000
2906#define M88E1000_PSCR_MDIX_MANUAL_MODE 0x0020
2907#define M88E1000_PSCR_AUTO_X_1000T 0x0040
2911#define M88E1000_PSCR_AUTO_X_MODE 0x0060
2914#define M88E1000_PSCR_10BT_EXT_DIST_ENABLE 0x0080
2918#define M88E1000_PSCR_MII_5BIT_ENABLE 0x0100
2921#define M88E1000_PSCR_SCRAMBLER_DISABLE 0x0200
2922#define M88E1000_PSCR_FORCE_LINK_GOOD 0x0400
2923#define M88E1000_PSCR_ASSERT_CRS_ON_TX 0x0800
2925#define M88E1000_PSCR_POLARITY_REVERSAL_SHIFT 1
2926#define M88E1000_PSCR_AUTO_X_MODE_SHIFT 5
2927#define M88E1000_PSCR_10BT_EXT_DIST_ENABLE_SHIFT 7
2930#define M88E1000_PSSR_JABBER 0x0001
2931#define M88E1000_PSSR_REV_POLARITY 0x0002
2932#define M88E1000_PSSR_DOWNSHIFT 0x0020
2933#define M88E1000_PSSR_MDIX 0x0040
2934#define M88E1000_PSSR_CABLE_LENGTH 0x0380
2936#define M88E1000_PSSR_LINK 0x0400
2937#define M88E1000_PSSR_SPD_DPLX_RESOLVED 0x0800
2938#define M88E1000_PSSR_PAGE_RCVD 0x1000
2939#define M88E1000_PSSR_DPLX 0x2000
2940#define M88E1000_PSSR_SPEED 0xC000
2941#define M88E1000_PSSR_10MBS 0x0000
2942#define M88E1000_PSSR_100MBS 0x4000
2943#define M88E1000_PSSR_1000MBS 0x8000
2945#define M88E1000_PSSR_REV_POLARITY_SHIFT 1
2946#define M88E1000_PSSR_DOWNSHIFT_SHIFT 5
2947#define M88E1000_PSSR_MDIX_SHIFT 6
2948#define M88E1000_PSSR_CABLE_LENGTH_SHIFT 7
2951#define M88E1000_EPSCR_FIBER_LOOPBACK 0x4000
2952#define M88E1000_EPSCR_DOWN_NO_IDLE 0x8000
2959#define M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK 0x0C00
2960#define M88E1000_EPSCR_MASTER_DOWNSHIFT_1X 0x0000
2961#define M88E1000_EPSCR_MASTER_DOWNSHIFT_2X 0x0400
2962#define M88E1000_EPSCR_MASTER_DOWNSHIFT_3X 0x0800
2963#define M88E1000_EPSCR_MASTER_DOWNSHIFT_4X 0x0C00
2966#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK 0x0300
2967#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_DIS 0x0000
2968#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X 0x0100
2969#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_2X 0x0200
2970#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_3X 0x0300
2971#define M88E1000_EPSCR_TX_CLK_2_5 0x0060
2972#define M88E1000_EPSCR_TX_CLK_25 0x0070
2973#define M88E1000_EPSCR_TX_CLK_0 0x0000
2976#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_MASK 0x0E00
2977#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_1X 0x0000
2978#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_2X 0x0200
2979#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_3X 0x0400
2980#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_4X 0x0600
2981#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_5X 0x0800
2982#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_6X 0x0A00
2983#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_7X 0x0C00
2984#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_8X 0x0E00
2987#define IGP01E1000_PSCFR_AUTO_MDIX_PAR_DETECT 0x0010
2988#define IGP01E1000_PSCFR_PRE_EN 0x0020
2989#define IGP01E1000_PSCFR_SMART_SPEED 0x0080
2990#define IGP01E1000_PSCFR_DISABLE_TPLOOPBACK 0x0100
2991#define IGP01E1000_PSCFR_DISABLE_JABBER 0x0400
2992#define IGP01E1000_PSCFR_DISABLE_TRANSMIT 0x2000
2995#define IGP01E1000_PSSR_AUTONEG_FAILED 0x0001
2996#define IGP01E1000_PSSR_POLARITY_REVERSED 0x0002
2997#define IGP01E1000_PSSR_CABLE_LENGTH 0x007C
2998#define IGP01E1000_PSSR_FULL_DUPLEX 0x0200
2999#define IGP01E1000_PSSR_LINK_UP 0x0400
3000#define IGP01E1000_PSSR_MDIX 0x0800
3001#define IGP01E1000_PSSR_SPEED_MASK 0xC000
3002#define IGP01E1000_PSSR_SPEED_10MBPS 0x4000
3003#define IGP01E1000_PSSR_SPEED_100MBPS 0x8000
3004#define IGP01E1000_PSSR_SPEED_1000MBPS 0xC000
3005#define IGP01E1000_PSSR_CABLE_LENGTH_SHIFT 0x0002
3006#define IGP01E1000_PSSR_MDIX_SHIFT 0x000B
3009#define IGP01E1000_PSCR_TP_LOOPBACK 0x0010
3010#define IGP01E1000_PSCR_CORRECT_NC_SCMBLR 0x0200
3011#define IGP01E1000_PSCR_TEN_CRS_SELECT 0x0400
3012#define IGP01E1000_PSCR_FLIP_CHIP 0x0800
3013#define IGP01E1000_PSCR_AUTO_MDIX 0x1000
3014#define IGP01E1000_PSCR_FORCE_MDI_MDIX 0x2000
3017#define IGP01E1000_PLHR_SS_DOWNGRADE 0x8000
3018#define IGP01E1000_PLHR_GIG_SCRAMBLER_ERROR 0x4000
3019#define IGP01E1000_PLHR_MASTER_FAULT 0x2000
3020#define IGP01E1000_PLHR_MASTER_RESOLUTION 0x1000
3021#define IGP01E1000_PLHR_GIG_REM_RCVR_NOK 0x0800
3022#define IGP01E1000_PLHR_IDLE_ERROR_CNT_OFLOW 0x0400
3023#define IGP01E1000_PLHR_DATA_ERR_1 0x0200
3024#define IGP01E1000_PLHR_DATA_ERR_0 0x0100
3025#define IGP01E1000_PLHR_AUTONEG_FAULT 0x0040
3026#define IGP01E1000_PLHR_AUTONEG_ACTIVE 0x0010
3027#define IGP01E1000_PLHR_VALID_CHANNEL_D 0x0008
3028#define IGP01E1000_PLHR_VALID_CHANNEL_C 0x0004
3029#define IGP01E1000_PLHR_VALID_CHANNEL_B 0x0002
3030#define IGP01E1000_PLHR_VALID_CHANNEL_A 0x0001
3033#define IGP01E1000_MSE_CHANNEL_D 0x000F
3034#define IGP01E1000_MSE_CHANNEL_C 0x00F0
3035#define IGP01E1000_MSE_CHANNEL_B 0x0F00
3036#define IGP01E1000_MSE_CHANNEL_A 0xF000
3038#define IGP02E1000_PM_SPD 0x0001
3039#define IGP02E1000_PM_D3_LPLU 0x0004
3040#define IGP02E1000_PM_D0_LPLU 0x0002
3043#define DSP_RESET_ENABLE 0x0
3044#define DSP_RESET_DISABLE 0x2
3045#define E1000_MAX_DSP_RESETS 10
3049#define IGP01E1000_AGC_LENGTH_SHIFT 7
3050#define IGP02E1000_AGC_LENGTH_SHIFT 9
3053#define IGP02E1000_AGC_LENGTH_MASK 0x7F
3056#define IGP01E1000_AGC_LENGTH_TABLE_SIZE 128
3057#define IGP02E1000_AGC_LENGTH_TABLE_SIZE 113
3060#define IGP01E1000_AGC_RANGE 10
3061#define IGP02E1000_AGC_RANGE 15
3065#define IGP01E1000_PHY_POLARITY_MASK 0x0078
3068#define IGP01E1000_GMII_FLEX_SPD 0x10
3070#define IGP01E1000_GMII_SPD 0x20
3073#define IGP01E1000_ANALOG_SPARE_FUSE_STATUS 0x20D1
3074#define IGP01E1000_ANALOG_FUSE_STATUS 0x20D0
3075#define IGP01E1000_ANALOG_FUSE_CONTROL 0x20DC
3076#define IGP01E1000_ANALOG_FUSE_BYPASS 0x20DE
3078#define IGP01E1000_ANALOG_FUSE_POLY_MASK 0xF000
3079#define IGP01E1000_ANALOG_FUSE_FINE_MASK 0x0F80
3080#define IGP01E1000_ANALOG_FUSE_COARSE_MASK 0x0070
3081#define IGP01E1000_ANALOG_SPARE_FUSE_ENABLED 0x0100
3082#define IGP01E1000_ANALOG_FUSE_ENABLE_SW_CONTROL 0x0002
3084#define IGP01E1000_ANALOG_FUSE_COARSE_THRESH 0x0040
3085#define IGP01E1000_ANALOG_FUSE_COARSE_10 0x0010
3086#define IGP01E1000_ANALOG_FUSE_FINE_1 0x0080
3087#define IGP01E1000_ANALOG_FUSE_FINE_10 0x0500
3090#define GG82563_PSCR_DISABLE_JABBER 0x0001
3091#define GG82563_PSCR_POLARITY_REVERSAL_DISABLE 0x0002
3092#define GG82563_PSCR_POWER_DOWN 0x0004
3093#define GG82563_PSCR_COPPER_TRANSMITER_DISABLE 0x0008
3094#define GG82563_PSCR_CROSSOVER_MODE_MASK 0x0060
3095#define GG82563_PSCR_CROSSOVER_MODE_MDI 0x0000
3096#define GG82563_PSCR_CROSSOVER_MODE_MDIX 0x0020
3097#define GG82563_PSCR_CROSSOVER_MODE_AUTO 0x0060
3098#define GG82563_PSCR_ENALBE_EXTENDED_DISTANCE 0x0080
3099#define GG82563_PSCR_ENERGY_DETECT_MASK 0x0300
3100#define GG82563_PSCR_ENERGY_DETECT_OFF 0x0000
3101#define GG82563_PSCR_ENERGY_DETECT_RX 0x0200
3102#define GG82563_PSCR_ENERGY_DETECT_RX_TM 0x0300
3103#define GG82563_PSCR_FORCE_LINK_GOOD 0x0400
3104#define GG82563_PSCR_DOWNSHIFT_ENABLE 0x0800
3105#define GG82563_PSCR_DOWNSHIFT_COUNTER_MASK 0x7000
3106#define GG82563_PSCR_DOWNSHIFT_COUNTER_SHIFT 12
3109#define GG82563_PSSR_JABBER 0x0001
3110#define GG82563_PSSR_POLARITY 0x0002
3111#define GG82563_PSSR_LINK 0x0008
3112#define GG82563_PSSR_ENERGY_DETECT 0x0010
3113#define GG82563_PSSR_DOWNSHIFT 0x0020
3114#define GG82563_PSSR_CROSSOVER_STATUS 0x0040
3115#define GG82563_PSSR_RX_PAUSE_ENABLED 0x0100
3116#define GG82563_PSSR_TX_PAUSE_ENABLED 0x0200
3117#define GG82563_PSSR_LINK_UP 0x0400
3118#define GG82563_PSSR_SPEED_DUPLEX_RESOLVED 0x0800
3119#define GG82563_PSSR_PAGE_RECEIVED 0x1000
3120#define GG82563_PSSR_DUPLEX 0x2000
3121#define GG82563_PSSR_SPEED_MASK 0xC000
3122#define GG82563_PSSR_SPEED_10MBPS 0x0000
3123#define GG82563_PSSR_SPEED_100MBPS 0x4000
3124#define GG82563_PSSR_SPEED_1000MBPS 0x8000
3127#define GG82563_PSSR2_JABBER 0x0001
3128#define GG82563_PSSR2_POLARITY_CHANGED 0x0002
3129#define GG82563_PSSR2_ENERGY_DETECT_CHANGED 0x0010
3130#define GG82563_PSSR2_DOWNSHIFT_INTERRUPT 0x0020
3131#define GG82563_PSSR2_MDI_CROSSOVER_CHANGE 0x0040
3132#define GG82563_PSSR2_FALSE_CARRIER 0x0100
3133#define GG82563_PSSR2_SYMBOL_ERROR 0x0200
3134#define GG82563_PSSR2_LINK_STATUS_CHANGED 0x0400
3135#define GG82563_PSSR2_AUTO_NEG_COMPLETED 0x0800
3136#define GG82563_PSSR2_PAGE_RECEIVED 0x1000
3137#define GG82563_PSSR2_DUPLEX_CHANGED 0x2000
3138#define GG82563_PSSR2_SPEED_CHANGED 0x4000
3139#define GG82563_PSSR2_AUTO_NEG_ERROR 0x8000
3142#define GG82563_PSCR2_10BT_POLARITY_FORCE 0x0002
3143#define GG82563_PSCR2_1000MB_TEST_SELECT_MASK 0x000C
3144#define GG82563_PSCR2_1000MB_TEST_SELECT_NORMAL 0x0000
3145#define GG82563_PSCR2_1000MB_TEST_SELECT_112NS 0x0008
3146#define GG82563_PSCR2_1000MB_TEST_SELECT_16NS 0x000C
3147#define GG82563_PSCR2_REVERSE_AUTO_NEG 0x2000
3148#define GG82563_PSCR2_1000BT_DISABLE 0x4000
3149#define GG82563_PSCR2_TRANSMITER_TYPE_MASK 0x8000
3150#define GG82563_PSCR2_TRANSMITTER_TYPE_CLASS_B 0x0000
3151#define GG82563_PSCR2_TRANSMITTER_TYPE_CLASS_A 0x8000
3155#define GG82563_MSCR_TX_CLK_MASK 0x0007
3156#define GG82563_MSCR_TX_CLK_10MBPS_2_5MHZ 0x0004
3157#define GG82563_MSCR_TX_CLK_100MBPS_25MHZ 0x0005
3158#define GG82563_MSCR_TX_CLK_1000MBPS_2_5MHZ 0x0006
3159#define GG82563_MSCR_TX_CLK_1000MBPS_25MHZ 0x0007
3161#define GG82563_MSCR_ASSERT_CRS_ON_TX 0x0010
3164#define GG82563_DSPD_CABLE_LENGTH 0x0007
3171#define GG82563_KMCR_PHY_LEDS_EN 0x0020
3172#define GG82563_KMCR_FORCE_LINK_UP 0x0040
3173#define GG82563_KMCR_SUPPRESS_SGMII_EPD_EXT 0x0080
3174#define GG82563_KMCR_MDIO_BUS_SPEED_SELECT_MASK 0x0400
3175#define GG82563_KMCR_MDIO_BUS_SPEED_SELECT 0x0400
3176#define GG82563_KMCR_PASS_FALSE_CARRIER 0x0800
3179#define GG82563_PMCR_ENABLE_ELECTRICAL_IDLE 0x0001
3180#define GG82563_PMCR_DISABLE_PORT 0x0002
3181#define GG82563_PMCR_DISABLE_SERDES 0x0004
3182#define GG82563_PMCR_REVERSE_AUTO_NEG 0x0008
3183#define GG82563_PMCR_DISABLE_1000_NON_D0 0x0010
3184#define GG82563_PMCR_DISABLE_1000 0x0020
3185#define GG82563_PMCR_REVERSE_AUTO_NEG_D0A 0x0040
3186#define GG82563_PMCR_FORCE_POWER_STATE 0x0080
3187#define GG82563_PMCR_PROGRAMMED_POWER_STATE_MASK 0x0300
3188#define GG82563_PMCR_PROGRAMMED_POWER_STATE_DR 0x0000
3189#define GG82563_PMCR_PROGRAMMED_POWER_STATE_D0U 0x0100
3190#define GG82563_PMCR_PROGRAMMED_POWER_STATE_D0A 0x0200
3191#define GG82563_PMCR_PROGRAMMED_POWER_STATE_D3 0x0300
3194#define GG82563_ICR_DIS_PADDING 0x0010
3201#define M88E1000_E_PHY_ID 0x01410C50
3202#define M88E1000_I_PHY_ID 0x01410C30
3203#define M88E1011_I_PHY_ID 0x01410C20
3204#define IGP01E1000_I_PHY_ID 0x02A80380
3205#define M88E1000_12_PHY_ID M88E1000_E_PHY_ID
3206#define M88E1000_14_PHY_ID M88E1000_E_PHY_ID
3207#define M88E1011_I_REV_4 0x04
3208#define M88E1111_I_PHY_ID 0x01410CC0
3209#define L1LXT971A_PHY_ID 0x001378E0
3210#define GG82563_E_PHY_ID 0x01410CA0
3217#define PHY_PAGE_SHIFT 5
3218#define PHY_REG(page, reg) \
3219 (((page) << PHY_PAGE_SHIFT) | ((reg) & MAX_PHY_REG_ADDRESS))
3221#define IGP3_PHY_PORT_CTRL \
3223#define IGP3_PHY_RATE_ADAPT_CTRL \
3226#define IGP3_KMRN_FIFO_CTRL_STATS \
3228#define IGP3_KMRN_POWER_MNG_CTRL \
3230#define IGP3_KMRN_INBAND_CTRL \
3232#define IGP3_KMRN_DIAG \
3234#define IGP3_KMRN_DIAG_PCS_LOCK_LOSS 0x0002
3235#define IGP3_KMRN_ACK_TIMEOUT \
3238#define IGP3_VR_CTRL \
3240#define IGP3_VR_CTRL_MODE_SHUT 0x0200
3242#define IGP3_CAPABILITY \
3246#define IGP3_CAP_INITIATE_TEAM 0x0001
3247#define IGP3_CAP_WFM 0x0002
3248#define IGP3_CAP_ASF 0x0004
3249#define IGP3_CAP_LPLU 0x0008
3250#define IGP3_CAP_DC_AUTO_SPEED 0x0010
3251#define IGP3_CAP_SPD 0x0020
3252#define IGP3_CAP_MULT_QUEUE 0x0040
3253#define IGP3_CAP_RSS 0x0080
3254#define IGP3_CAP_8021PQ 0x0100
3255#define IGP3_CAP_AMT_CB 0x0200
3257#define IGP3_PPC_JORDAN_EN 0x0001
3258#define IGP3_PPC_JORDAN_GIGA_SPEED 0x0002
3260#define IGP3_KMRN_PMC_EE_IDLE_LINK_DIS 0x0001
3261#define IGP3_KMRN_PMC_K0S_ENTRY_LATENCY_MASK 0x001E
3262#define IGP3_KMRN_PMC_K0S_MODE1_EN_GIGA 0x0020
3263#define IGP3_KMRN_PMC_K0S_MODE1_EN_100 0x0040
3265#define IGP3E1000_PHY_MISC_CTRL 0x1B
3266#define IGP3_PHY_MISC_DUPLEX_MANUAL_SET 0x1000
3268#define IGP3_KMRN_EXT_CTRL PHY_REG(770, 18)
3269#define IGP3_KMRN_EC_DIS_INBAND 0x0080
3271#define IGP03E1000_E_PHY_ID 0x02A80390
3272#define IFE_E_PHY_ID 0x02A80330
3273#define IFE_PLUS_E_PHY_ID 0x02A80320
3274#define IFE_C_E_PHY_ID 0x02A80310
3276#define IFE_PHY_EXTENDED_STATUS_CONTROL 0x10
3277#define IFE_PHY_SPECIAL_CONTROL 0x11
3278#define IFE_PHY_RCV_FALSE_CARRIER 0x13
3279#define IFE_PHY_RCV_DISCONNECT 0x14
3280#define IFE_PHY_RCV_ERROT_FRAME 0x15
3281#define IFE_PHY_RCV_SYMBOL_ERR 0x16
3282#define IFE_PHY_PREM_EOF_ERR 0x17
3283#define IFE_PHY_RCV_EOF_ERR 0x18
3284#define IFE_PHY_TX_JABBER_DETECT 0x19
3285#define IFE_PHY_EQUALIZER 0x1A
3286#define IFE_PHY_SPECIAL_CONTROL_LED 0x1B
3287#define IFE_PHY_MDIX_CONTROL 0x1C
3288#define IFE_PHY_HWI_CONTROL 0x1D
3290#define IFE_PESC_REDUCED_POWER_DOWN_DISABLE 0x2000
3291#define IFE_PESC_100BTX_POWER_DOWN 0x0400
3292#define IFE_PESC_10BTX_POWER_DOWN 0x0200
3293#define IFE_PESC_POLARITY_REVERSED 0x0100
3294#define IFE_PESC_PHY_ADDR_MASK 0x007C
3295#define IFE_PESC_SPEED 0x0002
3296#define IFE_PESC_DUPLEX 0x0001
3297#define IFE_PESC_POLARITY_REVERSED_SHIFT 8
3299#define IFE_PSC_DISABLE_DYNAMIC_POWER_DOWN 0x0100
3300#define IFE_PSC_FORCE_POLARITY 0x0020
3301#define IFE_PSC_AUTO_POLARITY_DISABLE 0x0010
3302#define IFE_PSC_JABBER_FUNC_DISABLE 0x0001
3303#define IFE_PSC_FORCE_POLARITY_SHIFT 5
3304#define IFE_PSC_AUTO_POLARITY_DISABLE_SHIFT 4
3306#define IFE_PMC_AUTO_MDIX 0x0080
3307#define IFE_PMC_FORCE_MDIX 0x0040
3308#define IFE_PMC_MDIX_STATUS 0x0020
3309#define IFE_PMC_AUTO_MDIX_COMPLETE 0x0010
3310#define IFE_PMC_MDIX_MODE_SHIFT 6
3311#define IFE_PHC_MDIX_RESET_ALL_MASK 0x0000
3313#define IFE_PHC_HWI_ENABLE 0x8000
3314#define IFE_PHC_ABILITY_CHECK 0x4000
3315#define IFE_PHC_TEST_EXEC 0x2000
3316#define IFE_PHC_HIGHZ 0x0200
3317#define IFE_PHC_LOWZ 0x0400
3318#define IFE_PHC_LOW_HIGH_Z_MASK 0x0600
3319#define IFE_PHC_DISTANCE_MASK 0x01FF
3320#define IFE_PHC_RESET_ALL_MASK 0x0000
3321#define IFE_PSCL_PROBE_MODE 0x0020
3322#define IFE_PSCL_PROBE_LEDS_OFF 0x0006
3323#define IFE_PSCL_PROBE_LEDS_ON 0x0007
3325#define ICH8_FLASH_COMMAND_TIMEOUT 500
3326#define ICH8_FLASH_CYCLE_REPEAT_COUNT 10
3327#define ICH8_FLASH_SEG_SIZE_256 256
3328#define ICH8_FLASH_SEG_SIZE_4K 4096
3329#define ICH8_FLASH_SEG_SIZE_64K 65536
3331#define ICH8_CYCLE_READ 0x0
3332#define ICH8_CYCLE_RESERVED 0x1
3333#define ICH8_CYCLE_WRITE 0x2
3334#define ICH8_CYCLE_ERASE 0x3
3336#define ICH8_FLASH_GFPREG 0x0000
3337#define ICH8_FLASH_HSFSTS 0x0004
3338#define ICH8_FLASH_HSFCTL 0x0006
3339#define ICH8_FLASH_FADDR 0x0008
3340#define ICH8_FLASH_FDATA0 0x0010
3341#define ICH8_FLASH_FRACC 0x0050
3342#define ICH8_FLASH_FREG0 0x0054
3343#define ICH8_FLASH_FREG1 0x0058
3344#define ICH8_FLASH_FREG2 0x005C
3345#define ICH8_FLASH_FREG3 0x0060
3346#define ICH8_FLASH_FPR0 0x0074
3347#define ICH8_FLASH_FPR1 0x0078
3348#define ICH8_FLASH_SSFSTS 0x0090
3349#define ICH8_FLASH_SSFCTL 0x0092
3350#define ICH8_FLASH_PREOP 0x0094
3351#define ICH8_FLASH_OPTYPE 0x0096
3352#define ICH8_FLASH_OPMENU 0x0098
3354#define ICH8_FLASH_REG_MAPSIZE 0x00A0
3355#define ICH8_FLASH_SECTOR_SIZE 4096
3356#define ICH8_GFPREG_BASE_MASK 0x1FFF
3357#define ICH8_FLASH_LINEAR_ADDR_MASK 0x00FFFFFF
3361union ich8_hws_flash_status {
3362 struct ich8_hsfsts {
3363#ifdef E1000_BIG_ENDIAN
3364 uint16_t reserved2 :6;
3365 uint16_t fldesvalid :1;
3366 uint16_t flockdn :1;
3367 uint16_t flcdone :1;
3370 uint16_t berasesz :2;
3371 uint16_t flcinprog :1;
3372 uint16_t reserved1 :2;
3374 uint16_t flcdone :1;
3377 uint16_t berasesz :2;
3378 uint16_t flcinprog :1;
3379 uint16_t reserved1 :2;
3380 uint16_t reserved2 :6;
3381 uint16_t fldesvalid :1;
3382 uint16_t flockdn :1;
3390union ich8_hws_flash_ctrl {
3391 struct ich8_hsflctl {
3392#ifdef E1000_BIG_ENDIAN
3393 uint16_t fldbcount :2;
3394 uint16_t flockdn :6;
3396 uint16_t flcycle :2;
3397 uint16_t reserved :5;
3400 uint16_t flcycle :2;
3401 uint16_t reserved :5;
3402 uint16_t fldbcount :2;
3403 uint16_t flockdn :6;
3410union ich8_hws_flash_regacc {
3411 struct ich8_flracc {
3412#ifdef E1000_BIG_ENDIAN
3428#define PHY_PREAMBLE 0xFFFFFFFF
3430#define PHY_OP_READ 0x02
3431#define PHY_OP_WRITE 0x01
3432#define PHY_TURNAROUND 0x02
3433#define PHY_PREAMBLE_SIZE 32
3434#define MII_CR_SPEED_1000 0x0040
3435#define MII_CR_SPEED_100 0x2000
3436#define MII_CR_SPEED_10 0x0000
3437#define E1000_PHY_ADDRESS 0x01
3438#define PHY_AUTO_NEG_TIME 45
3439#define PHY_FORCE_TIME 20
3440#define PHY_REVISION_MASK 0xFFFFFFF0
3441#define DEVICE_SPEED_MASK 0x00000300
3442#define REG4_SPEED_MASK 0x01E0
3443#define REG9_SPEED_MASK 0x0300
3444#define ADVERTISE_10_HALF 0x0001
3445#define ADVERTISE_10_FULL 0x0002
3446#define ADVERTISE_100_HALF 0x0004
3447#define ADVERTISE_100_FULL 0x0008
3448#define ADVERTISE_1000_HALF 0x0010
3449#define ADVERTISE_1000_FULL 0x0020
3450#define AUTONEG_ADVERTISE_SPEED_DEFAULT 0x002F
3451#define AUTONEG_ADVERTISE_10_100_ALL 0x000F
3452#define AUTONEG_ADVERTISE_10_ALL 0x0003