]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/pinctrl/pinctrl-sx150x.c
Merge branches 'for-4.11/upstream-fixes', 'for-4.12/accutouch', 'for-4.12/cp2112...
[mirror_ubuntu-artful-kernel.git] / drivers / pinctrl / pinctrl-sx150x.c
index 29fb7403d24e1acd01eb3bb8bb9c8f40c17bf5d1..7450f511844569d32b0bda6cefa3423a1cbb5eba 100644 (file)
@@ -424,41 +424,6 @@ static int sx150x_gpio_get(struct gpio_chip *chip, unsigned int offset)
        return !!(value & BIT(offset));
 }
 
-static int sx150x_gpio_set_single_ended(struct gpio_chip *chip,
-                                       unsigned int offset,
-                                       enum single_ended_mode mode)
-{
-       struct sx150x_pinctrl *pctl = gpiochip_get_data(chip);
-       int ret;
-
-       switch (mode) {
-       case LINE_MODE_PUSH_PULL:
-               if (pctl->data->model != SX150X_789 ||
-                   sx150x_pin_is_oscio(pctl, offset))
-                       return 0;
-
-               ret = regmap_write_bits(pctl->regmap,
-                                       pctl->data->pri.x789.reg_drain,
-                                       BIT(offset), 0);
-               break;
-
-       case LINE_MODE_OPEN_DRAIN:
-               if (pctl->data->model != SX150X_789 ||
-                   sx150x_pin_is_oscio(pctl, offset))
-                       return -ENOTSUPP;
-
-               ret = regmap_write_bits(pctl->regmap,
-                                       pctl->data->pri.x789.reg_drain,
-                                       BIT(offset), BIT(offset));
-               break;
-       default:
-               ret = -ENOTSUPP;
-               break;
-       }
-
-       return ret;
-}
-
 static int __sx150x_gpio_set(struct sx150x_pinctrl *pctl, unsigned int offset,
                             int value)
 {
@@ -811,16 +776,26 @@ static int sx150x_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
                        break;
 
                case PIN_CONFIG_DRIVE_OPEN_DRAIN:
-                       ret = sx150x_gpio_set_single_ended(&pctl->gpio,
-                                               pin, LINE_MODE_OPEN_DRAIN);
+                       if (pctl->data->model != SX150X_789 ||
+                           sx150x_pin_is_oscio(pctl, pin))
+                               return -ENOTSUPP;
+
+                       ret = regmap_write_bits(pctl->regmap,
+                                               pctl->data->pri.x789.reg_drain,
+                                               BIT(pin), BIT(pin));
                        if (ret < 0)
                                return ret;
 
                        break;
 
                case PIN_CONFIG_DRIVE_PUSH_PULL:
-                       ret = sx150x_gpio_set_single_ended(&pctl->gpio,
-                                               pin, LINE_MODE_PUSH_PULL);
+                       if (pctl->data->model != SX150X_789 ||
+                           sx150x_pin_is_oscio(pctl, pin))
+                               return 0;
+
+                       ret = regmap_write_bits(pctl->regmap,
+                                               pctl->data->pri.x789.reg_drain,
+                                               BIT(pin), 0);
                        if (ret < 0)
                                return ret;
 
@@ -1178,7 +1153,7 @@ static int sx150x_probe(struct i2c_client *client,
        pctl->gpio.direction_output = sx150x_gpio_direction_output;
        pctl->gpio.get = sx150x_gpio_get;
        pctl->gpio.set = sx150x_gpio_set;
-       pctl->gpio.set_single_ended = sx150x_gpio_set_single_ended;
+       pctl->gpio.set_config = gpiochip_generic_config;
        pctl->gpio.parent = dev;
 #ifdef CONFIG_OF_GPIO
        pctl->gpio.of_node = dev->of_node;