mirror of
https://github.com/torvalds/linux
synced 2024-09-22 03:55:39 +00:00
[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>
This commit is contained in:
parent
5d0571d915
commit
e52542443a
|
@ -1212,6 +1212,7 @@ static void smc_phy_configure(void *data)
|
||||||
smc_phy_check_media(dev, 1);
|
smc_phy_check_media(dev, 1);
|
||||||
|
|
||||||
smc_phy_configure_exit:
|
smc_phy_configure_exit:
|
||||||
|
SMC_SELECT_BANK(2);
|
||||||
spin_unlock_irq(&lp->lock);
|
spin_unlock_irq(&lp->lock);
|
||||||
lp->work_pending = 0;
|
lp->work_pending = 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue