gpio: stmpe: drop references to "virtual" IRQ, fix bug
authorLinus Walleij <linus.walleij@linaro.org>
Fri, 11 Oct 2013 17:51:38 +0000 (19:51 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 16 Oct 2013 07:59:53 +0000 (09:59 +0200)
Rename the argument "virq" to just "irq", this IRQ isn't any
more "virtual" than any other Linux IRQ number, we use "hwirq"
for the actual hw-numbers, "virq" is just bogus.

When doing this I see that the hwirq argument is used
for mapping rather than the Linux IRQ in the map function.
This doesn't look right. Use the Linux IRQ instead.

I cannot test this patch so I don't know if the mapping change
is correct, however since absolutely every other driver does
it the other way around this doesn't look sound at all. Please
help out with review.

Cc: Vipul Kumar Samar <vipulkumar.samar@st.com>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Gabriel Fernandez <gabriel.fernandez@st.com>
Cc: Jean-Nicolas Graux <jean-nicolas.graux@st.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-stmpe.c

index b33bad1bb4df0400f6024c46fef0ccfe072061b8..2647e243d4718075a9a3135366ae512df589ae51 100644 (file)
@@ -254,9 +254,10 @@ static irqreturn_t stmpe_gpio_irq(int irq, void *dev)
                while (stat) {
                        int bit = __ffs(stat);
                        int line = bank * 8 + bit;
-                       int virq = irq_find_mapping(stmpe_gpio->domain, line);
+                       int child_irq = irq_find_mapping(stmpe_gpio->domain,
+                                                        line);
 
-                       handle_nested_irq(virq);
+                       handle_nested_irq(child_irq);
                        stat &= ~(1 << bit);
                }
 
@@ -271,7 +272,7 @@ static irqreturn_t stmpe_gpio_irq(int irq, void *dev)
        return IRQ_HANDLED;
 }
 
-static int stmpe_gpio_irq_map(struct irq_domain *d, unsigned int virq,
+static int stmpe_gpio_irq_map(struct irq_domain *d, unsigned int irq,
                              irq_hw_number_t hwirq)
 {
        struct stmpe_gpio *stmpe_gpio = d->host_data;
@@ -279,26 +280,26 @@ static int stmpe_gpio_irq_map(struct irq_domain *d, unsigned int virq,
        if (!stmpe_gpio)
                return -EINVAL;
 
-       irq_set_chip_data(hwirq, stmpe_gpio);
-       irq_set_chip_and_handler(hwirq, &stmpe_gpio_irq_chip,
+       irq_set_chip_data(irq, stmpe_gpio);
+       irq_set_chip_and_handler(irq, &stmpe_gpio_irq_chip,
                                 handle_simple_irq);
-       irq_set_nested_thread(hwirq, 1);
+       irq_set_nested_thread(irq, 1);
 #ifdef CONFIG_ARM
-       set_irq_flags(hwirq, IRQF_VALID);
+       set_irq_flags(irq, IRQF_VALID);
 #else
-       irq_set_noprobe(hwirq);
+       irq_set_noprobe(irq);
 #endif
 
        return 0;
 }
 
-static void stmpe_gpio_irq_unmap(struct irq_domain *d, unsigned int virq)
+static void stmpe_gpio_irq_unmap(struct irq_domain *d, unsigned int irq)
 {
 #ifdef CONFIG_ARM
-       set_irq_flags(virq, 0);
+       set_irq_flags(irq, 0);
 #endif
-       irq_set_chip_and_handler(virq, NULL, NULL);
-       irq_set_chip_data(virq, NULL);
+       irq_set_chip_and_handler(irq, NULL, NULL);
+       irq_set_chip_data(irq, NULL);
 }
 
 static const struct irq_domain_ops stmpe_gpio_irq_simple_ops = {