diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-12-29 04:48:25 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-12-29 04:48:25 +0100 |
commit | 8754040378e4ff70b3bb96b1dabac62da5dfb870 (patch) | |
tree | 43c3e3a2f7f1e306e76c7dddd99fde5aef69f84c /drivers/hwmon/lm80.c | |
parent | Merge tag 'vfio-v4.21-rc1' of git://github.com/awilliam/linux-vfio (diff) | |
parent | hwmon: (lm80) fix a missing check of bus read in lm80 probe (diff) | |
download | linux-8754040378e4ff70b3bb96b1dabac62da5dfb870.tar.xz linux-8754040378e4ff70b3bb96b1dabac62da5dfb870.zip |
Merge tag 'hwmon-for-v4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
Pull hwmon updates from Guenter Roeck:
"The big change in this series is for the most part automatic:
Introducing SENSOR[_DEVICE]_ATTR_{RO,RW,WO} variants and conversion of
various drivers to use it. This is similar to DEVICE_ATTR variants.
Other than that, we have
- Some conversions of S_<PERMS> with octal values, also automated
- Added support for Hygon Dhyana CPUs to k10temp driver
- Added support for STLM75 to lm75 driver
- B57891S0103 to ntc_thermistor
- Added pm-runtime support to ina3221 driver
- Support for PowerPC On-Chip Controller (OCC)
- Various minor bug fices and improvements"
* tag 'hwmon-for-v4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (80 commits)
hwmon: (lm80) fix a missing check of bus read in lm80 probe
hwmon: (lm80) fix a missing check of the status of SMBus read
hwmon: (asus_atk0110) Fix debugfs_simple_attr.cocci warnings
hwmon: (ftsteutates) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (fschmd) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (emc6w201) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (emc2103) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (emc1403) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (ds620) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (ds1621) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (dell-smm-hwmon) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (da9055-hwmon) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (da9052-hwmon) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (coretemp) Replace S_<PERMS> with octal values
hwmon: (asus_atk0110) Replace S_<PERMS> with octal values
hwmon: (aspeed-pwm-tacho) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (applesmc) Replace S_<PERMS> with octal values
hwmon: (amc6821) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (adt7x10) Use permission specific SENSOR[_DEVICE]_ATTR variants
hwmon: (adt7475) Use permission specific SENSOR[_DEVICE]_ATTR variants
...
Diffstat (limited to 'drivers/hwmon/lm80.c')
-rw-r--r-- | drivers/hwmon/lm80.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/drivers/hwmon/lm80.c b/drivers/hwmon/lm80.c index 08e3945a6fbf..0e30fa00204c 100644 --- a/drivers/hwmon/lm80.c +++ b/drivers/hwmon/lm80.c @@ -360,9 +360,11 @@ static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr, struct i2c_client *client = data->client; unsigned long min, val; u8 reg; - int err = kstrtoul(buf, 10, &val); - if (err < 0) - return err; + int rv; + + rv = kstrtoul(buf, 10, &val); + if (rv < 0) + return rv; /* Save fan_min */ mutex_lock(&data->update_lock); @@ -390,8 +392,11 @@ static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr, return -EINVAL; } - reg = (lm80_read_value(client, LM80_REG_FANDIV) & - ~(3 << (2 * (nr + 1)))) | (data->fan_div[nr] << (2 * (nr + 1))); + rv = lm80_read_value(client, LM80_REG_FANDIV); + if (rv < 0) + return rv; + reg = (rv & ~(3 << (2 * (nr + 1)))) + | (data->fan_div[nr] << (2 * (nr + 1))); lm80_write_value(client, LM80_REG_FANDIV, reg); /* Restore fan_min */ @@ -623,6 +628,7 @@ static int lm80_probe(struct i2c_client *client, struct device *dev = &client->dev; struct device *hwmon_dev; struct lm80_data *data; + int rv; data = devm_kzalloc(dev, sizeof(struct lm80_data), GFP_KERNEL); if (!data) @@ -635,8 +641,14 @@ static int lm80_probe(struct i2c_client *client, lm80_init_client(client); /* A few vars need to be filled upon startup */ - data->fan[f_min][0] = lm80_read_value(client, LM80_REG_FAN_MIN(1)); - data->fan[f_min][1] = lm80_read_value(client, LM80_REG_FAN_MIN(2)); + rv = lm80_read_value(client, LM80_REG_FAN_MIN(1)); + if (rv < 0) + return rv; + data->fan[f_min][0] = rv; + rv = lm80_read_value(client, LM80_REG_FAN_MIN(2)); + if (rv < 0) + return rv; + data->fan[f_min][1] = rv; hwmon_dev = devm_hwmon_device_register_with_groups(dev, client->name, data, lm80_groups); |