[PATCH 1/5] gpio: omap: convert to use irq_domain_add_simple()

Santosh Shilimkar santosh.shilimkar at ti.com
Thu Apr 10 10:35:14 PDT 2014


On Sunday 06 April 2014 10:58 AM, Javier Martinez Canillas wrote:
> The GPIO OMAP driver supports different OMAP SoC families and
> not all of them have the needed support to use the linear IRQ
> domain mapping like OMAP1 that use the legacy domain mapping.
> 
> But this special check is not necessary since the simple IRQ
> domain mapping is able to handle both cases. Having a zero
> IRQ offset will be interpreted as a linear domain case while
> a non-zero value will be interpreted as a legacy domain case.
> 
> Signed-off-by: Javier Martinez Canillas <javier.martinez at collabora.co.uk>
> ---
>  drivers/gpio/gpio-omap.c | 15 ++++-----------
>  1 file changed, 4 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
> index 19b886c..3ee9b8d 100644
> --- a/drivers/gpio/gpio-omap.c
> +++ b/drivers/gpio/gpio-omap.c
> @@ -1138,9 +1138,7 @@ static int omap_gpio_probe(struct platform_device *pdev)
>  	const struct omap_gpio_platform_data *pdata;
>  	struct resource *res;
>  	struct gpio_bank *bank;
> -#ifdef CONFIG_ARCH_OMAP1
> -	int irq_base;
> -#endif
> +	int irq_base = 0;
>  
>  	match = of_match_device(of_match_ptr(omap_gpio_match), dev);
>  
> @@ -1185,21 +1183,16 @@ static int omap_gpio_probe(struct platform_device *pdev)
>  #ifdef CONFIG_ARCH_OMAP1
>  	/*
>  	 * REVISIT: Once we have OMAP1 supporting SPARSE_IRQ, we can drop
> -	 * irq_alloc_descs() and irq_domain_add_legacy() and just use a
> -	 * linear IRQ domain mapping for all OMAP platforms.
> +	 * irq_alloc_descs() since a base IRQ offset will no longer be needed.
>  	 */
>  	irq_base = irq_alloc_descs(-1, 0, bank->width, 0);
>  	if (irq_base < 0) {
>  		dev_err(dev, "Couldn't allocate IRQ numbers\n");
>  		return -ENODEV;
>  	}
> -
> -	bank->domain = irq_domain_add_legacy(node, bank->width, irq_base,
> -					     0, &irq_domain_simple_ops, NULL);
> -#else
> -	bank->domain = irq_domain_add_linear(node, bank->width,
> -					     &irq_domain_simple_ops, NULL);
>  #endif
> +	bank->domain = irq_domain_add_simple(node, bank->width, irq_base,
> +					     &irq_domain_simple_ops, NULL);
>  	if (!bank->domain) {
>  		dev_err(dev, "Couldn't register an IRQ domain\n");
>  		return -ENODEV;
> 
Looks good.
Acked-by: Santosh Shilimkar <santosh.shilimkar at ti.com>




More information about the linux-arm-kernel mailing list