diff options
| author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-08-01 05:14:25 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-08-01 05:14:25 -0700 |
| commit | be55649e00e02405019f9bc3bb15f5a57255272b (patch) | |
| tree | e8a92688a1069d3ab83d12c98d9fe038996881c9 | |
| parent | 171755ff12750d94f2079137a421ffdbb8b6fd47 (diff) | |
| parent | cb6298ed222a0ee75505cf3761f2dc7465d0e5ce (diff) | |
Merge bk://kernel.bkbits.net/davem/tg3-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
| -rw-r--r-- | drivers/net/tg3.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index e5b49ebf6a3e..0e46154729d4 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c @@ -3635,9 +3635,25 @@ static int tg3_chip_reset(struct tg3 *tp) /* restore 5701 hardware bug workaround flag */ tp->tg3_flags = flags_save; + /* Unfortunately, we have to delay before the PCI read back. + * Some 575X chips even will not respond to a PCI cfg access + * when the reset command is given to the chip. + * + * How do these hardware designers expect things to work + * properly if the PCI write is posted for a long period + * of time? It is always necessary to have some method by + * which a register read back can occur to push the write + * out which does the reset. + * + * For most tg3 variants the trick below was working. + * Ho hum... + */ + udelay(120); + /* Flush PCI posted writes. The normal MMIO registers * are inaccessible at this time so this is the only - * way to make this reliably. I tried to use indirect + * way to make this reliably (actually, this is no longer + * the case, see above). I tried to use indirect * register read/write but this upset some 5701 variants. */ pci_read_config_dword(tp->pdev, PCI_COMMAND, &val); |
