185 int nr = to_sensor_dev_attr(attr)->index; \
186 struct i2c_client *client = to_i2c_client(dev); \
187 struct lm80_data *data = i2c_get_clientdata(client); \
188 long val = simple_strtol(buf, NULL, 10); \
189 \
190 mutex_lock(&data->update_lock);\
191 data->value[nr] = IN_TO_REG(val); \
192 lm80_write_value(client, reg(nr), data->value[nr]); \
193 mutex_unlock(&data->update_lock);\
194 return count; \
195}
196set_in(min, in_min, LM80_REG_IN_MIN)
197set_in(max, in_max, LM80_REG_IN_MAX)
198
199#define show_fan(suffix, value) \
200static ssize_t show_fan_##suffix(struct device *dev, struct device_attribute *attr, char *buf) \
201{ \
202 int nr = to_sensor_dev_attr(attr)->index; \
203 struct lm80_data *data = lm80_update_device(dev); \
204 return sprintf(buf, "%d\n", FAN_FROM_REG(data->value[nr], \
205 DIV_FROM_REG(data->fan_div[nr]))); \
206}
207show_fan(min, fan_min)
208show_fan(input, fan)
209
210static ssize_t show_fan_div(struct device *dev, struct device_attribute *attr,
211 char *buf)
212{
213 int nr = to_sensor_dev_attr(attr)->index;
214 struct lm80_data *data = lm80_update_device(dev);
215 return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[nr]));
216}
217
218static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
219 const char *buf, size_t count)
220{
221 int nr = to_sensor_dev_attr(attr)->index;
222 struct i2c_client *client = to_i2c_client(dev);
223 struct lm80_data *data = i2c_get_clientdata(client);
224 long val = simple_strtoul(buf, NULL, 10);
225