gnss: ubx: use new helper to remove open coded regulator handling
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Mon, 13 Nov 2023 00:51:49 +0000 (19:51 -0500)
committerJohan Hovold <johan@kernel.org>
Fri, 15 Dec 2023 08:08:56 +0000 (09:08 +0100)
v_bckp shall always be enabled as long as the device exists. We now have
a regulator helper for that, use it.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/gnss/ubx.c

index c951be2..9b76b10 100644 (file)
@@ -17,7 +17,6 @@
 #include "serial.h"
 
 struct ubx_data {
-       struct regulator *v_bckp;
        struct regulator *vcc;
 };
 
@@ -87,30 +86,16 @@ static int ubx_probe(struct serdev_device *serdev)
                goto err_free_gserial;
        }
 
-       data->v_bckp = devm_regulator_get_optional(&serdev->dev, "v-bckp");
-       if (IS_ERR(data->v_bckp)) {
-               ret = PTR_ERR(data->v_bckp);
-               if (ret == -ENODEV)
-                       data->v_bckp = NULL;
-               else
-                       goto err_free_gserial;
-       }
-
-       if (data->v_bckp) {
-               ret = regulator_enable(data->v_bckp);
-               if (ret)
-                       goto err_free_gserial;
-       }
+       ret = devm_regulator_get_enable_optional(&serdev->dev, "v-bckp");
+       if (ret < 0 && ret != -ENODEV)
+               goto err_free_gserial;
 
        ret = gnss_serial_register(gserial);
        if (ret)
-               goto err_disable_v_bckp;
+               goto err_free_gserial;
 
        return 0;
 
-err_disable_v_bckp:
-       if (data->v_bckp)
-               regulator_disable(data->v_bckp);
 err_free_gserial:
        gnss_serial_free(gserial);
 
@@ -120,11 +105,8 @@ err_free_gserial:
 static void ubx_remove(struct serdev_device *serdev)
 {
        struct gnss_serial *gserial = serdev_device_get_drvdata(serdev);
-       struct ubx_data *data = gnss_serial_get_drvdata(gserial);
 
        gnss_serial_deregister(gserial);
-       if (data->v_bckp)
-               regulator_disable(data->v_bckp);
        gnss_serial_free(gserial);
 }