Merge tag 'for-5.8-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave...
[linux-2.6-microblaze.git] / drivers / gpio / gpio-wcd934x.c
index 74913f2..1cbce59 100644 (file)
@@ -57,16 +57,19 @@ static int wcd_gpio_direction_output(struct gpio_chip *chip, unsigned int pin,
 static int wcd_gpio_get(struct gpio_chip *chip, unsigned int pin)
 {
        struct wcd_gpio_data *data = gpiochip_get_data(chip);
-       int value;
+       unsigned int value;
 
        regmap_read(data->map, WCD_REG_VAL_CTL_OFFSET, &value);
 
-       return !!(value && WCD_PIN_MASK(pin));
+       return !!(value & WCD_PIN_MASK(pin));
 }
 
 static void wcd_gpio_set(struct gpio_chip *chip, unsigned int pin, int val)
 {
-       wcd_gpio_direction_output(chip, pin, val);
+       struct wcd_gpio_data *data = gpiochip_get_data(chip);
+
+       regmap_update_bits(data->map, WCD_REG_VAL_CTL_OFFSET,
+                          WCD_PIN_MASK(pin), val ? WCD_PIN_MASK(pin) : 0);
 }
 
 static int wcd_gpio_probe(struct platform_device *pdev)