215
219
E1000_SWSM = 0x05B50, /* SW Semaphore */
216
220
E1000_FWSM = 0x05B54, /* FW Semaphore */
217
221
E1000_SWSM2 = 0x05B58, /* Driver-only SW semaphore */
218
E1000_CRC_OFFSET = 0x05F50, /* CRC Offset register */
222
E1000_FFLT_DBG = 0x05F04, /* Debug Register */
223
E1000_PCH_RAICC_BASE = 0x05F50, /* Receive Address Initial CRC */
224
#define E1000_PCH_RAICC(_n) (E1000_PCH_RAICC_BASE + ((_n) * 4))
225
#define E1000_CRC_OFFSET E1000_PCH_RAICC_BASE
219
226
E1000_HICR = 0x08F00, /* Host Interface Control */
229
#define E1000_MAX_PHY_ADDR 4
224
231
/* IGP01E1000 Specific Registers */
225
232
#define IGP01E1000_PHY_PORT_CONFIG 0x10 /* Port Config */
301
308
#define E1000_KMRNCTRLSTA_OFFSET 0x001F0000
302
309
#define E1000_KMRNCTRLSTA_OFFSET_SHIFT 16
303
310
#define E1000_KMRNCTRLSTA_REN 0x00200000
311
#define E1000_KMRNCTRLSTA_CTRL_OFFSET 0x1 /* Kumeran Control */
304
312
#define E1000_KMRNCTRLSTA_DIAG_OFFSET 0x3 /* Kumeran Diagnostic */
313
#define E1000_KMRNCTRLSTA_TIMEOUTS 0x4 /* Kumeran Timeouts */
314
#define E1000_KMRNCTRLSTA_INBAND_PARAM 0x9 /* Kumeran InBand Parameters */
305
315
#define E1000_KMRNCTRLSTA_DIAG_NELPBK 0x1000 /* Nearend Loopback mode */
306
316
#define E1000_KMRNCTRLSTA_K1_CONFIG 0x7
307
#define E1000_KMRNCTRLSTA_K1_ENABLE 0x140E
308
#define E1000_KMRNCTRLSTA_K1_DISABLE 0x1400
317
#define E1000_KMRNCTRLSTA_K1_ENABLE 0x0002
318
#define E1000_KMRNCTRLSTA_HD_CTRL 0x10 /* Kumeran HD Control */
310
320
#define IFE_PHY_EXTENDED_STATUS_CONTROL 0x10
311
321
#define IFE_PHY_SPECIAL_CONTROL 0x11 /* 100BaseTx PHY Special Control */
741
760
s32 (*check_for_link)(struct e1000_hw *);
742
761
s32 (*cleanup_led)(struct e1000_hw *);
743
762
void (*clear_hw_cntrs)(struct e1000_hw *);
763
void (*clear_vfta)(struct e1000_hw *);
744
764
s32 (*get_bus_info)(struct e1000_hw *);
765
void (*set_lan_id)(struct e1000_hw *);
745
766
s32 (*get_link_up_info)(struct e1000_hw *, u16 *, u16 *);
746
767
s32 (*led_on)(struct e1000_hw *);
747
768
s32 (*led_off)(struct e1000_hw *);
748
void (*update_mc_addr_list)(struct e1000_hw *, u8 *, u32, u32, u32);
769
void (*update_mc_addr_list)(struct e1000_hw *, u8 *, u32);
749
770
s32 (*reset_hw)(struct e1000_hw *);
750
771
s32 (*init_hw)(struct e1000_hw *);
751
772
s32 (*setup_link)(struct e1000_hw *);
752
773
s32 (*setup_physical_interface)(struct e1000_hw *);
753
774
s32 (*setup_led)(struct e1000_hw *);
775
void (*write_vfta)(struct e1000_hw *, u32, u32);
776
s32 (*read_mac_addr)(struct e1000_hw *);
756
779
/* Function pointers for the PHY. */
757
780
struct e1000_phy_operations {
758
s32 (*acquire_phy)(struct e1000_hw *);
781
s32 (*acquire)(struct e1000_hw *);
782
s32 (*cfg_on_link_up)(struct e1000_hw *);
759
783
s32 (*check_polarity)(struct e1000_hw *);
760
784
s32 (*check_reset_block)(struct e1000_hw *);
761
s32 (*commit_phy)(struct e1000_hw *);
785
s32 (*commit)(struct e1000_hw *);
762
786
s32 (*force_speed_duplex)(struct e1000_hw *);
763
787
s32 (*get_cfg_done)(struct e1000_hw *hw);
764
788
s32 (*get_cable_length)(struct e1000_hw *);
765
s32 (*get_phy_info)(struct e1000_hw *);
766
s32 (*read_phy_reg)(struct e1000_hw *, u32, u16 *);
767
s32 (*read_phy_reg_locked)(struct e1000_hw *, u32, u16 *);
768
void (*release_phy)(struct e1000_hw *);
769
s32 (*reset_phy)(struct e1000_hw *);
789
s32 (*get_info)(struct e1000_hw *);
790
s32 (*read_reg)(struct e1000_hw *, u32, u16 *);
791
s32 (*read_reg_locked)(struct e1000_hw *, u32, u16 *);
792
void (*release)(struct e1000_hw *);
793
s32 (*reset)(struct e1000_hw *);
770
794
s32 (*set_d0_lplu_state)(struct e1000_hw *, bool);
771
795
s32 (*set_d3_lplu_state)(struct e1000_hw *, bool);
772
s32 (*write_phy_reg)(struct e1000_hw *, u32, u16);
773
s32 (*write_phy_reg_locked)(struct e1000_hw *, u32, u16);
774
s32 (*cfg_on_link_up)(struct e1000_hw *);
796
s32 (*write_reg)(struct e1000_hw *, u32, u16);
797
s32 (*write_reg_locked)(struct e1000_hw *, u32, u16);
798
void (*power_up)(struct e1000_hw *);
799
void (*power_down)(struct e1000_hw *);
777
802
/* Function pointers for the NVM. */
778
803
struct e1000_nvm_operations {
779
s32 (*acquire_nvm)(struct e1000_hw *);
780
s32 (*read_nvm)(struct e1000_hw *, u16, u16, u16 *);
781
void (*release_nvm)(struct e1000_hw *);
782
s32 (*update_nvm)(struct e1000_hw *);
804
s32 (*acquire)(struct e1000_hw *);
805
s32 (*read)(struct e1000_hw *, u16, u16, u16 *);
806
void (*release)(struct e1000_hw *);
807
s32 (*update)(struct e1000_hw *);
783
808
s32 (*valid_led_default)(struct e1000_hw *, u16 *);
784
s32 (*validate_nvm)(struct e1000_hw *);
785
s32 (*write_nvm)(struct e1000_hw *, u16, u16, u16 *);
809
s32 (*validate)(struct e1000_hw *);
810
s32 (*write)(struct e1000_hw *, u16, u16, u16 *);
788
813
struct e1000_mac_info {