aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igb/e1000_82575.c
diff options
context:
space:
mode:
authorJoseph Gasparakis <joseph.gasparakis@intel.com>2010-09-22 13:56:44 -0400
committerDavid S. Miller <davem@davemloft.net>2010-09-23 00:20:04 -0400
commit308fb39a860c816be8741fe783ae7c64e9c1af5d (patch)
tree8fabed4b3372c49b4d83dc1d0b72d4abf60f139e /drivers/net/igb/e1000_82575.c
parentd85b9004bc2047d79248b167cc151ff9a4b509c3 (diff)
igb: Add support for DH89xxCC
This patch adds support for the Intel(r) DH89xxCC series. The new device will be using Intel(r) i347-AT4 and Marvell(r) M88E1322 and M88E1112 PHYs. Support for these devices has also been added here. Signed-off-by: Joseph Gasparakis <joseph.gasparakis@intel.com> Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/igb/e1000_82575.c')
-rw-r--r--drivers/net/igb/e1000_82575.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/net/igb/e1000_82575.c b/drivers/net/igb/e1000_82575.c
index 187622f1c816..bc183f5487cb 100644
--- a/drivers/net/igb/e1000_82575.c
+++ b/drivers/net/igb/e1000_82575.c
@@ -132,6 +132,8 @@ static s32 igb_get_invariants_82575(struct e1000_hw *hw)
132 case E1000_DEV_ID_82580_SERDES: 132 case E1000_DEV_ID_82580_SERDES:
133 case E1000_DEV_ID_82580_SGMII: 133 case E1000_DEV_ID_82580_SGMII:
134 case E1000_DEV_ID_82580_COPPER_DUAL: 134 case E1000_DEV_ID_82580_COPPER_DUAL:
135 case E1000_DEV_ID_DH89XXCC_SGMII:
136 case E1000_DEV_ID_DH89XXCC_SERDES:
135 mac->type = e1000_82580; 137 mac->type = e1000_82580;
136 break; 138 break;
137 case E1000_DEV_ID_I350_COPPER: 139 case E1000_DEV_ID_I350_COPPER:
@@ -282,10 +284,18 @@ static s32 igb_get_invariants_82575(struct e1000_hw *hw)
282 284
283 /* Verify phy id and set remaining function pointers */ 285 /* Verify phy id and set remaining function pointers */
284 switch (phy->id) { 286 switch (phy->id) {
287 case I347AT4_E_PHY_ID:
288 case M88E1112_E_PHY_ID:
285 case M88E1111_I_PHY_ID: 289 case M88E1111_I_PHY_ID:
286 phy->type = e1000_phy_m88; 290 phy->type = e1000_phy_m88;
287 phy->ops.get_phy_info = igb_get_phy_info_m88; 291 phy->ops.get_phy_info = igb_get_phy_info_m88;
288 phy->ops.get_cable_length = igb_get_cable_length_m88; 292
293 if (phy->id == I347AT4_E_PHY_ID ||
294 phy->id == M88E1112_E_PHY_ID)
295 phy->ops.get_cable_length = igb_get_cable_length_m88_gen2;
296 else
297 phy->ops.get_cable_length = igb_get_cable_length_m88;
298
289 phy->ops.force_speed_duplex = igb_phy_force_speed_duplex_m88; 299 phy->ops.force_speed_duplex = igb_phy_force_speed_duplex_m88;
290 break; 300 break;
291 case IGP03E1000_E_PHY_ID: 301 case IGP03E1000_E_PHY_ID:
@@ -1058,7 +1068,11 @@ static s32 igb_setup_copper_link_82575(struct e1000_hw *hw)
1058 } 1068 }
1059 switch (hw->phy.type) { 1069 switch (hw->phy.type) {
1060 case e1000_phy_m88: 1070 case e1000_phy_m88:
1061 ret_val = igb_copper_link_setup_m88(hw); 1071 if (hw->phy.id == I347AT4_E_PHY_ID ||
1072 hw->phy.id == M88E1112_E_PHY_ID)
1073 ret_val = igb_copper_link_setup_m88_gen2(hw);
1074 else
1075 ret_val = igb_copper_link_setup_m88(hw);
1062 break; 1076 break;
1063 case e1000_phy_igp_3: 1077 case e1000_phy_igp_3:
1064 ret_val = igb_copper_link_setup_igp(hw); 1078 ret_val = igb_copper_link_setup_igp(hw);