ChangeSet 1.2199.14.16, 2005/03/23 11:07:37-08:00, [EMAIL PROTECTED]

        [TG3]: Add unstable PLL workaround for 5750
        
        Add unstable PLL clock workaround for 5750 Ax and Bx devices. The 
workaround
        code is run just before entering D3hot state.
        
        Signed-off-by: Michael Chan <[EMAIL PROTECTED]>
        ACKed-by: Jeff Garzik <[EMAIL PROTECTED]>
        Signed-off-by: David S. Miller <[EMAIL PROTECTED]>



 tg3.c |   12 ++++++++++++
 1 files changed, 12 insertions(+)


diff -Nru a/drivers/net/tg3.c b/drivers/net/tg3.c
--- a/drivers/net/tg3.c 2005-03-26 17:21:05 -08:00
+++ b/drivers/net/tg3.c 2005-03-26 17:21:05 -08:00
@@ -966,6 +966,7 @@
 #define RESET_KIND_SUSPEND     2
 
 static void tg3_write_sig_post_reset(struct tg3 *, int);
+static int tg3_halt_cpu(struct tg3 *, u32);
 
 static int tg3_set_power_state(struct tg3 *tp, int state)
 {
@@ -1123,6 +1124,17 @@
        }
 
        tg3_frob_aux_power(tp);
+
+       /* Workaround for unstable PLL clock */
+       if ((GET_CHIP_REV(tp->pci_chip_rev_id) == CHIPREV_5750_AX) ||
+           (GET_CHIP_REV(tp->pci_chip_rev_id) == CHIPREV_5750_BX)) {
+               u32 val = tr32(0x7d00);
+
+               val &= ~((1 << 16) | (1 << 4) | (1 << 2) | (1 << 1) | 1);
+               tw32(0x7d00, val);
+               if (!(tp->tg3_flags & TG3_FLAG_ENABLE_ASF))
+                       tg3_halt_cpu(tp, RX_CPU_BASE);
+       }
 
        /* Finally, set the new power state. */
        pci_write_config_word(tp->pdev, pm + PCI_PM_CTRL, power_control);
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to