]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/pinctrl/sunxi/pinctrl-sunxi.c
Merge tag 'gpio-v4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux...
[mirror_ubuntu-artful-kernel.git] / drivers / pinctrl / sunxi / pinctrl-sunxi.c
index 7a2465f5e71e67c7e06f78dac19f850e2c01ba1f..12a1dfabb1af3c56cf6abf0e0b3c52044bd3c45d 100644 (file)
@@ -15,7 +15,7 @@
 #include <linux/gpio/driver.h>
 #include <linux/irqdomain.h>
 #include <linux/irqchip/chained_irq.h>
-#include <linux/module.h>
+#include <linux/export.h>
 #include <linux/of.h>
 #include <linux/of_address.h>
 #include <linux/of_device.h>
@@ -457,17 +457,18 @@ static int sunxi_pinctrl_gpio_get(struct gpio_chip *chip, unsigned offset)
        struct sunxi_pinctrl *pctl = gpiochip_get_data(chip);
        u32 reg = sunxi_data_reg(offset);
        u8 index = sunxi_data_offset(offset);
-       u32 set_mux = pctl->desc->irq_read_needs_mux &&
-                       test_bit(FLAG_USED_AS_IRQ, &chip->desc[offset].flags);
+       bool set_mux = pctl->desc->irq_read_needs_mux &&
+               gpiochip_line_is_irq(chip, offset);
+       u32 pin = offset + chip->base;
        u32 val;
 
        if (set_mux)
-               sunxi_pmx_set(pctl->pctl_dev, offset, SUN4I_FUNC_INPUT);
+               sunxi_pmx_set(pctl->pctl_dev, pin, SUN4I_FUNC_INPUT);
 
        val = (readl(pctl->membase + reg) >> index) & DATA_PINS_MASK;
 
        if (set_mux)
-               sunxi_pmx_set(pctl->pctl_dev, offset, SUN4I_FUNC_IRQ);
+               sunxi_pmx_set(pctl->pctl_dev, pin, SUN4I_FUNC_IRQ);
 
        return !!val;
 }