|
@@ -1037,7 +1037,11 @@ static void tg3_mdio_start(struct tg3 *tp)
|
|
|
else
|
|
|
tp->phy_addr = 1;
|
|
|
|
|
|
- is_serdes = tr32(SG_DIG_STATUS) & SG_DIG_IS_SERDES;
|
|
|
+ if (tp->pci_chip_rev_id != CHIPREV_ID_5717_A0)
|
|
|
+ is_serdes = tr32(SG_DIG_STATUS) & SG_DIG_IS_SERDES;
|
|
|
+ else
|
|
|
+ is_serdes = tr32(TG3_CPMU_PHY_STRAP) &
|
|
|
+ TG3_CPMU_PHY_STRAP_IS_SERDES;
|
|
|
if (is_serdes)
|
|
|
tp->phy_addr += 7;
|
|
|
} else
|
|
@@ -12123,7 +12127,8 @@ static void __devinit tg3_get_eeprom_hw_cfg(struct tg3 *tp)
|
|
|
|
|
|
tp->phy_id = eeprom_phy_id;
|
|
|
if (eeprom_phy_serdes) {
|
|
|
- if (tp->tg3_flags2 & TG3_FLG2_5780_CLASS)
|
|
|
+ if ((tp->tg3_flags2 & TG3_FLG2_5780_CLASS) ||
|
|
|
+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717)
|
|
|
tp->tg3_flags2 |= TG3_FLG2_MII_SERDES;
|
|
|
else
|
|
|
tp->tg3_flags2 |= TG3_FLG2_PHY_SERDES;
|