On Thu, Oct 14, 2010 at 3:02 PM, David Daney <ddaney@xxxxxxxxxxxxxxxxxx> wrote: > Using the forthcoming open firmware (OF) on mips patches, requires > that several interrupt related definitions be added. > > In the future we may want to allow some sort of override for > irq_create_mapping, but for now it is just supplies an identity > mapping. > > Signed-off-by: David Daney <ddaney@xxxxxxxxxxxxxxxxxx> > Cc: Grant Likely <grant.likely@xxxxxxxxxxxx> Hi David, If you try my current next-devicetree branch then this patch should not be necessary. I was able to build the mips patch before I posted it. > --- > arch/mips/include/asm/irq.h | 33 +++++++++++++++++++++++++++++++++ > 1 files changed, 33 insertions(+), 0 deletions(-) > > diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h > index dea4aed..f109e67 100644 > --- a/arch/mips/include/asm/irq.h > +++ b/arch/mips/include/asm/irq.h > @@ -16,6 +16,39 @@ > > #include <irq.h> > > +#define NO_IRQ UINT_MAX Really? The verdict came down a long time ago that 0 is to be the value that means no irq, and only a few architectures still define NO_IRQ as -1. It is assumed that the architectures which do not define NO_IRQ use 0 as the invalid value. Mostly notably x86 does not define NO_IRQ, and Linus nack'd the patch to add it. linux-2.6$ git grep '#define[ \t]*NO_IRQ[^_]' arch/arm/include/asm/irq.h:#define NO_IRQ ((unsigned int)(-1)) arch/microblaze/include/asm/irq.h:#define NO_IRQ (-1) arch/mn10300/include/asm/irq.h:#define NO_IRQ INT_MAX arch/parisc/include/asm/irq.h:#define NO_IRQ (-1) arch/powerpc/include/asm/irq.h:#define NO_IRQ (0) arch/xtensa/variants/s6000/include/variant/irq.h:#define NO_IRQ (-1) drivers/input/touchscreen/ucb1400_ts.c:#define NO_IRQ 0 drivers/of/irq.c:#define NO_IRQ 0 drivers/pcmcia/pd6729.c:#define NO_IRQ ((unsigned int)(0)) drivers/rtc/rtc-m48t59.c:#define NO_IRQ (-1) drivers/scsi/arm/fas216.h:#define NO_IRQ 255 As far as I can tell, only arm, microblaze, mn10200, parisc, and xtensa define NO_IRQ to -1, and of those I've got a pending patch to change Microblaze to use 0. arm is the hard holdout because of all the legacy board ports. > + > +/* > + * This type is the placeholder for a hardware interrupt number. It > + * has to be big enough to enclose whatever representation is used by > + * a given platform. > + */ > +typedef unsigned long irq_hw_number_t; > + > +static inline void irq_dispose_mapping(unsigned int virq) > +{ > + return; > +} > + > +struct irq_host; > + > +/** > + * irq_create_mapping - Map a hardware interrupt into linux virq space > + * @host: host owning this hardware interrupt or NULL for default host > + * @hwirq: hardware irq number in that host space > + * > + * Only one mapping per hardware interrupt is permitted. Returns a linux > + * virq number. > + * If the sense/trigger is to be specified, set_irq_type() should be called > + * on the number returned from that call. > + */ > +static inline unsigned int irq_create_mapping(struct irq_host *host, > + irq_hw_number_t hwirq) > +{ > + /* For now, an identity mapping. */ > + return (unsigned int)hwirq; > +} > + > #ifdef CONFIG_I8259 > static inline int irq_canonicalize(int irq) > { > -- > 1.7.2.3 > > -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd.