[RFC PATCH 11/19] powerpc: gamecube/wii: flipper interrupt controller support
Benjamin Herrenschmidt
benh at kernel.crashing.org
Fri Nov 27 10:38:13 EST 2009
On Fri, 2009-11-27 at 00:00 +0100, Segher Boessenkool wrote:
> >>> +unsigned int flipper_pic_get_irq(void)
> >>> +{
> >>> + void __iomem *io_base = flipper_irq_host->host_data;
> >>> + int irq;
> >>> + u32 irq_status;
> >>> +
> >>> + irq_status = in_be32(io_base + FLIPPER_ICR) &
> >>> + in_be32(io_base + FLIPPER_IMR);
> >>> + if (irq_status == 0)
> >>> + return -1; /* no more IRQs pending */
> >>
> >> NO_IRQ_IGNORE
> >
> > Why no just 0 ? (aka NO_IRQ)
> >
> > Or do you know you are getting lots of spurrious that you don't
> > want to
> > account ?
>
> IRQ #0 is a valid IRQ here (graphics error IIRC), it should be
> remapped I suppose?
All interrupts are remapped. _get_irq() should call the appropriate
revmap function to remap the HW number into a linux number. 0 is never a
valid linux number and means "no interrupt".
In the above case, it would seem to me that what he gets is a bitfield
so 0 means no interrupt. Hence the code should be:
if (irq_status == 0)
return 0;
Then, find first bit and return the linear revmap... Just look at what
the old pmac_pic does, same stuff basically.
Cheers,
Ben.
More information about the Linuxppc-dev
mailing list