diff options
author | Russell King <rmk@arm.linux.org.uk> | 2005-11-18 18:57:55 +0100 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-11-18 19:10:30 +0100 |
commit | e52542443aa9be15439e9879baf6d41b290e94db (patch) | |
tree | 840fb2eb41713e75b9b8ba82e3961f71530447e1 /drivers/net/smc91x.c | |
parent | [PATCH] smc91x: fix one source of spurious interrupts (diff) | |
download | linux-e52542443aa9be15439e9879baf6d41b290e94db.tar.xz linux-e52542443aa9be15439e9879baf6d41b290e94db.zip |
[PATCH] smc91x: fix bank mismatch
The smc91x driver relies upon register bank 2 being selected whenever
the interrupt handler is called. This isn't always so, especially if
we have a link change event during PHY configuration.
This results in register bank 0 being selected when the interrupt
handler is called, causing the wrong registers to be read for the
IRQ mask and status. In turn, this causes us to spin with a
permanently asserted IRQ.
The patch ensures that smc_phy_configure always exits with register
bank 2 selected.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/smc91x.c')
-rw-r--r-- | drivers/net/smc91x.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c index 1021108e9a25..28bf2e69eb5e 100644 --- a/drivers/net/smc91x.c +++ b/drivers/net/smc91x.c @@ -1212,6 +1212,7 @@ static void smc_phy_configure(void *data) smc_phy_check_media(dev, 1); smc_phy_configure_exit: + SMC_SELECT_BANK(2); spin_unlock_irq(&lp->lock); lp->work_pending = 0; } |