static int tmon_write_low_limit(struct i2c_client *client, s32 temp, enum temp_type typ) { u8 config; u8 reg8_val; int err; u16 reg16_val; struct tmon_info *data = i2c_get_clientdata(client); TMON_RD(client, REG_CFG_READ, &config); if (typ == REMOTE) temp = temp - data->pdata->remote_offset; reg16_val = temp_to_reg(temp, config); reg8_val = reg16_val >> 8; mutex_lock(&data->update_lock); TMON_WRT(client, REG_TEMP_LOW_LIMIT_MSB_WRT[typ], reg8_val); if (tmon_device == TMP411) TMON_WRT(client, REG_TEMP_LOW_LIMIT_LSB[typ], (reg16_val & 0xFF)); mutex_unlock(&data->update_lock); return 0; }
static ssize_t set_temp_hyst(struct device *dev, struct device_attribute *devattr, const char *buf, size_t count) { struct f71805f_data *data = dev_get_drvdata(dev); struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); int nr = attr->index; long val = simple_strtol(buf, NULL, 10); down(&data->update_lock); data->temp_hyst[nr] = temp_to_reg(val); f71805f_write8(data, F71805F_REG_TEMP_HYST(nr), data->temp_hyst[nr]); up(&data->update_lock); return count; }
static ssize_t set_pwm_auto_point_temp(struct device *dev, struct device_attribute *devattr, const char* buf, size_t count) { struct f71805f_data *data = dev_get_drvdata(dev); struct sensor_device_attribute_2 *attr = to_sensor_dev_attr_2(devattr); int pwmnr = attr->nr; int apnr = attr->index; unsigned long val = simple_strtol(buf, NULL, 10); mutex_lock(&data->update_lock); data->auto_points[pwmnr].temp[apnr] = temp_to_reg(val); f71805f_write8(data, F71805F_REG_PWM_AUTO_POINT_TEMP(pwmnr, apnr), data->auto_points[pwmnr].temp[apnr]); mutex_unlock(&data->update_lock); return count; }
static ssize_t set_temp_hyst(struct device *dev, struct device_attribute *devattr, const char *buf, size_t count) { struct f71805f_data *data = dev_get_drvdata(dev); struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); int nr = attr->index; long val; int err; err = kstrtol(buf, 10, &val); if (err) return err; mutex_lock(&data->update_lock); data->temp_hyst[nr] = temp_to_reg(val); f71805f_write8(data, F71805F_REG_TEMP_HYST(nr), data->temp_hyst[nr]); mutex_unlock(&data->update_lock); return count; }