Source
100
100
101
101
data->next_update = jiffies + HZ + HZ / 2;
102
102
data->valid = 1;
103
103
}
104
104
105
105
mutex_unlock(&data->lock);
106
106
107
107
return data;
108
108
}
109
109
110
-
static ssize_t show_temp_input(struct device *dev,
110
+
static ssize_t temp_input_show(struct device *dev,
111
111
struct device_attribute *attr, char *buf)
112
112
{
113
113
struct ad7414_data *data = ad7414_update_device(dev);
114
114
return sprintf(buf, "%d\n", ad7414_temp_from_reg(data->temp_input));
115
115
}
116
-
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input, NULL, 0);
116
+
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp_input, 0);
117
117
118
-
static ssize_t show_max_min(struct device *dev, struct device_attribute *attr,
119
-
char *buf)
118
+
static ssize_t max_min_show(struct device *dev, struct device_attribute *attr,
119
+
char *buf)
120
120
{
121
121
int index = to_sensor_dev_attr(attr)->index;
122
122
struct ad7414_data *data = ad7414_update_device(dev);
123
123
return sprintf(buf, "%d\n", data->temps[index] * 1000);
124
124
}
125
125
126
-
static ssize_t set_max_min(struct device *dev,
127
-
struct device_attribute *attr,
128
-
const char *buf, size_t count)
126
+
static ssize_t max_min_store(struct device *dev,
127
+
struct device_attribute *attr, const char *buf,
128
+
size_t count)
129
129
{
130
130
struct ad7414_data *data = dev_get_drvdata(dev);
131
131
struct i2c_client *client = data->client;
132
132
int index = to_sensor_dev_attr(attr)->index;
133
133
u8 reg = AD7414_REG_LIMIT[index];
134
134
long temp;
135
135
int ret = kstrtol(buf, 10, &temp);
136
136
137
137
if (ret < 0)
138
138
return ret;
140
140
temp = clamp_val(temp, -40000, 85000);
141
141
temp = (temp + (temp < 0 ? -500 : 500)) / 1000;
142
142
143
143
mutex_lock(&data->lock);
144
144
data->temps[index] = temp;
145
145
ad7414_write(client, reg, temp);
146
146
mutex_unlock(&data->lock);
147
147
return count;
148
148
}
149
149
150
-
static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO,
151
-
show_max_min, set_max_min, 0);
152
-
static SENSOR_DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO,
153
-
show_max_min, set_max_min, 1);
150
+
static SENSOR_DEVICE_ATTR_RW(temp1_max, max_min, 0);
151
+
static SENSOR_DEVICE_ATTR_RW(temp1_min, max_min, 1);
154
152
155
-
static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
153
+
static ssize_t alarm_show(struct device *dev, struct device_attribute *attr,
156
154
char *buf)
157
155
{
158
156
int bitnr = to_sensor_dev_attr(attr)->index;
159
157
struct ad7414_data *data = ad7414_update_device(dev);
160
158
int value = (data->temp_input >> bitnr) & 1;
161
159
return sprintf(buf, "%d\n", value);
162
160
}
163
161
164
-
static SENSOR_DEVICE_ATTR(temp1_min_alarm, S_IRUGO, show_alarm, NULL, 3);
165
-
static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO, show_alarm, NULL, 4);
162
+
static SENSOR_DEVICE_ATTR_RO(temp1_min_alarm, alarm, 3);
163
+
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, alarm, 4);
166
164
167
165
static struct attribute *ad7414_attrs[] = {
168
166
&sensor_dev_attr_temp1_input.dev_attr.attr,
169
167
&sensor_dev_attr_temp1_max.dev_attr.attr,
170
168
&sensor_dev_attr_temp1_min.dev_attr.attr,
171
169
&sensor_dev_attr_temp1_max_alarm.dev_attr.attr,
172
170
&sensor_dev_attr_temp1_min_alarm.dev_attr.attr,
173
171
NULL
174
172
};
175
173