]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpio: htc-egpio: use new line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 7 Apr 2025 07:13:19 +0000 (09:13 +0200)
committerBartosz Golaszewski <brgl@bgdev.pl>
Thu, 17 Apr 2025 11:58:54 +0000 (13:58 +0200)
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/r/20250407-gpiochip-set-rv-gpio-part1-v1-10-78399683ca38@linaro.org
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
drivers/gpio/gpio-htc-egpio.c

index a40bd56673fe3678be91d5e6670b598361e17fc9..b1844a676c7cc551db41b8996e9bb95680c0208d 100644 (file)
@@ -170,7 +170,7 @@ static int egpio_direction_input(struct gpio_chip *chip, unsigned offset)
  * Output pins
  */
 
-static void egpio_set(struct gpio_chip *chip, unsigned offset, int value)
+static int egpio_set(struct gpio_chip *chip, unsigned int offset, int value)
 {
        unsigned long     flag;
        struct egpio_chip *egpio;
@@ -198,6 +198,8 @@ static void egpio_set(struct gpio_chip *chip, unsigned offset, int value)
                egpio->cached_values &= ~(1 << offset);
        egpio_writew((egpio->cached_values >> shift) & ei->reg_mask, ei, reg);
        spin_unlock_irqrestore(&ei->lock, flag);
+
+       return 0;
 }
 
 static int egpio_direction_output(struct gpio_chip *chip,
@@ -206,12 +208,10 @@ static int egpio_direction_output(struct gpio_chip *chip,
        struct egpio_chip *egpio;
 
        egpio = gpiochip_get_data(chip);
-       if (test_bit(offset, &egpio->is_out)) {
-               egpio_set(chip, offset, value);
-               return 0;
-       } else {
-               return -EINVAL;
-       }
+       if (test_bit(offset, &egpio->is_out))
+               return egpio_set(chip, offset, value);
+
+       return -EINVAL;
 }
 
 static int egpio_get_direction(struct gpio_chip *chip, unsigned offset)
@@ -324,7 +324,7 @@ static int __init egpio_probe(struct platform_device *pdev)
                chip->parent          = &pdev->dev;
                chip->owner           = THIS_MODULE;
                chip->get             = egpio_get;
-               chip->set             = egpio_set;
+               chip->set_rv          = egpio_set;
                chip->direction_input = egpio_direction_input;
                chip->direction_output = egpio_direction_output;
                chip->get_direction   = egpio_get_direction;