147
148static const struct i2c_device_id lm80_id[] = {
149 { "lm80", lm80 },
150 { }
151};
152MODULE_DEVICE_TABLE(i2c, lm80_id);
153
154static struct i2c_driver lm80_driver = {
155 .class = I2C_CLASS_HWMON,
156 .driver = {
157 .name = "lm80",
158 },
159 .probe = lm80_probe,
160 .remove = lm80_remove,
161 .id_table = lm80_id,
162 .detect = lm80_detect,
163 .address_data = &addr_data,
164};
165
166
167
168
169
170#define show_in(suffix, value) \
171static ssize_t show_in_##suffix(struct device *dev, struct device_attribute *attr, char *buf) \
172{ \
173 int nr = to_sensor_dev_attr(attr)->index; \
174 struct lm80_data *data = lm80_update_device(dev); \
175 return sprintf(buf, "%d\n", IN_FROM_REG(data->value[nr])); \
176}
177show_in(min, in_min)
178show_in(max, in_max)
179show_in(input, in)
180
181#define set_in(suffix, value, reg) \
182static ssize_t set_in_##suffix(struct device *dev, struct device_attribute *attr, const char *buf, \
183 size_t count) \
184{ \
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); \