If the devicetree node is not referenced in a zone under /thermal-zones,
devm_thermal_of_zone_register will fail with -ENODEV.

Since the driver is now also registering as an IIO device[0], allow the
probe to continue without the thermal zone.

We also can't use gadc_thermal_get_temp anymore because we haven't
necessarily initialized tz_dev.

[0] commit 3762f5851ac5 ("thermal/drivers/thermal-generic-adc: Add temperature 
sensor channel")

Signed-off-by: Luca Weiss <[email protected]>
---
 drivers/thermal/thermal-generic-adc.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/thermal/thermal-generic-adc.c 
b/drivers/thermal/thermal-generic-adc.c
index 7c844589b153..4852e584468b 100644
--- a/drivers/thermal/thermal-generic-adc.c
+++ b/drivers/thermal/thermal-generic-adc.c
@@ -86,14 +86,16 @@ static int gadc_thermal_read_raw(struct iio_dev *indio_dev,
                                 int *val, int *val2, long mask)
 {
        struct gadc_thermal_info *gtinfo = iio_priv(indio_dev);
+       int iio_val;
        int ret;
 
        switch (mask) {
        case IIO_CHAN_INFO_PROCESSED:
-               ret = gadc_thermal_get_temp(gtinfo->tz_dev, val);
-               if (ret)
+               ret = iio_read_channel_processed(gtinfo->channel, &iio_val);
+               if (ret < 0)
                        return ret;
 
+               *val = gadc_thermal_adc_to_temp(gtinfo, iio_val);
                return IIO_VAL_INT;
 
        default:
@@ -197,14 +199,14 @@ static int gadc_thermal_probe(struct platform_device 
*pdev)
                                                    &gadc_thermal_ops);
        if (IS_ERR(gti->tz_dev)) {
                ret = PTR_ERR(gti->tz_dev);
-               if (ret != -EPROBE_DEFER)
-                       dev_err(dev,
-                               "Thermal zone sensor register failed: %d\n",
-                               ret);
-               return ret;
-       }
+               if (ret == -EPROBE_DEFER)
+                       return ret;
 
-       devm_thermal_add_hwmon_sysfs(dev, gti->tz_dev);
+               dev_info(dev, "Thermal zone sensor register failed: %d\n",
+                        ret);
+       } else {
+               devm_thermal_add_hwmon_sysfs(dev, gti->tz_dev);
+       }
 
        return gadc_iio_register(&pdev->dev, gti);
 }

-- 
2.53.0


Reply via email to