r6040: restore MIER register correctly when IRQ line is shared
When the r6040 device IRQ line is shared we will enter the driver interrupt service routine, mask off the device interrupt enable register (MIER) and return with IRQ_NONE, we would then leave the device with interrupts disabled, this patch fixes that issue. Reported-by: Steve Holland <sdh4@iastate.edu> Signed-off-by: Joe Chou <joe.chou@rdc.com.tw> Signed-off-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
345aa03120
commit
35976d4d55
@@ -704,8 +704,11 @@ static irqreturn_t r6040_interrupt(int irq, void *dev_id)
|
|||||||
/* Read MISR status and clear */
|
/* Read MISR status and clear */
|
||||||
status = ioread16(ioaddr + MISR);
|
status = ioread16(ioaddr + MISR);
|
||||||
|
|
||||||
if (status == 0x0000 || status == 0xffff)
|
if (status == 0x0000 || status == 0xffff) {
|
||||||
|
/* Restore RDC MAC interrupt */
|
||||||
|
iowrite16(misr, ioaddr + MIER);
|
||||||
return IRQ_NONE;
|
return IRQ_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
/* RX interrupt request */
|
/* RX interrupt request */
|
||||||
if (status & RX_INTS) {
|
if (status & RX_INTS) {
|
||||||
|
Reference in New Issue
Block a user