Commit 61a6c177 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] xirc2ps_cs irq return fix

From zwane

We shutdown the MAC part of the card and have interrupts disabled, interrupt
gets queued, we reenable interrupts after shutting down device, service the
interrupt, check status and get 0xff from powered down device.

No idea what he's talking about here, but apparently the irq return handling
isn't working out.  Just return IRQ_HANDLED all the time.
parent 37c90629
...@@ -1305,14 +1305,14 @@ xirc2ps_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -1305,14 +1305,14 @@ xirc2ps_interrupt(int irq, void *dev_id, struct pt_regs *regs)
u_char saved_page; u_char saved_page;
unsigned bytes_rcvd; unsigned bytes_rcvd;
unsigned int_status, eth_status, rx_status, tx_status; unsigned int_status, eth_status, rx_status, tx_status;
unsigned rsr, pktlen, handled = 1; unsigned rsr, pktlen;
ulong start_ticks = jiffies; /* fixme: jiffies rollover every 497 days ulong start_ticks = jiffies; /* fixme: jiffies rollover every 497 days
* is this something to worry about? * is this something to worry about?
* -- on a laptop? * -- on a laptop?
*/ */
if (!netif_device_present(dev)) if (!netif_device_present(dev))
return IRQ_NONE; return IRQ_HANDLED;
ioaddr = dev->base_addr; ioaddr = dev->base_addr;
if (lp->mohawk) { /* must disable the interrupt */ if (lp->mohawk) { /* must disable the interrupt */
...@@ -1330,7 +1330,6 @@ xirc2ps_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -1330,7 +1330,6 @@ xirc2ps_interrupt(int irq, void *dev_id, struct pt_regs *regs)
loop_entry: loop_entry:
if (int_status == 0xff) { /* card may be ejected */ if (int_status == 0xff) { /* card may be ejected */
DEBUG(3, "%s: interrupt %d for dead card\n", dev->name, irq); DEBUG(3, "%s: interrupt %d for dead card\n", dev->name, irq);
handled = 0;
goto leave; goto leave;
} }
eth_status = GetByte(XIRCREG_ESR); eth_status = GetByte(XIRCREG_ESR);
...@@ -1515,7 +1514,7 @@ xirc2ps_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -1515,7 +1514,7 @@ xirc2ps_interrupt(int irq, void *dev_id, struct pt_regs *regs)
* force an interrupt with this command: * force an interrupt with this command:
* PutByte(XIRCREG_CR, EnableIntr|ForceIntr); * PutByte(XIRCREG_CR, EnableIntr|ForceIntr);
*/ */
return IRQ_RETVAL(handled); return IRQ_HANDLED;
} /* xirc2ps_interrupt */ } /* xirc2ps_interrupt */
/*====================================================================*/ /*====================================================================*/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment