]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/pinctrl/pinctrl-at91-pio4.c
Merge branch 'next-tpm' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris...
[linux.git] / drivers / pinctrl / pinctrl-at91-pio4.c
index ef7ab208b951eeb307b73191f373b88ecd8462a3..5a850491a5cb75ca5921cf0609cef69397715c25 100644 (file)
@@ -17,8 +17,6 @@
 #include <dt-bindings/pinctrl/at91.h>
 #include <linux/clk.h>
 #include <linux/gpio/driver.h>
-/* FIXME: needed for gpio_to_irq(), get rid of this */
-#include <linux/gpio.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
 #include <linux/init.h>
@@ -264,6 +262,13 @@ static struct irq_chip atmel_gpio_irq_chip = {
        .irq_set_wake   = atmel_gpio_irq_set_wake,
 };
 
+static int atmel_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
+{
+       struct atmel_pioctrl *atmel_pioctrl = gpiochip_get_data(chip);
+
+       return irq_find_mapping(atmel_pioctrl->irq_domain, offset);
+}
+
 static void atmel_gpio_irq_handler(struct irq_desc *desc)
 {
        unsigned int irq = irq_desc_get_irq(desc);
@@ -297,8 +302,9 @@ static void atmel_gpio_irq_handler(struct irq_desc *desc)
                        break;
 
                for_each_set_bit(n, &isr, BITS_PER_LONG)
-                       generic_handle_irq(gpio_to_irq(bank *
-                                       ATMEL_PIO_NPINS_PER_BANK + n));
+                       generic_handle_irq(atmel_gpio_to_irq(
+                                       atmel_pioctrl->gpio_chip,
+                                       bank * ATMEL_PIO_NPINS_PER_BANK + n));
        }
 
        chained_irq_exit(chip, desc);
@@ -360,13 +366,6 @@ static void atmel_gpio_set(struct gpio_chip *chip, unsigned offset, int val)
                         BIT(pin->line));
 }
 
-static int atmel_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
-{
-       struct atmel_pioctrl *atmel_pioctrl = gpiochip_get_data(chip);
-
-       return irq_find_mapping(atmel_pioctrl->irq_domain, offset);
-}
-
 static struct gpio_chip atmel_gpio_chip = {
        .direction_input        = atmel_gpio_direction_input,
        .get                    = atmel_gpio_get,
@@ -493,7 +492,6 @@ static int atmel_pctl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
        unsigned num_pins, num_configs, reserve;
        unsigned long *configs;
        struct property *pins;
-       bool has_config;
        u32 pinfunc;
        int ret, i;
 
@@ -509,9 +507,6 @@ static int atmel_pctl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
                return ret;
        }
 
-       if (num_configs)
-               has_config = true;
-
        num_pins = pins->length / sizeof(u32);
        if (!num_pins) {
                dev_err(pctldev->dev, "no pins found in node %pOF\n", np);
@@ -524,7 +519,7 @@ static int atmel_pctl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
         * map for each pin.
         */
        reserve = 1;
-       if (has_config && num_pins >= 1)
+       if (num_configs)
                reserve++;
        reserve *= num_pins;
        ret = pinctrl_utils_reserve_map(pctldev, map, reserved_maps, num_maps,
@@ -547,7 +542,7 @@ static int atmel_pctl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
                pinctrl_utils_add_map_mux(pctldev, map, reserved_maps, num_maps,
                                          group, func);
 
-               if (has_config) {
+               if (num_configs) {
                        ret = pinctrl_utils_add_map_configs(pctldev, map,
                                        reserved_maps, num_maps, group,
                                        configs, num_configs,