]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
regulator: check the return value of gpiod_set_value_cansleep()
authorBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Wed, 3 Dec 2025 08:47:37 +0000 (09:47 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 3 Dec 2025 12:38:21 +0000 (12:38 +0000)
gpiod_set_value_cansleep() now returns an integer and can indicate
failures in the GPIO layer. Propagate any potential errors to regulator
core.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Link: https://patch.msgid.link/20251203084737.15891-1-bartosz.golaszewski@oss.qualcomm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/core.c

index f4987f54e01bc2f00d780b17ac56b7f17260102d..4b6182cde859adb356d160a012e54dcf1646da38 100644 (file)
@@ -2823,14 +2823,18 @@ static void regulator_ena_gpio_free(struct regulator_dev *rdev)
 static int regulator_ena_gpio_ctrl(struct regulator_dev *rdev, bool enable)
 {
        struct regulator_enable_gpio *pin = rdev->ena_pin;
+       int ret;
 
        if (!pin)
                return -EINVAL;
 
        if (enable) {
                /* Enable GPIO at initial use */
-               if (pin->enable_count == 0)
-                       gpiod_set_value_cansleep(pin->gpiod, 1);
+               if (pin->enable_count == 0) {
+                       ret = gpiod_set_value_cansleep(pin->gpiod, 1);
+                       if (ret)
+                               return ret;
+               }
 
                pin->enable_count++;
        } else {
@@ -2841,7 +2845,10 @@ static int regulator_ena_gpio_ctrl(struct regulator_dev *rdev, bool enable)
 
                /* Disable GPIO if not used */
                if (pin->enable_count <= 1) {
-                       gpiod_set_value_cansleep(pin->gpiod, 0);
+                       ret = gpiod_set_value_cansleep(pin->gpiod, 0);
+                       if (ret)
+                               return ret;
+
                        pin->enable_count = 0;
                }
        }