]> bbs.cooldavid.org Git - net-next-2.6.git/commit
sh: intc: Support virtual mappings for IRQ subgroups.
authorPaul Mundt <lethal@linux-sh.org>
Mon, 4 Oct 2010 19:47:03 +0000 (04:47 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 4 Oct 2010 19:47:03 +0000 (04:47 +0900)
commitc1e30ad98fe210688edca872686db4a715c2fb23
tree1ff151ccc9658d7a2d89da9cfc6a2d6817913a79
parent44629f57accccbb8e6d443246fe6f51b42f7f781
sh: intc: Support virtual mappings for IRQ subgroups.

Many interrupts that share a single mask source but are on different
hardware vectors will have an associated register tied to an INTEVT that
denotes the precise cause for the interrupt exception being triggered.

This introduces the concept of IRQ subgroups in the intc core, where
a virtual IRQ map is constructed for each of the pre-defined cause bits,
and a higher level chained handler takes control of the parent INTEVT.
This enables CPUs with heavily muxed IRQ vectors (especially across
disjoint blocks) to break things out in to a series of managed chained
handlers while being able to dynamically lookup and adopt the IRQs
created for them.

This is largely an opt-in interface, requiring CPUs to manually submit
IRQs for subgroup splitting, in addition to providing identifiers in
their enum maps that can be used for lazy lookup via the radix tree.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/kernel/irq.c
drivers/sh/intc.c
include/linux/sh_intc.h