aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Chan <mchan@broadcom.com>2005-08-19 15:54:29 -0400
committerDavid S. Miller <davem@davemloft.net>2005-08-19 15:54:29 -0400
commitda6b2d01d6bd2e79fd4f7a08acd37dc4e8fcdce8 (patch)
tree8cc7fcfa31f2d439545ff8d16ef188c1b1b7614c
parent91aa9fb573fcc50bc74d5ee64c7e9b36131f1804 (diff)
[TG3]: Fix SerDes detection
A problem was reported by Grant Grundler on an HP rx8620 using IOX Core LAN partno(A7109-6) 5701 copper NIC. The tg3 driver mistakenly detects this NIC as having a SerDes PHY and link does not come up as a result. The problem was caused by an incorrectly programmed eeprom that set the NIC_SRAM_DATA_CFG_PHY_TYPE_FIBER bit in the NIC_SRAM_DATA_CFG location. This patch will override the NIC_SRAM_DATA_CFG_PHY_TYPE_FIBER bit if a valid PHY ID is read from the MII registers on older 570x chips where the MII interface is not used on SerDes chips. On newer chips such as the 5780 that use MII for both copper and SerDes, SerDes detection must rely on the eeprom. This patch will make the SerDes detection identical to versions 3.25 and older. Signed-off-by: Michael Chan <mchan@broadcom.com> Acked-by: Grant Grundler <iod00d@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/tg3.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 368b8fb14023..d75c96de96e4 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -8970,6 +8970,8 @@ static int __devinit tg3_phy_probe(struct tg3 *tp)
8970 tp->phy_id = hw_phy_id; 8970 tp->phy_id = hw_phy_id;
8971 if (hw_phy_id_masked == PHY_ID_BCM8002) 8971 if (hw_phy_id_masked == PHY_ID_BCM8002)
8972 tp->tg3_flags2 |= TG3_FLG2_PHY_SERDES; 8972 tp->tg3_flags2 |= TG3_FLG2_PHY_SERDES;
8973 else
8974 tp->tg3_flags2 &= ~TG3_FLG2_PHY_SERDES;
8973 } else { 8975 } else {
8974 if (tp->phy_id != PHY_ID_INVALID) { 8976 if (tp->phy_id != PHY_ID_INVALID) {
8975 /* Do nothing, phy ID already set up in 8977 /* Do nothing, phy ID already set up in