Commit graph

10 commits

Author SHA1 Message Date
Paul Mundt
b59f9f9775 sh: intc: optimize intc IRQ lookup
This ensures that the sense/prio lists are sorted at registration time,
enabling us to use a simple binary search for an optimized lookup
(something that had been on the TODO for some time).

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-01-24 17:41:55 +09:00
Paul Mundt
3037764213 sh: intc: Use IRQ_SET_MASK_OK_NOCOPY for intc_set_affinity.
intc_set_affinity() updates the cpumask in place, so there's no need for
the upper layer to do this itself.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-01-24 16:55:57 +09:00
Paul Mundt
29775df10f sh: intc: Kill off superfluous irq_shutdown hooking.
This already gets handled via disable, as per the notes in linux/irq.h.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-01-24 15:38:57 +09:00
Paul Mundt
5bbda4e4ac sh: intc: Prefer IRQCHIP_SKIP_SET_WAKE over a dummy set_wake callback.
It's possible to use IRQCHIP_SKIP_SET_WAKE to get the behaviour that
we're after, without having to bother with a dummy ->set_wake() callback
for the IRQ chip.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-01-24 14:54:10 +09:00
Magnus Damm
7d377b170a sh: intc: Allow triggering on both edges for ARM SoCs
Enable IRQ_TYPE_EDGE_BOTH on all R/SH-Mobile ARM SoCs.
This hardware feature is supported by sh7367, sh7377,
sh7372 and sh73a0.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2011-11-05 00:57:48 +09:00
Magnus Damm
52e3124f24 sh: intc: Add IRQ trigger bit field check
R-Mobile SoCs such as sh73a0 include PINT blocks in INTC
that come with 2-bit IRQ trigger support. Add code to make
sure the bit width is checked so 4-bit only modes like for
instance EDGE_BOTH will fail for PINT.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2011-10-28 14:39:24 +09:00
Magnus Damm
9a14a92c93 sh: intc: enable both edges GPIO interrupts on sh7372
IRQ-capable GPIOs on sh7372 can be configured to produce interrupts on
both edges.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2011-07-21 16:53:24 +09:00
Magnus Damm
8a5a778665 sh: update INTC to clear IRQ sense valid flag
Clear the valid flag is in the INTC code.
Without this fix bit 7 of the sense register
is mistakenly set.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2011-01-19 19:02:35 +09:00
Paul Mundt
26599a94dc sh: intc: irq_data conversion.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2010-10-27 15:42:10 +09:00
Paul Mundt
2be6bb0c79 sh: intc: Split up the INTC code.
This splits up the sh intc core in to something more vaguely resembling
a subsystem. Most of the functionality was alread fairly well
compartmentalized, and there were only a handful of interdependencies
that needed to be resolved in the process.

This also serves as future-proofing for the genirq and sparseirq rework,
which will make some of the split out functionality wholly generic,
allowing things to be killed off in place with minimal migration pain.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2010-10-05 22:10:30 +09:00