diff options
author | Matt Carlson <mcarlson@broadcom.com> | 2010-02-12 09:47:12 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-12 20:05:55 -0500 |
commit | 1061b7c56482310bbb8197045d51e2986afabfce (patch) | |
tree | 379f9faa46dc45f1bea5c630ac83090b805bcfcd /drivers/net/tg3.c | |
parent | c88734054e787542ea093b02120e324e92cad882 (diff) |
tg3: Fix AC131 loopback test errors for 5785
The AC131 does not enable the forced transmit clock settings
immediately. The workaround is to read the register again to get the
setting to take effect.
Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Reviewed-by: Michael Chan <mchan@broadcom.com>
Reviewed-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/tg3.c')
-rw-r--r-- | drivers/net/tg3.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index cb6967947c30..128126a87c34 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -10822,8 +10822,12 @@ static int tg3_run_loopback(struct tg3 *tp, int loopback_mode) | |||
10822 | 10822 | ||
10823 | mac_mode = tp->mac_mode & ~MAC_MODE_PORT_MODE_MASK; | 10823 | mac_mode = tp->mac_mode & ~MAC_MODE_PORT_MODE_MASK; |
10824 | if (tp->tg3_flags3 & TG3_FLG3_PHY_IS_FET) { | 10824 | if (tp->tg3_flags3 & TG3_FLG3_PHY_IS_FET) { |
10825 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) | 10825 | tg3_writephy(tp, MII_TG3_FET_PTEST, |
10826 | tg3_writephy(tp, MII_TG3_FET_PTEST, 0x1800); | 10826 | MII_TG3_FET_PTEST_FRC_TX_LINK | |
10827 | MII_TG3_FET_PTEST_FRC_TX_LOCK); | ||
10828 | /* The write needs to be flushed for the AC131 */ | ||
10829 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5785) | ||
10830 | tg3_readphy(tp, MII_TG3_FET_PTEST, &val); | ||
10827 | mac_mode |= MAC_MODE_PORT_MODE_MII; | 10831 | mac_mode |= MAC_MODE_PORT_MODE_MII; |
10828 | } else | 10832 | } else |
10829 | mac_mode |= MAC_MODE_PORT_MODE_GMII; | 10833 | mac_mode |= MAC_MODE_PORT_MODE_GMII; |