diff options
Diffstat (limited to 'drivers/net/e1000e/es2lan.c')
-rw-r--r-- | drivers/net/e1000e/es2lan.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/drivers/net/e1000e/es2lan.c b/drivers/net/e1000e/es2lan.c index e3f4aeefeae2..d59a99ae44be 100644 --- a/drivers/net/e1000e/es2lan.c +++ b/drivers/net/e1000e/es2lan.c | |||
@@ -178,6 +178,10 @@ static s32 e1000_init_nvm_params_80003es2lan(struct e1000_hw *hw) | |||
178 | * for setting word_size. | 178 | * for setting word_size. |
179 | */ | 179 | */ |
180 | size += NVM_WORD_SIZE_BASE_SHIFT; | 180 | size += NVM_WORD_SIZE_BASE_SHIFT; |
181 | |||
182 | /* EEPROM access above 16k is unsupported */ | ||
183 | if (size > 14) | ||
184 | size = 14; | ||
181 | nvm->word_size = 1 << size; | 185 | nvm->word_size = 1 << size; |
182 | 186 | ||
183 | return 0; | 187 | return 0; |
@@ -234,7 +238,7 @@ static s32 e1000_init_mac_params_80003es2lan(struct e1000_adapter *adapter) | |||
234 | return 0; | 238 | return 0; |
235 | } | 239 | } |
236 | 240 | ||
237 | static s32 e1000_get_invariants_80003es2lan(struct e1000_adapter *adapter) | 241 | static s32 e1000_get_variants_80003es2lan(struct e1000_adapter *adapter) |
238 | { | 242 | { |
239 | struct e1000_hw *hw = &adapter->hw; | 243 | struct e1000_hw *hw = &adapter->hw; |
240 | s32 rc; | 244 | s32 rc; |
@@ -788,16 +792,16 @@ static s32 e1000_init_hw_80003es2lan(struct e1000_hw *hw) | |||
788 | ret_val = e1000e_setup_link(hw); | 792 | ret_val = e1000e_setup_link(hw); |
789 | 793 | ||
790 | /* Set the transmit descriptor write-back policy */ | 794 | /* Set the transmit descriptor write-back policy */ |
791 | reg_data = er32(TXDCTL); | 795 | reg_data = er32(TXDCTL(0)); |
792 | reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) | | 796 | reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) | |
793 | E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC; | 797 | E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC; |
794 | ew32(TXDCTL, reg_data); | 798 | ew32(TXDCTL(0), reg_data); |
795 | 799 | ||
796 | /* ...for both queues. */ | 800 | /* ...for both queues. */ |
797 | reg_data = er32(TXDCTL1); | 801 | reg_data = er32(TXDCTL(1)); |
798 | reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) | | 802 | reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) | |
799 | E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC; | 803 | E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC; |
800 | ew32(TXDCTL1, reg_data); | 804 | ew32(TXDCTL(1), reg_data); |
801 | 805 | ||
802 | /* Enable retransmit on late collisions */ | 806 | /* Enable retransmit on late collisions */ |
803 | reg_data = er32(TCTL); | 807 | reg_data = er32(TCTL); |
@@ -842,29 +846,29 @@ static void e1000_initialize_hw_bits_80003es2lan(struct e1000_hw *hw) | |||
842 | u32 reg; | 846 | u32 reg; |
843 | 847 | ||
844 | /* Transmit Descriptor Control 0 */ | 848 | /* Transmit Descriptor Control 0 */ |
845 | reg = er32(TXDCTL); | 849 | reg = er32(TXDCTL(0)); |
846 | reg |= (1 << 22); | 850 | reg |= (1 << 22); |
847 | ew32(TXDCTL, reg); | 851 | ew32(TXDCTL(0), reg); |
848 | 852 | ||
849 | /* Transmit Descriptor Control 1 */ | 853 | /* Transmit Descriptor Control 1 */ |
850 | reg = er32(TXDCTL1); | 854 | reg = er32(TXDCTL(1)); |
851 | reg |= (1 << 22); | 855 | reg |= (1 << 22); |
852 | ew32(TXDCTL1, reg); | 856 | ew32(TXDCTL(1), reg); |
853 | 857 | ||
854 | /* Transmit Arbitration Control 0 */ | 858 | /* Transmit Arbitration Control 0 */ |
855 | reg = er32(TARC0); | 859 | reg = er32(TARC(0)); |
856 | reg &= ~(0xF << 27); /* 30:27 */ | 860 | reg &= ~(0xF << 27); /* 30:27 */ |
857 | if (hw->phy.media_type != e1000_media_type_copper) | 861 | if (hw->phy.media_type != e1000_media_type_copper) |
858 | reg &= ~(1 << 20); | 862 | reg &= ~(1 << 20); |
859 | ew32(TARC0, reg); | 863 | ew32(TARC(0), reg); |
860 | 864 | ||
861 | /* Transmit Arbitration Control 1 */ | 865 | /* Transmit Arbitration Control 1 */ |
862 | reg = er32(TARC1); | 866 | reg = er32(TARC(1)); |
863 | if (er32(TCTL) & E1000_TCTL_MULR) | 867 | if (er32(TCTL) & E1000_TCTL_MULR) |
864 | reg &= ~(1 << 28); | 868 | reg &= ~(1 << 28); |
865 | else | 869 | else |
866 | reg |= (1 << 28); | 870 | reg |= (1 << 28); |
867 | ew32(TARC1, reg); | 871 | ew32(TARC(1), reg); |
868 | } | 872 | } |
869 | 873 | ||
870 | /** | 874 | /** |
@@ -1239,7 +1243,7 @@ struct e1000_info e1000_es2_info = { | |||
1239 | | FLAG_DISABLE_FC_PAUSE_TIME /* errata */ | 1243 | | FLAG_DISABLE_FC_PAUSE_TIME /* errata */ |
1240 | | FLAG_TIPG_MEDIUM_FOR_80003ESLAN, | 1244 | | FLAG_TIPG_MEDIUM_FOR_80003ESLAN, |
1241 | .pba = 38, | 1245 | .pba = 38, |
1242 | .get_invariants = e1000_get_invariants_80003es2lan, | 1246 | .get_variants = e1000_get_variants_80003es2lan, |
1243 | .mac_ops = &es2_mac_ops, | 1247 | .mac_ops = &es2_mac_ops, |
1244 | .phy_ops = &es2_phy_ops, | 1248 | .phy_ops = &es2_phy_ops, |
1245 | .nvm_ops = &es2_nvm_ops, | 1249 | .nvm_ops = &es2_nvm_ops, |