tg3: Delay mdio bus init until fw finishes

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>
This commit is contained in:
Matt Carlson 2009-08-28 12:27:50 +00:00 committed by David S. Miller
parent b3df9a514f
commit 0a9140cff2
1 changed files with 2 additions and 2 deletions

View File

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