diff options
author | Joseph Gasparakis <joseph.gasparakis@intel.com> | 2010-09-22 13:56:44 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-09-23 00:20:04 -0400 |
commit | 308fb39a860c816be8741fe783ae7c64e9c1af5d (patch) | |
tree | 8fabed4b3372c49b4d83dc1d0b72d4abf60f139e /drivers/net/igb/e1000_82575.c | |
parent | d85b9004bc2047d79248b167cc151ff9a4b509c3 (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.c | 18 |
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); |