Merge tag 'gpio-v3.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw...
[linux-2.6-block.git] / drivers / pinctrl / pinctrl-adi2.c
index 94138bca1f2e24269f4f534df8863ee1bdc513e8..0cc0eec83396e0d198dc02e093010c062e6f8b8e 100644 (file)
@@ -89,6 +89,19 @@ struct gpio_port_saved {
        u32 mux;
 };
 
+/*
+ * struct gpio_pint_saved - PINT registers saved in PM operations
+ *
+ * @assign: ASSIGN register
+ * @edge_set: EDGE_SET register
+ * @invert_set: INVERT_SET register
+ */
+struct gpio_pint_saved {
+       u32 assign;
+       u32 edge_set;
+       u32 invert_set;
+};
+
 /**
  * struct gpio_pint - Pin interrupt controller device. Multiple ADI GPIO
  * banks can be mapped into one Pin interrupt controller.
@@ -114,7 +127,7 @@ struct gpio_pint {
        int irq;
        struct irq_domain *domain[2];
        struct gpio_pint_regs *regs;
-       struct adi_pm_pint_save saved_data;
+       struct gpio_pint_saved saved_data;
        int map_count;
        spinlock_t lock;
 
@@ -160,7 +173,7 @@ struct adi_pinctrl {
 struct gpio_port {
        struct list_head node;
        void __iomem *base;
-       unsigned int irq_base;
+       int irq_base;
        unsigned int width;
        struct gpio_port_t *regs;
        struct gpio_port_saved saved_data;
@@ -606,8 +619,8 @@ static struct pinctrl_ops adi_pctrl_ops = {
        .get_group_pins = adi_get_group_pins,
 };
 
-static int adi_pinmux_enable(struct pinctrl_dev *pctldev, unsigned selector,
-       unsigned group)
+static int adi_pinmux_enable(struct pinctrl_dev *pctldev, unsigned func_id,
+       unsigned group_id)
 {
        struct adi_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctldev);
        struct gpio_port *port;
@@ -615,7 +628,7 @@ static int adi_pinmux_enable(struct pinctrl_dev *pctldev, unsigned selector,
        unsigned long flags;
        unsigned short *mux, pin;
 
-       mux = (unsigned short *)pinctrl->soc->functions[selector].mux;
+       mux = (unsigned short *)pinctrl->soc->groups[group_id].mux;
 
        while (*mux) {
                pin = P_IDENT(*mux);
@@ -629,7 +642,7 @@ static int adi_pinmux_enable(struct pinctrl_dev *pctldev, unsigned selector,
                spin_lock_irqsave(&port->lock, flags);
 
                portmux_setup(port, pin_to_offset(range, pin),
-                                P_FUNCT2MUX(*mux));
+                               P_FUNCT2MUX(*mux));
                port_setup(port, pin_to_offset(range, pin), false);
                mux++;
 
@@ -639,8 +652,8 @@ static int adi_pinmux_enable(struct pinctrl_dev *pctldev, unsigned selector,
        return 0;
 }
 
-static void adi_pinmux_disable(struct pinctrl_dev *pctldev, unsigned selector,
-       unsigned group)
+static void adi_pinmux_disable(struct pinctrl_dev *pctldev, unsigned func_id,
+       unsigned group_id)
 {
        struct adi_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctldev);
        struct gpio_port *port;
@@ -648,7 +661,7 @@ static void adi_pinmux_disable(struct pinctrl_dev *pctldev, unsigned selector,
        unsigned long flags;
        unsigned short *mux, pin;
 
-       mux = (unsigned short *)pinctrl->soc->functions[selector].mux;
+       mux = (unsigned short *)pinctrl->soc->groups[group_id].mux;
 
        while (*mux) {
                pin = P_IDENT(*mux);