aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tg3.c
diff options
context:
space:
mode:
authorMatt Carlson <mcarlson@broadcom.com>2007-11-13 00:11:51 -0500
committerDavid S. Miller <davem@davemloft.net>2007-11-13 00:11:51 -0500
commite875093c9659d2a9f3923aa9ee1b89ef40cf95b9 (patch)
tree2ae7be842b38612b38805a22d6857eedda71f1e3 /drivers/net/tg3.c
parenta5767dec1980463aef5614b7ad8a800bb4f4c353 (diff)
[TG3]: CPMU adjustments for loopback tests
This patch adds the LINK_SPEED mode to the list of CPMU modes that can cause the loopback tests to fail. These bugs are planned to be fixed in future revisions of the chip, so the patch qualifies the fixes as such. Signed-off-by: Matt Carlson <mcarlson@broadcom.com> Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/tg3.c')
-rw-r--r--drivers/net/tg3.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index ef849b1eb110..25e57d8ddb51 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -9354,7 +9354,8 @@ static int tg3_test_loopback(struct tg3 *tp)
9354 if (err) 9354 if (err)
9355 return TG3_LOOPBACK_FAILED; 9355 return TG3_LOOPBACK_FAILED;
9356 9356
9357 if (tp->tg3_flags & TG3_FLAG_CPMU_PRESENT) { 9357 if (tp->pci_chip_rev_id == CHIPREV_ID_5784_A0 ||
9358 tp->pci_chip_rev_id == CHIPREV_ID_5761_A0) {
9358 int i; 9359 int i;
9359 u32 status; 9360 u32 status;
9360 9361
@@ -9371,17 +9372,18 @@ static int tg3_test_loopback(struct tg3 *tp)
9371 if (status != CPMU_MUTEX_GNT_DRIVER) 9372 if (status != CPMU_MUTEX_GNT_DRIVER)
9372 return TG3_LOOPBACK_FAILED; 9373 return TG3_LOOPBACK_FAILED;
9373 9374
9374 cpmuctrl = tr32(TG3_CPMU_CTRL);
9375
9376 /* Turn off power management based on link speed. */ 9375 /* Turn off power management based on link speed. */
9376 cpmuctrl = tr32(TG3_CPMU_CTRL);
9377 tw32(TG3_CPMU_CTRL, 9377 tw32(TG3_CPMU_CTRL,
9378 cpmuctrl & ~CPMU_CTRL_LINK_SPEED_MODE); 9378 cpmuctrl & ~(CPMU_CTRL_LINK_SPEED_MODE |
9379 CPMU_CTRL_LINK_AWARE_MODE));
9379 } 9380 }
9380 9381
9381 if (tg3_run_loopback(tp, TG3_MAC_LOOPBACK)) 9382 if (tg3_run_loopback(tp, TG3_MAC_LOOPBACK))
9382 err |= TG3_MAC_LOOPBACK_FAILED; 9383 err |= TG3_MAC_LOOPBACK_FAILED;
9383 9384
9384 if (tp->tg3_flags & TG3_FLAG_CPMU_PRESENT) { 9385 if (tp->pci_chip_rev_id == CHIPREV_ID_5784_A0 ||
9386 tp->pci_chip_rev_id == CHIPREV_ID_5761_A0) {
9385 tw32(TG3_CPMU_CTRL, cpmuctrl); 9387 tw32(TG3_CPMU_CTRL, cpmuctrl);
9386 9388
9387 /* Release the mutex */ 9389 /* Release the mutex */