]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
pinctrl: nomadik: mark GPIO lines used for IRQ
authorLinus Walleij <linus.walleij@linaro.org>
Fri, 11 Oct 2013 09:30:25 +0000 (11:30 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 16 Oct 2013 07:59:55 +0000 (09:59 +0200)
When an IRQ is started on a GPIO line, mark this GPIO as IRQ in
the gpiolib so we can keep track of the usage centrally.

Cc: Enric Balletbo i Serra <eballetbo@gmail.com>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-nomadik.c

index d7c3ae300fa716555c37dd906f7ed4e74c528393..7111c3b591303cec2f3daa36d22329989c0847b9 100644 (file)
@@ -634,6 +634,10 @@ static unsigned int nmk_gpio_irq_startup(struct irq_data *d)
 {
        struct nmk_gpio_chip *nmk_chip = irq_data_get_irq_chip_data(d);
 
+       if (gpio_lock_as_irq(&nmk_chip->chip, d->hwirq))
+               dev_err(nmk_chip->chip.dev,
+                       "unable to lock HW IRQ %lu for IRQ\n",
+                       d->hwirq);
        clk_enable(nmk_chip->clk);
        nmk_gpio_irq_unmask(d);
        return 0;
@@ -645,6 +649,7 @@ static void nmk_gpio_irq_shutdown(struct irq_data *d)
 
        nmk_gpio_irq_mask(d);
        clk_disable(nmk_chip->clk);
+       gpio_unlock_as_irq(&nmk_chip->chip, d->hwirq);
 }
 
 static struct irq_chip nmk_gpio_irq_chip = {