aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000e/es2lan.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/e1000e/es2lan.c')
-rw-r--r--drivers/net/e1000e/es2lan.c32
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
237static s32 e1000_get_invariants_80003es2lan(struct e1000_adapter *adapter) 241static 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,