summaryrefslogtreecommitdiffstats
path: root/drivers/net/smc91x.c
diff options
context:
space:
mode:
authorRussell King <rmk@arm.linux.org.uk>2005-11-18 18:57:55 +0100
committerJeff Garzik <jgarzik@pobox.com>2005-11-18 19:10:30 +0100
commite52542443aa9be15439e9879baf6d41b290e94db (patch)
tree840fb2eb41713e75b9b8ba82e3961f71530447e1 /drivers/net/smc91x.c
parent[PATCH] smc91x: fix one source of spurious interrupts (diff)
downloadlinux-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.c1
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;
}