From: Russell King Date: Fri, 18 Nov 2005 17:57:55 +0000 (-0500) Subject: [PATCH] smc91x: fix bank mismatch X-Git-Tag: v2.6.15-rc2~18^2~12 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e52542443aa9be15439e9879baf6d41b290e94db;p=linux-2.6 [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 Signed-off-by: Nicolas Pitre Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c index 1021108e9a..28bf2e69eb 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; }