History

[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.

Michael Chan committed 19 years ago

Commit b659f441 parent e34efe32 files · +18 −2Browse files

Unified · Split

2 files
  1. drivers/net/bnx2.c +12 −2
  2. drivers/net/bnx2.h +6 −0
drivers/net/bnx2.c+12−2
@@ -57,8 +57,8 @@ · 56 unmodified lines
5757
5858 #define DRV_MODULE_NAME "bnx2"
5959 #define PFX DRV_MODULE_NAME ": "
60−#define DRV_MODULE_VERSION "1.5.4"
61−#define DRV_MODULE_RELDATE "January 24, 2007"
60+#define DRV_MODULE_VERSION "1.5.5"
61+#define DRV_MODULE_RELDATE "February 1, 2007"
6262
6363 #define RUN_AT(x) (jiffies + (x))
6464
@@ -1356,6 +1356,14 @@ bnx2_init_copper_phy(struct bnx2 *bp) · 1291 unmodified lines
13561356 bnx2_write_phy(bp, 0x18, 0x0400);
13571357 }
13581358
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+
13591367 if (bp->dev->mtu > 1500) {
13601368 /* Set extended packet length bit */
13611369 bnx2_write_phy(bp, 0x18, 0x7);
@@ -5918,6 +5926,8 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev) · 4556 unmodified lines
59185926 } else if (CHIP_NUM(bp) == CHIP_NUM_5706 ||
59195927 CHIP_NUM(bp) == CHIP_NUM_5708)
59205928 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;
59215931
59225932 if ((CHIP_ID(bp) == CHIP_ID_5708_A0) ||
59235933 (CHIP_ID(bp) == CHIP_ID_5708_B0) ||
drivers/net/bnx2.h+6−0
@@ -6288,6 +6288,10 @@ struct l2_fhdr { · 6287 unmodified lines
62886288
62896289 #define BCM5708S_TX_ACTL3 0x17
62906290
6291+#define MII_BNX2_DSP_RW_PORT 0x15
6292+#define MII_BNX2_DSP_ADDRESS 0x17
6293+#define MII_BNX2_DSP_EXPAND_REG 0x0f00
6294+
62916295 #define MIN_ETHERNET_PACKET_SIZE 60
62926296 #define MAX_ETHERNET_PACKET_SIZE 1514
62936297 #define MAX_ETHERNET_JUMBO_PACKET_SIZE 9014
@@ -6489,6 +6493,7 @@ struct bnx2 { · 195 unmodified lines
64896493 #define PHY_INT_MODE_MASK_FLAG 0x300
64906494 #define PHY_INT_MODE_AUTO_POLLING_FLAG 0x100
64916495 #define PHY_INT_MODE_LINK_READY_FLAG 0x200
6496+#define PHY_DIS_EARLY_DAC_FLAG 0x400
64926497
64936498 u32 chip_id;
64946499 /* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */
@@ -6512,6 +6517,7 @@ struct bnx2 { · 17 unmodified lines
65126517 #define CHIP_ID_5708_A0 0x57080000
65136518 #define CHIP_ID_5708_B0 0x57081000
65146519 #define CHIP_ID_5708_B1 0x57081010
6520+#define CHIP_ID_5709_A0 0x57090000
65156521
65166522 #define CHIP_BOND_ID(bp) (((bp)->chip_id) & 0xf)
65176523