summaryrefslogtreecommitdiffstats
path: root/kernel/irq
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2006-06-29 02:25:03 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-29 10:26:26 -0700
commit47c2a3aa4475d27073dd3c7e183fcc13f495c8f5 (patch)
treed151e03da804103753977c2c94e17b71104e3d35 /kernel/irq
parentf702d7013c7470284843a6370aaa53b8b75c5a40 (diff)
downloadlinux-47c2a3aa4475d27073dd3c7e183fcc13f495c8f5.tar.bz2
[PATCH] genirq: add chip->eoi(), fastack -> fasteoi
Clean up the fastack concept by turning it into fasteoi and introducing the ->eoi() method for chips. This also allows the cleanup of an i386 EOI quirk - now the quirk is cleanly separated from the pure ACK implementation. Signed-off-by: Ingo Molnar <mingo@elte.hu> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Roland Dreier <rolandd@cisco.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/irq')
-rw-r--r--kernel/irq/chip.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index a99047a324eb..4a0952d9458b 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -280,18 +280,18 @@ out:
}
/**
- * handle_fastack_irq - irq handler for transparent controllers
+ * handle_fasteoi_irq - irq handler for transparent controllers
* @irq: the interrupt number
* @desc: the interrupt description structure for this irq
* @regs: pointer to a register structure
*
- * Only a single callback will be issued to the chip: an ->ack()
+ * Only a single callback will be issued to the chip: an ->eoi()
* call when the interrupt has been serviced. This enables support
* for modern forms of interrupt handlers, which handle the flow
* details in hardware, transparently.
*/
void fastcall
-handle_fastack_irq(unsigned int irq, struct irq_desc *desc,
+handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc,
struct pt_regs *regs)
{
unsigned int cpu = smp_processor_id();
@@ -327,10 +327,7 @@ handle_fastack_irq(unsigned int irq, struct irq_desc *desc,
spin_lock(&desc->lock);
desc->status &= ~IRQ_INPROGRESS;
out:
- if (!(desc->status & IRQ_DISABLED))
- desc->chip->ack(irq);
- else
- desc->chip->mask(irq);
+ desc->chip->eoi(irq);
spin_unlock(&desc->lock);
}
@@ -510,19 +507,19 @@ handle_irq_name(void fastcall (*handle)(unsigned int, struct irq_desc *,
struct pt_regs *))
{
if (handle == handle_level_irq)
- return "level ";
- if (handle == handle_fastack_irq)
- return "level ";
+ return "level ";
+ if (handle == handle_fasteoi_irq)
+ return "fasteoi";
if (handle == handle_edge_irq)
- return "edge ";
+ return "edge ";
if (handle == handle_simple_irq)
- return "simple";
+ return "simple ";
#ifdef CONFIG_SMP
if (handle == handle_percpu_irq)
- return "percpu";
+ return "percpu ";
#endif
if (handle == handle_bad_irq)
- return "bad ";
+ return "bad ";
return NULL;
}