Loading drivers/hwmon/tmp464.c +15 −18 Original line number Diff line number Diff line Loading @@ -147,11 +147,11 @@ static int tmp464_temp_read(struct device *dev, u32 attr, int channel, long *val { struct tmp464_data *data = dev_get_drvdata(dev); struct regmap *regmap = data->regmap; unsigned int regval, regval2; unsigned int regs[2]; unsigned int regval; u16 regvals[2]; int err = 0; mutex_lock(&data->update_lock); switch (attr) { case hwmon_temp_max_alarm: err = regmap_read(regmap, TMP464_THERM_STATUS_REG, ®val); Loading @@ -172,26 +172,27 @@ static int tmp464_temp_read(struct device *dev, u32 attr, int channel, long *val * complete. That means we have to cache the value internally * for one measurement cycle and report the cached value. */ mutex_lock(&data->update_lock); if (!data->valid || time_after(jiffies, data->last_updated + msecs_to_jiffies(data->update_interval))) { err = regmap_read(regmap, TMP464_REMOTE_OPEN_REG, ®val); if (err < 0) break; goto unlock; data->open_reg = regval; data->last_updated = jiffies; data->valid = true; } *val = !!(data->open_reg & BIT(channel + 7)); unlock: mutex_unlock(&data->update_lock); break; case hwmon_temp_max_hyst: err = regmap_read(regmap, TMP464_THERM_LIMIT[channel], ®val); if (err < 0) break; err = regmap_read(regmap, TMP464_TEMP_HYST_REG, ®val2); regs[0] = TMP464_THERM_LIMIT[channel]; regs[1] = TMP464_TEMP_HYST_REG; err = regmap_multi_reg_read(regmap, regs, regvals, 2); if (err < 0) break; regval -= regval2; *val = temp_from_reg(regval); *val = temp_from_reg(regvals[0] - regvals[1]); break; case hwmon_temp_max: err = regmap_read(regmap, TMP464_THERM_LIMIT[channel], ®val); Loading @@ -200,14 +201,12 @@ static int tmp464_temp_read(struct device *dev, u32 attr, int channel, long *val *val = temp_from_reg(regval); break; case hwmon_temp_crit_hyst: err = regmap_read(regmap, TMP464_THERM2_LIMIT[channel], ®val); if (err < 0) break; err = regmap_read(regmap, TMP464_TEMP_HYST_REG, ®val2); regs[0] = TMP464_THERM2_LIMIT[channel]; regs[1] = TMP464_TEMP_HYST_REG; err = regmap_multi_reg_read(regmap, regs, regvals, 2); if (err < 0) break; regval -= regval2; *val = temp_from_reg(regval); *val = temp_from_reg(regvals[0] - regvals[1]); break; case hwmon_temp_crit: err = regmap_read(regmap, TMP464_THERM2_LIMIT[channel], ®val); Loading Loading @@ -239,8 +238,6 @@ static int tmp464_temp_read(struct device *dev, u32 attr, int channel, long *val break; } mutex_unlock(&data->update_lock); return err; } Loading Loading
drivers/hwmon/tmp464.c +15 −18 Original line number Diff line number Diff line Loading @@ -147,11 +147,11 @@ static int tmp464_temp_read(struct device *dev, u32 attr, int channel, long *val { struct tmp464_data *data = dev_get_drvdata(dev); struct regmap *regmap = data->regmap; unsigned int regval, regval2; unsigned int regs[2]; unsigned int regval; u16 regvals[2]; int err = 0; mutex_lock(&data->update_lock); switch (attr) { case hwmon_temp_max_alarm: err = regmap_read(regmap, TMP464_THERM_STATUS_REG, ®val); Loading @@ -172,26 +172,27 @@ static int tmp464_temp_read(struct device *dev, u32 attr, int channel, long *val * complete. That means we have to cache the value internally * for one measurement cycle and report the cached value. */ mutex_lock(&data->update_lock); if (!data->valid || time_after(jiffies, data->last_updated + msecs_to_jiffies(data->update_interval))) { err = regmap_read(regmap, TMP464_REMOTE_OPEN_REG, ®val); if (err < 0) break; goto unlock; data->open_reg = regval; data->last_updated = jiffies; data->valid = true; } *val = !!(data->open_reg & BIT(channel + 7)); unlock: mutex_unlock(&data->update_lock); break; case hwmon_temp_max_hyst: err = regmap_read(regmap, TMP464_THERM_LIMIT[channel], ®val); if (err < 0) break; err = regmap_read(regmap, TMP464_TEMP_HYST_REG, ®val2); regs[0] = TMP464_THERM_LIMIT[channel]; regs[1] = TMP464_TEMP_HYST_REG; err = regmap_multi_reg_read(regmap, regs, regvals, 2); if (err < 0) break; regval -= regval2; *val = temp_from_reg(regval); *val = temp_from_reg(regvals[0] - regvals[1]); break; case hwmon_temp_max: err = regmap_read(regmap, TMP464_THERM_LIMIT[channel], ®val); Loading @@ -200,14 +201,12 @@ static int tmp464_temp_read(struct device *dev, u32 attr, int channel, long *val *val = temp_from_reg(regval); break; case hwmon_temp_crit_hyst: err = regmap_read(regmap, TMP464_THERM2_LIMIT[channel], ®val); if (err < 0) break; err = regmap_read(regmap, TMP464_TEMP_HYST_REG, ®val2); regs[0] = TMP464_THERM2_LIMIT[channel]; regs[1] = TMP464_TEMP_HYST_REG; err = regmap_multi_reg_read(regmap, regs, regvals, 2); if (err < 0) break; regval -= regval2; *val = temp_from_reg(regval); *val = temp_from_reg(regvals[0] - regvals[1]); break; case hwmon_temp_crit: err = regmap_read(regmap, TMP464_THERM2_LIMIT[channel], ®val); Loading Loading @@ -239,8 +238,6 @@ static int tmp464_temp_read(struct device *dev, u32 attr, int channel, long *val break; } mutex_unlock(&data->update_lock); return err; } Loading