tg3: Delay mdio bus init until fw finishes
authorMatt Carlson <mcarlson@broadcom.com>
Fri, 28 Aug 2009 12:27:50 +0000 (12:27 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 29 Aug 2009 22:42:27 +0000 (15:42 -0700)
The device firmware uses the MDIO bus during early setup.  If the driver
modifies the MDIO bus configuration while it is in use by the firmware,
any number of bad things can happen.  This patch delays MDIO setup until
after the firmware posts its magic signature, signifying initialization
is complete.

Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tg3.c

index 8af2cdf181dd08e22cbdf0acccff66c07b1031d2..ab3159ef4c561c0fd29d3f94f597a5112a9235d0 100644 (file)
@@ -6348,14 +6348,14 @@ static int tg3_chip_reset(struct tg3 *tp)
                tw32_f(MAC_MODE, 0);
        udelay(40);
 
-       tg3_mdio_start(tp);
-
        tg3_ape_unlock(tp, TG3_APE_LOCK_GRC);
 
        err = tg3_poll_fw(tp);
        if (err)
                return err;
 
+       tg3_mdio_start(tp);
+
        if ((tp->tg3_flags2 & TG3_FLG2_PCI_EXPRESS) &&
            tp->pci_chip_rev_id != CHIPREV_ID_5750_A0) {
                val = tr32(0x7c00);