pinctrl: lantiq: Implement gpio_chip.to_irq
authorJohn Crispin <blogic@openwrt.org>
Fri, 4 Dec 2015 10:05:44 +0000 (11:05 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 10 Dec 2015 23:05:19 +0000 (00:05 +0100)
Some drivers require a way to translate GPIO pins to their IRQ numbers.

This patch adds the .to_irq() gpiolib callback to the pinctrl-xway
driver, which returns an IRQ mapping for a given GPIO pin.

Signed-off-by: John Crispin <blogic@openwrt.org>
Signed-off-by: Martin Schiller <mschiller@tdt.de>
[Switched ->dev to ->parent]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-xway.c

index b4380fb7200138dad3e3df7914a5addf97ced8e4..e56222eac96c6b49741537d0b068fce28a5adaf5 100644 (file)
@@ -682,6 +682,22 @@ static int xway_gpio_dir_out(struct gpio_chip *chip, unsigned int pin, int val)
        return 0;
 }
 
+/*
+ * gpiolib gpiod_to_irq callback function.
+ * Returns the mapped IRQ (external interrupt) number for a given GPIO pin.
+ */
+static int xway_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
+{
+       struct ltq_pinmux_info *info = dev_get_drvdata(chip->parent);
+       int i;
+
+       for (i = 0; i < info->num_exin; i++)
+               if (info->exin[i] == offset)
+                       return ltq_eiu_get_irq(i);
+
+       return -1;
+}
+
 static struct gpio_chip xway_chip = {
        .label = "gpio-xway",
        .direction_input = xway_gpio_dir_in,
@@ -690,6 +706,7 @@ static struct gpio_chip xway_chip = {
        .set = xway_gpio_set,
        .request = gpiochip_generic_request,
        .free = gpiochip_generic_free,
+       .to_irq = xway_gpio_to_irq,
        .base = -1,
 };