hwmon: (lm90) Read the channel's temperature offset from device-tree
authorSlawomir Stepien <slawomir.stepien@nokia.com>
Tue, 7 Jun 2022 06:35:04 +0000 (08:35 +0200)
committerGuenter Roeck <linux@roeck-us.net>
Wed, 13 Jul 2022 15:38:20 +0000 (08:38 -0700)
Try to read the channel's temperature offset from device-tree. Having
offset in device-tree node is not mandatory. The offset can only be set
for remote channels.

Signed-off-by: Slawomir Stepien <slawomir.stepien@nokia.com>
Link: https://lore.kernel.org/r/20220607063504.1287855-3-sst@poczta.fm
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/lm90.c

index ec885cb..9d87816 100644 (file)
@@ -2666,6 +2666,7 @@ static int lm90_probe_channel_from_dt(struct i2c_client *client,
                                      struct lm90_data *data)
 {
        u32 id;
+       s32 val;
        int err;
        struct device *dev = &client->dev;
 
@@ -2689,6 +2690,21 @@ static int lm90_probe_channel_from_dt(struct i2c_client *client,
        if (data->channel_label[id])
                data->channel_config[id] |= HWMON_T_LABEL;
 
+       err = of_property_read_s32(child, "temperature-offset-millicelsius", &val);
+       if (!err) {
+               if (id == 0) {
+                       dev_err(dev, "temperature-offset-millicelsius can't be set for internal channel\n");
+                       return -EINVAL;
+               }
+
+               err = lm90_set_temp_offset(data, lm90_temp_offset_index[id], id, val);
+               if (err) {
+                       dev_err(dev, "can't set temperature offset %d for channel %d (%d)\n",
+                               val, id, err);
+                       return err;
+               }
+       }
+
        return 0;
 }