MIPS: RB532: Add set_type() function to IRQ struct.
commit96d03f866eab66b8b5f686c98b6bf9cfe5bc1eb2
authorPhil Sutter <n0-1@freewrt.org>
Fri, 28 Nov 2008 19:45:10 +0000 (28 20:45 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Thu, 29 Jan 2009 16:37:41 +0000 (29 16:37 +0000)
tree4f59f9aa1105c89f9d2e75771d9720fea040e2a2
parent9d01b4a718a4391ad7ba31de58d7c35c991e72ee
MIPS: RB532: Add set_type() function to IRQ struct.

Interrupt Group 4 mapps the GPIO pins enabled as interrupt sources;
add defines to make this clear when addressing them later in code.

The mapped GPIOs support triggering on either level high or low. To
achieve this, the set_type() function calls rb532_gpio_set_ilevel() for
interrupts of the above mentioned group.

As there is no way to alter the triggering characteristics of the other
interrupts, accept level triggering on status high only. (This is just a
guess; but as the system boots fine and interrupt-driven devices (e.g.
serial console) work with no implications, it seems to be right.)

To clear a GPIO mapped IRQ, the source has to be cleared (i.e., the
interrupt status bit of the corresponding GPIO pin). This is done inside
rb532_disable_irq().

After applying these changes I could undo most of my former "fixes" to
pata-rb532-cf. Particularly all interrupt handling can be done
generically via set_irq_type() as it was before.

Signed-off-by: Phil Sutter <n0-1@freewrt.org>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/include/asm/mach-rc32434/irq.h
arch/mips/rb532/irq.c