hwmon: (lm75) added error handling
Add error handling so if lm75_update_device fails an error is returned when reading the value through sysfs. This is closely modeled after the way this is handled in ltc4261. Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com> Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
This commit is contained in:
parent
aac9fe9b46
commit
1f962f363b
|
@ -93,6 +93,10 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *da,
|
|||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
struct lm75_data *data = lm75_update_device(dev);
|
||||
|
||||
if (IS_ERR(data))
|
||||
return PTR_ERR(data);
|
||||
|
||||
return sprintf(buf, "%d\n",
|
||||
LM75_TEMP_FROM_REG(data->temp[attr->index]));
|
||||
}
|
||||
|
@ -402,6 +406,7 @@ static struct lm75_data *lm75_update_device(struct device *dev)
|
|||
{
|
||||
struct i2c_client *client = to_i2c_client(dev);
|
||||
struct lm75_data *data = i2c_get_clientdata(client);
|
||||
struct lm75_data *ret = data;
|
||||
|
||||
mutex_lock(&data->update_lock);
|
||||
|
||||
|
@ -414,19 +419,23 @@ static struct lm75_data *lm75_update_device(struct device *dev)
|
|||
int status;
|
||||
|
||||
status = lm75_read_value(client, LM75_REG_TEMP[i]);
|
||||
if (status < 0)
|
||||
dev_dbg(&client->dev, "reg %d, err %d\n",
|
||||
LM75_REG_TEMP[i], status);
|
||||
else
|
||||
data->temp[i] = status;
|
||||
if (unlikely(status < 0)) {
|
||||
dev_dbg(dev,
|
||||
"LM75: Failed to read value: reg %d, error %d\n",
|
||||
LM75_REG_TEMP[i], status);
|
||||
ret = ERR_PTR(status);
|
||||
data->valid = 0;
|
||||
goto abort;
|
||||
}
|
||||
data->temp[i] = status;
|
||||
}
|
||||
data->last_updated = jiffies;
|
||||
data->valid = 1;
|
||||
}
|
||||
|
||||
abort:
|
||||
mutex_unlock(&data->update_lock);
|
||||
|
||||
return data;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
|
Loading…
Reference in New Issue