diff options
author | Atsushi Nemoto <anemo@mba.ocn.ne.jp> | 2006-11-13 11:13:18 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2006-11-29 20:14:46 -0500 |
commit | 1417836e81c0ab8f5a0bfeafa90d3eaa41b2a067 (patch) | |
tree | 0274893cb78ca2e1bb85c3eee0c07a85e0b83d04 /arch/mips/sgi-ip27 | |
parent | 1603b5aca4f15b34848fb5594d0c7b6333b99144 (diff) |
[MIPS] use generic_handle_irq, handle_level_irq, handle_percpu_irq
Further incorporation of generic irq framework. Replacing __do_IRQ()
by proper flow handler would make the irq handling path a bit simpler
and faster.
* use generic_handle_irq() instead of __do_IRQ().
* use handle_level_irq for obvious level-type irq chips.
* use handle_percpu_irq for irqs marked as IRQ_PER_CPU.
* setup .eoi routine for irq chips possibly used with handle_percpu_irq.
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/sgi-ip27')
-rw-r--r-- | arch/mips/sgi-ip27/ip27-irq.c | 2 | ||||
-rw-r--r-- | arch/mips/sgi-ip27/ip27-timer.c | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c index 824320281a3a..5f8835b4e84a 100644 --- a/arch/mips/sgi-ip27/ip27-irq.c +++ b/arch/mips/sgi-ip27/ip27-irq.c | |||
@@ -352,7 +352,7 @@ static struct irq_chip bridge_irq_type = { | |||
352 | 352 | ||
353 | void __devinit register_bridge_irq(unsigned int irq) | 353 | void __devinit register_bridge_irq(unsigned int irq) |
354 | { | 354 | { |
355 | set_irq_chip(irq, &bridge_irq_type); | 355 | set_irq_chip_and_handler(irq, &bridge_irq_type, handle_level_irq); |
356 | } | 356 | } |
357 | 357 | ||
358 | int __devinit request_bridge_irq(struct bridge_controller *bc) | 358 | int __devinit request_bridge_irq(struct bridge_controller *bc) |
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c index 86ba7fc10c38..e5441c3a0b07 100644 --- a/arch/mips/sgi-ip27/ip27-timer.c +++ b/arch/mips/sgi-ip27/ip27-timer.c | |||
@@ -190,6 +190,7 @@ static struct irq_chip rt_irq_type = { | |||
190 | .mask = disable_rt_irq, | 190 | .mask = disable_rt_irq, |
191 | .mask_ack = disable_rt_irq, | 191 | .mask_ack = disable_rt_irq, |
192 | .unmask = enable_rt_irq, | 192 | .unmask = enable_rt_irq, |
193 | .eoi = enable_rt_irq, | ||
193 | .end = end_rt_irq, | 194 | .end = end_rt_irq, |
194 | }; | 195 | }; |
195 | 196 | ||
@@ -207,7 +208,7 @@ void __init plat_timer_setup(struct irqaction *irq) | |||
207 | if (irqno < 0) | 208 | if (irqno < 0) |
208 | panic("Can't allocate interrupt number for timer interrupt"); | 209 | panic("Can't allocate interrupt number for timer interrupt"); |
209 | 210 | ||
210 | set_irq_chip(irqno, &rt_irq_type); | 211 | set_irq_chip_and_handler(irqno, &rt_irq_type, handle_percpu_irq); |
211 | 212 | ||
212 | /* over-write the handler, we use our own way */ | 213 | /* over-write the handler, we use our own way */ |
213 | irq->handler = no_action; | 214 | irq->handler = no_action; |