linux-mips
[Top] [All Lists]

Re: [PATCH] MIPS: Add some irq definitins required by OF

To: David Daney <ddaney@caviumnetworks.com>
Subject: Re: [PATCH] MIPS: Add some irq definitins required by OF
From: Grant Likely <grant.likely@secretlab.ca>
Date: Thu, 14 Oct 2010 19:27:54 -0600
Cc: linux-mips@linux-mips.org, ralf@linux-mips.org
In-reply-to: <1287090174-15601-1-git-send-email-ddaney@caviumnetworks.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <1287090174-15601-1-git-send-email-ddaney@caviumnetworks.com>
Sender: linux-mips-bounce@linux-mips.org
On Thu, Oct 14, 2010 at 3:02 PM, David Daney <ddaney@caviumnetworks.com> 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@caviumnetworks.com>
> Cc: Grant Likely <grant.likely@secretlab.ca>

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.

<Prev in Thread] Current Thread [Next in Thread>