Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1417836e authored by Atsushi Nemoto's avatar Atsushi Nemoto Committed by Ralf Baechle
Browse files

[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: default avatarAtsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 1603b5ac
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -103,9 +103,11 @@ void __init init_ioasic_irqs(int base)
	fast_iob();

	for (i = base; i < base + IO_INR_DMA; i++)
		set_irq_chip(i, &ioasic_irq_type);
		set_irq_chip_and_handler(i, &ioasic_irq_type,
					 handle_level_irq);
	for (; i < base + IO_IRQ_LINES; i++)
		set_irq_chip(i, &ioasic_dma_irq_type);
		set_irq_chip_and_handler(i, &ioasic_dma_irq_type,
					 handle_level_irq);

	ioasic_irq_base = base;
}
+1 −1
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ void __init init_kn02_irqs(int base)
	iob();

	for (i = base; i < base + KN02_IRQ_LINES; i++)
		set_irq_chip(i, &kn02_irq_type);
		set_irq_chip_and_handler(i, &kn02_irq_type, handle_level_irq);

	kn02_irq_base = base;
}
+2 −1
Original line number Diff line number Diff line
@@ -76,7 +76,8 @@ void emma2rh_irq_init(u32 irq_base)
	u32 i;

	for (i = irq_base; i < irq_base + NUM_EMMA2RH_IRQ; i++)
		set_irq_chip(i, &emma2rh_irq_controller);
		set_irq_chip_and_handler(i, &emma2rh_irq_controller,
					 handle_level_irq);

	emma2rh_irq_base = irq_base;
}
+2 −1
Original line number Diff line number Diff line
@@ -68,7 +68,8 @@ void emma2rh_sw_irq_init(u32 irq_base)
	u32 i;

	for (i = irq_base; i < irq_base + NUM_EMMA2RH_IRQ_SW; i++)
		set_irq_chip(i, &emma2rh_sw_irq_controller);
		set_irq_chip_and_handler(i, &emma2rh_sw_irq_controller,
					 handle_level_irq);

	emma2rh_sw_irq_base = irq_base;
}
+1 −1
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ void __init init_r4030_ints(void)
	int i;

	for (i = JAZZ_PARALLEL_IRQ; i <= JAZZ_TIMER_IRQ; i++)
		set_irq_chip(i, &r4030_irq_type);
		set_irq_chip_and_handler(i, &r4030_irq_type, handle_level_irq);

	r4030_write_reg16(JAZZ_IO_IRQ_ENABLE, 0);
	r4030_read_reg16(JAZZ_IO_IRQ_SOURCE);		/* clear pending IRQs */
Loading