Merge branch 'drm-next-4.7' of git://people.freedesktop.org/~agd5f/linux into drm...
[linux-2.6-microblaze.git] / drivers / gpio / gpio-wm8994.c
index b089df9..744af38 100644 (file)
@@ -103,6 +103,28 @@ static void wm8994_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
        wm8994_set_bits(wm8994, WM8994_GPIO_1 + offset, WM8994_GPN_LVL, value);
 }
 
+static int wm8994_gpio_set_single_ended(struct gpio_chip *chip,
+                                       unsigned int offset,
+                                       enum single_ended_mode mode)
+{
+       struct wm8994_gpio *wm8994_gpio = gpiochip_get_data(chip);
+       struct wm8994 *wm8994 = wm8994_gpio->wm8994;
+
+       switch (mode) {
+       case LINE_MODE_OPEN_DRAIN:
+               return wm8994_set_bits(wm8994, WM8994_GPIO_1 + offset,
+                                      WM8994_GPN_OP_CFG_MASK,
+                                      WM8994_GPN_OP_CFG);
+       case LINE_MODE_PUSH_PULL:
+               return wm8994_set_bits(wm8994, WM8994_GPIO_1 + offset,
+                                      WM8994_GPN_OP_CFG_MASK, 0);
+       default:
+               break;
+       }
+
+       return -ENOTSUPP;
+}
+
 static int wm8994_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
 {
        struct wm8994_gpio *wm8994_gpio = gpiochip_get_data(chip);
@@ -217,7 +239,7 @@ static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
                if (reg & WM8994_GPN_OP_CFG)
                        seq_printf(s, "open drain ");
                else
-                       seq_printf(s, "CMOS ");
+                       seq_printf(s, "push-pull ");
 
                seq_printf(s, "%s (%x)\n",
                           wm8994_gpio_fn(reg & WM8994_GPN_FN_MASK), reg);
@@ -235,6 +257,7 @@ static struct gpio_chip template_chip = {
        .get                    = wm8994_gpio_get,
        .direction_output       = wm8994_gpio_direction_out,
        .set                    = wm8994_gpio_set,
+       .set_single_ended       = wm8994_gpio_set_single_ended,
        .to_irq                 = wm8994_gpio_to_irq,
        .dbg_show               = wm8994_gpio_dbg_show,
        .can_sleep              = true,