]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
pinctrl: mediatek: paris: use new GPIO line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Fri, 25 Apr 2025 09:00:59 +0000 (11:00 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 9 May 2025 08:04:45 +0000 (10:04 +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/20250425-gpiochip-set-rv-pinctrl-mediatek-v1-3-93e6a01855e7@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/mediatek/pinctrl-paris.c

index 852ce0ac7ff9e87b5170066279185410bbb1c092..89ef4e530fcc63ced0fc31ceedf1ee8b27012d7c 100644 (file)
@@ -874,14 +874,14 @@ static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
        return !!value;
 }
 
-static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
+static int mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
 {
        struct mtk_pinctrl *hw = gpiochip_get_data(chip);
        const struct mtk_pin_desc *desc;
 
        desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
 
-       mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
+       return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
 }
 
 static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
@@ -892,7 +892,11 @@ static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
 static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
                                     int value)
 {
-       mtk_gpio_set(chip, gpio, value);
+       int ret;
+
+       ret = mtk_gpio_set(chip, gpio, value);
+       if (ret)
+               return ret;
 
        return pinctrl_gpio_direction_output(chip, gpio);
 }
@@ -945,7 +949,7 @@ static int mtk_build_gpiochip(struct mtk_pinctrl *hw)
        chip->direction_input   = mtk_gpio_direction_input;
        chip->direction_output  = mtk_gpio_direction_output;
        chip->get               = mtk_gpio_get;
-       chip->set               = mtk_gpio_set;
+       chip->set_rv            = mtk_gpio_set;
        chip->to_irq            = mtk_gpio_to_irq;
        chip->set_config        = mtk_gpio_set_config;
        chip->base              = -1;