static ssize_t set_max_min(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct i2c_client *client = to_i2c_client(dev); struct ad7414_data *data = i2c_get_clientdata(client); int index = to_sensor_dev_attr(attr)->index; u8 reg = AD7414_REG_LIMIT[index]; long temp = simple_strtol(buf, NULL, 10); temp = SENSORS_LIMIT(temp, -40000, 85000); temp = (temp + (temp < 0 ? -500 : 500)) / 1000; mutex_lock(&data->lock); data->temps[index] = temp; ad7414_write(client, reg, temp); mutex_unlock(&data->lock); return count; }
static ssize_t set_max_min(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct ad7414_data *data = dev_get_drvdata(dev); struct i2c_client *client = data->client; int index = to_sensor_dev_attr(attr)->index; u8 reg = AD7414_REG_LIMIT[index]; long temp; int ret = kstrtol(buf, 10, &temp); if (ret < 0) return ret; temp = clamp_val(temp, -40000, 85000); temp = (temp + (temp < 0 ? -500 : 500)) / 1000; mutex_lock(&data->lock); data->temps[index] = temp; ad7414_write(client, reg, temp); mutex_unlock(&data->lock); return count; }