power: supply: ab8500_charger: Restrict ADC retrieveal
authorLinus Walleij <linus.walleij@linaro.org>
Sat, 29 Jan 2022 00:49:24 +0000 (01:49 +0100)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Fri, 11 Feb 2022 19:24:53 +0000 (20:24 +0100)
The AB8505 only has two ADC channels: the voltage and current
provided from VBUS (USB). It does not support AC charging at all.
Make sure we don't try to retrieve the non-existing channels.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/ab8500_charger.c

index ce074c0..681b53b 100644 (file)
@@ -3443,17 +3443,19 @@ static int ab8500_charger_probe(struct platform_device *pdev)
        di->parent = dev_get_drvdata(pdev->dev.parent);
 
        /* Get ADC channels */
-       di->adc_main_charger_v = devm_iio_channel_get(dev, "main_charger_v");
-       if (IS_ERR(di->adc_main_charger_v)) {
-               ret = dev_err_probe(dev, PTR_ERR(di->adc_main_charger_v),
-                                   "failed to get ADC main charger voltage\n");
-               return ret;
-       }
-       di->adc_main_charger_c = devm_iio_channel_get(dev, "main_charger_c");
-       if (IS_ERR(di->adc_main_charger_c)) {
-               ret = dev_err_probe(dev, PTR_ERR(di->adc_main_charger_c),
-                                   "failed to get ADC main charger current\n");
-               return ret;
+       if (!is_ab8505(di->parent)) {
+               di->adc_main_charger_v = devm_iio_channel_get(dev, "main_charger_v");
+               if (IS_ERR(di->adc_main_charger_v)) {
+                       ret = dev_err_probe(dev, PTR_ERR(di->adc_main_charger_v),
+                                           "failed to get ADC main charger voltage\n");
+                       return ret;
+               }
+               di->adc_main_charger_c = devm_iio_channel_get(dev, "main_charger_c");
+               if (IS_ERR(di->adc_main_charger_c)) {
+                       ret = dev_err_probe(dev, PTR_ERR(di->adc_main_charger_c),
+                                           "failed to get ADC main charger current\n");
+                       return ret;
+               }
        }
        di->adc_vbus_v = devm_iio_channel_get(dev, "vbus_v");
        if (IS_ERR(di->adc_vbus_v)) {