Commit 23393d49 authored by Rob Herring's avatar Rob Herring Committed by Linus Walleij

gpio: kill off set_irq_flags usage

set_irq_flags is ARM specific with custom flags which have genirq
equivalents. Convert drivers to use the genirq interfaces directly, so we
can kill off set_irq_flags. The translation of flags is as follows:

IRQF_VALID -> !IRQ_NOREQUEST
IRQF_PROBE -> !IRQ_NOPROBE
IRQF_NOAUTOEN -> IRQ_NOAUTOEN

For IRQs managed by an irqdomain, the irqdomain core code handles clearing
and setting IRQ_NOREQUEST already, so there is no need to do this in
.map() functions and we can simply remove the set_irq_flags calls. Some
users also modify IRQ_NOPROBE and this has been maintained although it
is not clear that is really needed as most platforms don't use probing.
There appears to be a great deal of blind copy and paste of this code.
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Cc: Michael Hennerich <michael.hennerich@analog.com>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Ray Jui <rjui@broadcom.com>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: linux-gpio@vger.kernel.org
Cc: bcm-kernel-feedback-list@broadcom.com
Cc: linux-tegra@vger.kernel.org
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent d705073c
...@@ -305,15 +305,7 @@ static int adp5588_irq_setup(struct adp5588_gpio *dev) ...@@ -305,15 +305,7 @@ static int adp5588_irq_setup(struct adp5588_gpio *dev)
irq_set_chip_and_handler(irq, &adp5588_irq_chip, irq_set_chip_and_handler(irq, &adp5588_irq_chip,
handle_level_irq); handle_level_irq);
irq_set_nested_thread(irq, 1); irq_set_nested_thread(irq, 1);
#ifdef CONFIG_ARM irq_modify_status(irq, IRQ_NOREQUEST, IRQ_NOPROBE);
/*
* ARM needs us to explicitly flag the IRQ as VALID,
* once we do so, it will also set the noprobe.
*/
set_irq_flags(irq, IRQF_VALID);
#else
irq_set_noprobe(irq);
#endif
} }
ret = request_threaded_irq(client->irq, ret = request_threaded_irq(client->irq,
......
...@@ -525,11 +525,7 @@ static int bcm_kona_gpio_irq_map(struct irq_domain *d, unsigned int irq, ...@@ -525,11 +525,7 @@ static int bcm_kona_gpio_irq_map(struct irq_domain *d, unsigned int irq,
return ret; return ret;
irq_set_lockdep_class(irq, &gpio_lock_class); irq_set_lockdep_class(irq, &gpio_lock_class);
irq_set_chip_and_handler(irq, &bcm_gpio_irq_chip, handle_simple_irq); irq_set_chip_and_handler(irq, &bcm_gpio_irq_chip, handle_simple_irq);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID);
#else
irq_set_noprobe(irq); irq_set_noprobe(irq);
#endif
return 0; return 0;
} }
...@@ -644,17 +640,6 @@ static int bcm_kona_gpio_probe(struct platform_device *pdev) ...@@ -644,17 +640,6 @@ static int bcm_kona_gpio_probe(struct platform_device *pdev)
dev_err(dev, "Couldn't add GPIO chip -- %d\n", ret); dev_err(dev, "Couldn't add GPIO chip -- %d\n", ret);
goto err_irq_domain; goto err_irq_domain;
} }
for (i = 0; i < chip->ngpio; i++) {
int irq = bcm_kona_gpio_to_irq(chip, i);
irq_set_lockdep_class(irq, &gpio_lock_class);
irq_set_chip_and_handler(irq, &bcm_gpio_irq_chip,
handle_simple_irq);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID);
#else
irq_set_noprobe(irq);
#endif
}
for (i = 0; i < kona_gpio->num_bank; i++) { for (i = 0; i < kona_gpio->num_bank; i++) {
bank = &kona_gpio->banks[i]; bank = &kona_gpio->banks[i];
irq_set_chained_handler_and_data(bank->irq, irq_set_chained_handler_and_data(bank->irq,
......
...@@ -423,7 +423,6 @@ davinci_gpio_irq_map(struct irq_domain *d, unsigned int irq, ...@@ -423,7 +423,6 @@ davinci_gpio_irq_map(struct irq_domain *d, unsigned int irq,
irq_set_irq_type(irq, IRQ_TYPE_NONE); irq_set_irq_type(irq, IRQ_TYPE_NONE);
irq_set_chip_data(irq, (__force void *)g); irq_set_chip_data(irq, (__force void *)g);
irq_set_handler_data(irq, (void *)__gpio_mask(hw)); irq_set_handler_data(irq, (void *)__gpio_mask(hw));
set_irq_flags(irq, IRQF_VALID);
return 0; return 0;
} }
......
...@@ -261,7 +261,6 @@ static int em_gio_irq_domain_map(struct irq_domain *h, unsigned int irq, ...@@ -261,7 +261,6 @@ static int em_gio_irq_domain_map(struct irq_domain *h, unsigned int irq,
irq_set_chip_data(irq, h->host_data); irq_set_chip_data(irq, h->host_data);
irq_set_chip_and_handler(irq, &p->irq_chip, handle_level_irq); irq_set_chip_and_handler(irq, &p->irq_chip, handle_level_irq);
set_irq_flags(irq, IRQF_VALID); /* kill me now */
return 0; return 0;
} }
......
...@@ -236,7 +236,7 @@ static void ep93xx_gpio_init_irq(void) ...@@ -236,7 +236,7 @@ static void ep93xx_gpio_init_irq(void)
gpio_irq <= gpio_to_irq(EP93XX_GPIO_LINE_MAX_IRQ); ++gpio_irq) { gpio_irq <= gpio_to_irq(EP93XX_GPIO_LINE_MAX_IRQ); ++gpio_irq) {
irq_set_chip_and_handler(gpio_irq, &ep93xx_gpio_irq_chip, irq_set_chip_and_handler(gpio_irq, &ep93xx_gpio_irq_chip,
handle_level_irq); handle_level_irq);
set_irq_flags(gpio_irq, IRQF_VALID); irq_clear_status_flags(gpio_irq, IRQ_NOREQUEST);
} }
irq_set_chained_handler(IRQ_EP93XX_GPIO_AB, irq_set_chained_handler(IRQ_EP93XX_GPIO_AB,
......
...@@ -281,12 +281,7 @@ static int grgpio_irq_map(struct irq_domain *d, unsigned int irq, ...@@ -281,12 +281,7 @@ static int grgpio_irq_map(struct irq_domain *d, unsigned int irq,
irq_set_chip_data(irq, priv); irq_set_chip_data(irq, priv);
irq_set_chip_and_handler(irq, &grgpio_irq_chip, irq_set_chip_and_handler(irq, &grgpio_irq_chip,
handle_simple_irq); handle_simple_irq);
irq_clear_status_flags(irq, IRQ_NOREQUEST);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID);
#else
irq_set_noprobe(irq); irq_set_noprobe(irq);
#endif
return ret; return ret;
} }
...@@ -301,9 +296,6 @@ static void grgpio_irq_unmap(struct irq_domain *d, unsigned int irq) ...@@ -301,9 +296,6 @@ static void grgpio_irq_unmap(struct irq_domain *d, unsigned int irq)
int ngpio = priv->bgc.gc.ngpio; int ngpio = priv->bgc.gc.ngpio;
int i; int i;
#ifdef CONFIG_ARM
set_irq_flags(irq, 0);
#endif
irq_set_chip_and_handler(irq, NULL, NULL); irq_set_chip_and_handler(irq, NULL, NULL);
irq_set_chip_data(irq, NULL); irq_set_chip_data(irq, NULL);
......
...@@ -507,11 +507,7 @@ static int mcp23s08_irq_setup(struct mcp23s08 *mcp) ...@@ -507,11 +507,7 @@ static int mcp23s08_irq_setup(struct mcp23s08 *mcp)
irq_set_chip_data(irq, mcp); irq_set_chip_data(irq, mcp);
irq_set_chip(irq, &mcp23s08_irq_chip); irq_set_chip(irq, &mcp23s08_irq_chip);
irq_set_nested_thread(irq, true); irq_set_nested_thread(irq, true);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID);
#else
irq_set_noprobe(irq); irq_set_noprobe(irq);
#endif
} }
return 0; return 0;
} }
......
...@@ -355,7 +355,6 @@ static int msm_gpio_irq_domain_map(struct irq_domain *d, unsigned int irq, ...@@ -355,7 +355,6 @@ static int msm_gpio_irq_domain_map(struct irq_domain *d, unsigned int irq,
irq_set_lockdep_class(irq, &msm_gpio_lock_class); irq_set_lockdep_class(irq, &msm_gpio_lock_class);
irq_set_chip_and_handler(irq, &msm_gpio_irq_chip, irq_set_chip_and_handler(irq, &msm_gpio_irq_chip,
handle_level_irq); handle_level_irq);
set_irq_flags(irq, IRQF_VALID);
return 0; return 0;
} }
......
...@@ -524,7 +524,7 @@ static int pxa_irq_domain_map(struct irq_domain *d, unsigned int irq, ...@@ -524,7 +524,7 @@ static int pxa_irq_domain_map(struct irq_domain *d, unsigned int irq,
{ {
irq_set_chip_and_handler(irq, &pxa_muxed_gpio_chip, irq_set_chip_and_handler(irq, &pxa_muxed_gpio_chip,
handle_edge_irq); handle_edge_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); irq_set_noprobe(irq);
return 0; return 0;
} }
...@@ -643,20 +643,20 @@ static int pxa_gpio_probe(struct platform_device *pdev) ...@@ -643,20 +643,20 @@ static int pxa_gpio_probe(struct platform_device *pdev)
irq = gpio_to_irq(0); irq = gpio_to_irq(0);
irq_set_chip_and_handler(irq, &pxa_muxed_gpio_chip, irq_set_chip_and_handler(irq, &pxa_muxed_gpio_chip,
handle_edge_irq); handle_edge_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
} }
if (irq1 > 0) { if (irq1 > 0) {
irq = gpio_to_irq(1); irq = gpio_to_irq(1);
irq_set_chip_and_handler(irq, &pxa_muxed_gpio_chip, irq_set_chip_and_handler(irq, &pxa_muxed_gpio_chip,
handle_edge_irq); handle_edge_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
} }
for (irq = gpio_to_irq(gpio_offset); for (irq = gpio_to_irq(gpio_offset);
irq <= gpio_to_irq(pxa_last_gpio); irq++) { irq <= gpio_to_irq(pxa_last_gpio); irq++) {
irq_set_chip_and_handler(irq, &pxa_muxed_gpio_chip, irq_set_chip_and_handler(irq, &pxa_muxed_gpio_chip,
handle_edge_irq); handle_edge_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
} }
} }
......
...@@ -155,7 +155,7 @@ static int sa1100_gpio_irqdomain_map(struct irq_domain *d, ...@@ -155,7 +155,7 @@ static int sa1100_gpio_irqdomain_map(struct irq_domain *d,
{ {
irq_set_chip_and_handler(irq, &sa1100_gpio_irq_chip, irq_set_chip_and_handler(irq, &sa1100_gpio_irq_chip,
handle_edge_irq); handle_edge_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); irq_set_noprobe(irq);
return 0; return 0;
} }
......
...@@ -346,7 +346,7 @@ static void gsta_alloc_irq_chip(struct gsta_gpio *chip) ...@@ -346,7 +346,7 @@ static void gsta_alloc_irq_chip(struct gsta_gpio *chip)
i = chip->irq_base + j; i = chip->irq_base + j;
irq_set_chip_and_handler(i, &ct->chip, ct->handler); irq_set_chip_and_handler(i, &ct->chip, ct->handler);
irq_set_chip_data(i, gc); irq_set_chip_data(i, gc);
irq_modify_status(i, IRQ_NOREQUEST | IRQ_NOPROBE, 0); irq_clear_status_flags(i, IRQ_NOREQUEST | IRQ_NOPROBE);
} }
gc->irq_cnt = i - gc->irq_base; gc->irq_cnt = i - gc->irq_base;
} }
......
...@@ -507,7 +507,6 @@ static int tegra_gpio_probe(struct platform_device *pdev) ...@@ -507,7 +507,6 @@ static int tegra_gpio_probe(struct platform_device *pdev)
irq_set_chip_data(irq, bank); irq_set_chip_data(irq, bank);
irq_set_chip_and_handler(irq, &tegra_gpio_irq_chip, irq_set_chip_and_handler(irq, &tegra_gpio_irq_chip,
handle_simple_irq); handle_simple_irq);
set_irq_flags(irq, IRQF_VALID);
} }
for (i = 0; i < tegra_gpio_bank_count; i++) { for (i = 0; i < tegra_gpio_bank_count; i++) {
......
...@@ -295,9 +295,7 @@ static int timbgpio_probe(struct platform_device *pdev) ...@@ -295,9 +295,7 @@ static int timbgpio_probe(struct platform_device *pdev)
irq_set_chip_and_handler(tgpio->irq_base + i, irq_set_chip_and_handler(tgpio->irq_base + i,
&timbgpio_irqchip, handle_simple_irq); &timbgpio_irqchip, handle_simple_irq);
irq_set_chip_data(tgpio->irq_base + i, tgpio); irq_set_chip_data(tgpio->irq_base + i, tgpio);
#ifdef CONFIG_ARM irq_clear_status_flags(tgpio->irq_base + i, IRQ_NOREQUEST | IRQ_NOPROBE);
set_irq_flags(tgpio->irq_base + i, IRQF_VALID | IRQF_PROBE);
#endif
} }
irq_set_chained_handler_and_data(irq, timbgpio_irq, tgpio); irq_set_chained_handler_and_data(irq, timbgpio_irq, tgpio);
......
...@@ -486,11 +486,8 @@ static int gpiochip_irq_map(struct irq_domain *d, unsigned int irq, ...@@ -486,11 +486,8 @@ static int gpiochip_irq_map(struct irq_domain *d, unsigned int irq,
/* Chips that can sleep need nested thread handlers */ /* Chips that can sleep need nested thread handlers */
if (chip->can_sleep && !chip->irq_not_threaded) if (chip->can_sleep && !chip->irq_not_threaded)
irq_set_nested_thread(irq, 1); irq_set_nested_thread(irq, 1);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID);
#else
irq_set_noprobe(irq); irq_set_noprobe(irq);
#endif
/* /*
* No set-up of the hardware will happen if IRQ_TYPE_NONE * No set-up of the hardware will happen if IRQ_TYPE_NONE
* is passed as default type. * is passed as default type.
...@@ -505,9 +502,6 @@ static void gpiochip_irq_unmap(struct irq_domain *d, unsigned int irq) ...@@ -505,9 +502,6 @@ static void gpiochip_irq_unmap(struct irq_domain *d, unsigned int irq)
{ {
struct gpio_chip *chip = d->host_data; struct gpio_chip *chip = d->host_data;
#ifdef CONFIG_ARM
set_irq_flags(irq, 0);
#endif
if (chip->can_sleep) if (chip->can_sleep)
irq_set_nested_thread(irq, 0); irq_set_nested_thread(irq, 0);
irq_set_chip_and_handler(irq, NULL, NULL); irq_set_chip_and_handler(irq, NULL, NULL);
......
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