summaryrefslogtreecommitdiff
path: root/drivers/hwmon/adt7x10.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hwmon/adt7x10.c')
-rw-r--r--drivers/hwmon/adt7x10.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/hwmon/adt7x10.c b/drivers/hwmon/adt7x10.c
index 6701920de17f..2d329391ed3f 100644
--- a/drivers/hwmon/adt7x10.c
+++ b/drivers/hwmon/adt7x10.c
@@ -170,21 +170,15 @@ static int adt7x10_temp_write(struct adt7x10_data *data, int index, long temp)
static int adt7x10_hyst_read(struct adt7x10_data *data, int index, long *val)
{
- int hyst, temp, ret;
+ unsigned int regs[2] = {ADT7X10_T_HYST, ADT7X10_REG_TEMP[index]};
+ int hyst, ret;
+ u16 regdata[2];
- mutex_lock(&data->update_lock);
- ret = regmap_read(data->regmap, ADT7X10_T_HYST, &hyst);
- if (ret) {
- mutex_unlock(&data->update_lock);
- return ret;
- }
-
- ret = regmap_read(data->regmap, ADT7X10_REG_TEMP[index], &temp);
- mutex_unlock(&data->update_lock);
+ ret = regmap_multi_reg_read(data->regmap, regs, regdata, 2);
if (ret)
return ret;
- hyst = (hyst & ADT7X10_T_HYST_MASK) * 1000;
+ hyst = (regdata[0] & ADT7X10_T_HYST_MASK) * 1000;
/*
* hysteresis is stored as a 4 bit offset in the device, convert it
@@ -194,7 +188,7 @@ static int adt7x10_hyst_read(struct adt7x10_data *data, int index, long *val)
if (index == adt7x10_t_alarm_low)
hyst = -hyst;
- *val = ADT7X10_REG_TO_TEMP(data, temp) - hyst;
+ *val = ADT7X10_REG_TO_TEMP(data, regdata[1]) - hyst;
return 0;
}