Re: [RFC PATCH 11/19] powerpc: gamecube/wii: flipper interrupt controller support
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2009-11-26 23:38:20
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2009-11-26 23:38:20
On Fri, 2009-11-27 at 00:00 +0100, Segher Boessenkool wrote:
quoted
quoted
quoted
+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_IGNOREWhy 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.