Commit caebd9db authored by Javier Martinez Canillas's avatar Javier Martinez Canillas Committed by Linus Walleij

gpio: omap: convert to use irq_domain_add_simple()

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: default avatarJavier Martinez Canillas <javier.martinez@collabora.co.uk>
Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: default avatarTony Lindgren <tony@atomide.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 0815c2c0
...@@ -1138,9 +1138,7 @@ static int omap_gpio_probe(struct platform_device *pdev) ...@@ -1138,9 +1138,7 @@ static int omap_gpio_probe(struct platform_device *pdev)
const struct omap_gpio_platform_data *pdata; const struct omap_gpio_platform_data *pdata;
struct resource *res; struct resource *res;
struct gpio_bank *bank; struct gpio_bank *bank;
#ifdef CONFIG_ARCH_OMAP1 int irq_base = 0;
int irq_base;
#endif
match = of_match_device(of_match_ptr(omap_gpio_match), dev); match = of_match_device(of_match_ptr(omap_gpio_match), dev);
...@@ -1185,21 +1183,16 @@ static int omap_gpio_probe(struct platform_device *pdev) ...@@ -1185,21 +1183,16 @@ static int omap_gpio_probe(struct platform_device *pdev)
#ifdef CONFIG_ARCH_OMAP1 #ifdef CONFIG_ARCH_OMAP1
/* /*
* REVISIT: Once we have OMAP1 supporting SPARSE_IRQ, we can drop * REVISIT: Once we have OMAP1 supporting SPARSE_IRQ, we can drop
* irq_alloc_descs() and irq_domain_add_legacy() and just use a * irq_alloc_descs() since a base IRQ offset will no longer be needed.
* linear IRQ domain mapping for all OMAP platforms.
*/ */
irq_base = irq_alloc_descs(-1, 0, bank->width, 0); irq_base = irq_alloc_descs(-1, 0, bank->width, 0);
if (irq_base < 0) { if (irq_base < 0) {
dev_err(dev, "Couldn't allocate IRQ numbers\n"); dev_err(dev, "Couldn't allocate IRQ numbers\n");
return -ENODEV; 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 #endif
bank->domain = irq_domain_add_simple(node, bank->width, irq_base,
&irq_domain_simple_ops, NULL);
if (!bank->domain) { if (!bank->domain) {
dev_err(dev, "Couldn't register an IRQ domain\n"); dev_err(dev, "Couldn't register an IRQ domain\n");
return -ENODEV; return -ENODEV;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment