Subject: Re: [PATCH] of_irq_to_resource now returns the virq

From: Benjamin Herrenschmidt <[email-masked]>
Date: Tue, 07 Nov 2006 11:04:22 +1100

On Mon, 2006-11-06 at 17:13 -0600, Andy Fleming wrote:
> Mostly this is to allow for error checking (check the return for NO_IRQ)
> 
> Signed-off-by: Andrew Fleming <[email-masked]>
> ---
> For 2.6.20
> 
>  include/asm-powerpc/prom.h |   13 ++++++++++---
>  1 files changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/include/asm-powerpc/prom.h b/include/asm-powerpc/prom.h
> index 933ba27..e9226e3 100644
> --- a/include/asm-powerpc/prom.h
> +++ b/include/asm-powerpc/prom.h
> @@ -334,10 +334,17 @@ extern int of_irq_map_one(struct device_
>  struct pci_dev;
>  extern int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq);
>  
> -static inline void of_irq_to_resource(struct device_node *dev, int index, struct resource *r)
> +static inline int of_irq_to_resource(struct device_node *dev, int index, struct resource *r)
>  {
> -	r->start = r->end = irq_of_parse_and_map(dev, index);
> -	r->flags = IORESOURCE_IRQ;
> +	int irq = irq_of_parse_and_map(dev, index);
> +
> +	/* Only dereference the resource if the irq is valid. */
> +	if (irq != NO_IRQ) {

What about if (irq != NO_IRQ && r) ?
 
> +		r->start = r->end = irq;
> +		r->flags = IORESOURCE_IRQ;
> +	}
> +
> +	return irq;
>  }

That way, if somebody doesn't care about the resource, just pass NULL,
though I suppose we should then also change the name of the function to
something like of_map_one_irq() ..

Ben.