]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
adc: Use regulator_set_enable_if_allowed
authorJonas Karlman <jonas@kwiboo.se>
Wed, 19 Jul 2023 21:20:55 +0000 (21:20 +0000)
committerTom Rini <trini@konsulko.com>
Mon, 14 Aug 2023 13:14:41 +0000 (09:14 -0400)
With the commit 4fcba5d556b4 ("regulator: implement basic reference
counter") the return value of regulator_set_enable may be EALREADY or
EBUSY for fixed/gpio regulators.

Change to use the more relaxed regulator_set_enable_if_allowed to
continue if regulator already was enabled or disabled.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org> # rockpro64-rk3399
drivers/adc/adc-uclass.c

index 9646e4d7062795609bca8b340dfaa8b18635de97..6074eccbf097b335a00ddddbd6965c08aab668e9 100644 (file)
@@ -51,23 +51,21 @@ static int check_channel(struct udevice *dev, int value, bool number_or_mask,
 static int adc_supply_enable(struct udevice *dev)
 {
        struct adc_uclass_plat *uc_pdata = dev_get_uclass_plat(dev);
-       const char *supply_type;
-       int ret = 0;
+       int ret;
 
-       if (uc_pdata->vdd_supply) {
-               supply_type = "vdd";
-               ret = regulator_set_enable(uc_pdata->vdd_supply, true);
+       ret = regulator_set_enable_if_allowed(uc_pdata->vdd_supply, true);
+       if (ret && ret != -ENOSYS) {
+               pr_err("%s: can't enable vdd-supply!", dev->name);
+               return ret;
        }
 
-       if (!ret && uc_pdata->vss_supply) {
-               supply_type = "vss";
-               ret = regulator_set_enable(uc_pdata->vss_supply, true);
+       ret = regulator_set_enable_if_allowed(uc_pdata->vss_supply, true);
+       if (ret && ret != -ENOSYS) {
+               pr_err("%s: can't enable vss-supply!", dev->name);
+               return ret;
        }
 
-       if (ret)
-               pr_err("%s: can't enable %s-supply!", dev->name, supply_type);
-
-       return ret;
+       return 0;
 }
 
 int adc_data_mask(struct udevice *dev, unsigned int *data_mask)