diff options
author | Michael Chan <mchan@broadcom.com> | 2007-02-02 03:46:35 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-02-02 03:46:35 -0500 |
commit | b659f44e4e144bae02c5beaba78a37db60783ba2 (patch) | |
tree | e83c812da31b54953615eefb535060bd814e0406 /drivers/net/bnx2.c | |
parent | e34efe3b100d0fbdf053128956c3dd0bc68754d6 (diff) |
[BNX2]: PHY workaround for 5709 A0.
5709 A0 copper devices will not link up with some link partners
without this workaround.
Update driver to 1.5.5.
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bnx2.c')
-rw-r--r-- | drivers/net/bnx2.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index 953808efe551..ee7b75b976b5 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c | |||
@@ -57,8 +57,8 @@ | |||
57 | 57 | ||
58 | #define DRV_MODULE_NAME "bnx2" | 58 | #define DRV_MODULE_NAME "bnx2" |
59 | #define PFX DRV_MODULE_NAME ": " | 59 | #define PFX DRV_MODULE_NAME ": " |
60 | #define DRV_MODULE_VERSION "1.5.4" | 60 | #define DRV_MODULE_VERSION "1.5.5" |
61 | #define DRV_MODULE_RELDATE "January 24, 2007" | 61 | #define DRV_MODULE_RELDATE "February 1, 2007" |
62 | 62 | ||
63 | #define RUN_AT(x) (jiffies + (x)) | 63 | #define RUN_AT(x) (jiffies + (x)) |
64 | 64 | ||
@@ -1356,6 +1356,14 @@ bnx2_init_copper_phy(struct bnx2 *bp) | |||
1356 | bnx2_write_phy(bp, 0x18, 0x0400); | 1356 | bnx2_write_phy(bp, 0x18, 0x0400); |
1357 | } | 1357 | } |
1358 | 1358 | ||
1359 | if (bp->phy_flags & PHY_DIS_EARLY_DAC_FLAG) { | ||
1360 | bnx2_write_phy(bp, MII_BNX2_DSP_ADDRESS, | ||
1361 | MII_BNX2_DSP_EXPAND_REG | 0x8); | ||
1362 | bnx2_read_phy(bp, MII_BNX2_DSP_RW_PORT, &val); | ||
1363 | val &= ~(1 << 8); | ||
1364 | bnx2_write_phy(bp, MII_BNX2_DSP_RW_PORT, val); | ||
1365 | } | ||
1366 | |||
1359 | if (bp->dev->mtu > 1500) { | 1367 | if (bp->dev->mtu > 1500) { |
1360 | /* Set extended packet length bit */ | 1368 | /* Set extended packet length bit */ |
1361 | bnx2_write_phy(bp, 0x18, 0x7); | 1369 | bnx2_write_phy(bp, 0x18, 0x7); |
@@ -5918,6 +5926,8 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev) | |||
5918 | } else if (CHIP_NUM(bp) == CHIP_NUM_5706 || | 5926 | } else if (CHIP_NUM(bp) == CHIP_NUM_5706 || |
5919 | CHIP_NUM(bp) == CHIP_NUM_5708) | 5927 | CHIP_NUM(bp) == CHIP_NUM_5708) |
5920 | bp->phy_flags |= PHY_CRC_FIX_FLAG; | 5928 | bp->phy_flags |= PHY_CRC_FIX_FLAG; |
5929 | else if (CHIP_ID(bp) == CHIP_ID_5709_A0) | ||
5930 | bp->phy_flags |= PHY_DIS_EARLY_DAC_FLAG; | ||
5921 | 5931 | ||
5922 | if ((CHIP_ID(bp) == CHIP_ID_5708_A0) || | 5932 | if ((CHIP_ID(bp) == CHIP_ID_5708_A0) || |
5923 | (CHIP_ID(bp) == CHIP_ID_5708_B0) || | 5933 | (CHIP_ID(bp) == CHIP_ID_5708_B0) || |