demuxing irqs

Jon Smirl jonsmirl at gmail.com
Sun Sep 14 08:54:58 EST 2008


On Sat, Sep 13, 2008 at 6:41 PM, Roland Dreier <rdreier at cisco.com> wrote:
>  > Can someone point me at a simple example of how to demux irqs using
>  > the powerpc irq functions? I have eight devices on a single irq and I
>  > want to turn them into virtual irqs.
>
> Sorry about the previous reply.
>
> Anyway, what are you going to demux based on?  Do you have some other
> signal you can read in the interrupt dispatch code that tells you which
> device raised the interrupt?  What happens if two devices raise an
> interrupt at the same time?
>
> If you just have 8 interrupt lines wire-ORed together then you probably
> just need to register your interrupt handlers with IRQF_SHARED and run 8
> interrupt handlers on an interrupt.

The muxed interrupts are inside a SOC CPU.  For example eight GPIOs
can each individually be enabled to trigger hardware interrupt 7. When
I get hw interrupt 7 i want to demux it into 8 virtual interrupts.
There are eight bit registers for individually acking, enabling, etc
each of the eight multiplexed interrupts. With eight virutal
interrupts each user can register a different handler and isn't aware
the muxing is going on.

-- 
Jon Smirl
jonsmirl at gmail.com



More information about the Linuxppc-dev mailing list