Source
125
125
default:
126
126
/* If we get here, the developer messed up */
127
127
WARN_ON_ONCE(1);
128
128
val = 0;
129
129
break;
130
130
}
131
131
132
132
return val;
133
133
}
134
134
135
-
static ssize_t ltc4261_show_value(struct device *dev,
135
+
static ssize_t ltc4261_value_show(struct device *dev,
136
136
struct device_attribute *da, char *buf)
137
137
{
138
138
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
139
139
struct ltc4261_data *data = ltc4261_update_device(dev);
140
140
int value;
141
141
142
142
if (IS_ERR(data))
143
143
return PTR_ERR(data);
144
144
145
145
value = ltc4261_get_value(data, attr->index);
146
146
return snprintf(buf, PAGE_SIZE, "%d\n", value);
147
147
}
148
148
149
-
static ssize_t ltc4261_show_bool(struct device *dev,
149
+
static ssize_t ltc4261_bool_show(struct device *dev,
150
150
struct device_attribute *da, char *buf)
151
151
{
152
152
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
153
153
struct ltc4261_data *data = ltc4261_update_device(dev);
154
154
u8 fault;
155
155
156
156
if (IS_ERR(data))
157
157
return PTR_ERR(data);
158
158
159
159
fault = data->regs[LTC4261_FAULT] & attr->index;
160
160
if (fault) /* Clear reported faults in chip register */
161
161
i2c_smbus_write_byte_data(data->client, LTC4261_FAULT, ~fault);
162
162
163
163
return snprintf(buf, PAGE_SIZE, "%d\n", fault ? 1 : 0);
164
164
}
165
165
166
166
/*
167
167
* Input voltages.
168
168
*/
169
-
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, ltc4261_show_value, NULL,
170
-
LTC4261_ADIN_H);
171
-
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, ltc4261_show_value, NULL,
172
-
LTC4261_ADIN2_H);
169
+
static SENSOR_DEVICE_ATTR_RO(in1_input, ltc4261_value, LTC4261_ADIN_H);
170
+
static SENSOR_DEVICE_ATTR_RO(in2_input, ltc4261_value, LTC4261_ADIN2_H);
173
171
174
172
/*
175
173
* Voltage alarms. The chip has only one set of voltage alarm status bits,
176
174
* triggered by input voltage alarms. In many designs, those alarms are
177
175
* associated with the ADIN2 sensor, due to the proximity of the ADIN2 pin
178
176
* to the OV pin. ADIN2 is, however, not available on all chip variants.
179
177
* To ensure that the alarm condition is reported to the user, report it
180
178
* with both voltage sensors.
181
179
*/
182
-
static SENSOR_DEVICE_ATTR(in1_min_alarm, S_IRUGO, ltc4261_show_bool, NULL,
183
-
FAULT_UV);
184
-
static SENSOR_DEVICE_ATTR(in1_max_alarm, S_IRUGO, ltc4261_show_bool, NULL,
185
-
FAULT_OV);
186
-
static SENSOR_DEVICE_ATTR(in2_min_alarm, S_IRUGO, ltc4261_show_bool, NULL,
187
-
FAULT_UV);
188
-
static SENSOR_DEVICE_ATTR(in2_max_alarm, S_IRUGO, ltc4261_show_bool, NULL,
189
-
FAULT_OV);
180
+
static SENSOR_DEVICE_ATTR_RO(in1_min_alarm, ltc4261_bool, FAULT_UV);
181
+
static SENSOR_DEVICE_ATTR_RO(in1_max_alarm, ltc4261_bool, FAULT_OV);
182
+
static SENSOR_DEVICE_ATTR_RO(in2_min_alarm, ltc4261_bool, FAULT_UV);
183
+
static SENSOR_DEVICE_ATTR_RO(in2_max_alarm, ltc4261_bool, FAULT_OV);
190
184
191
185
/* Currents (via sense resistor) */
192
-
static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, ltc4261_show_value, NULL,
193
-
LTC4261_SENSE_H);
186
+
static SENSOR_DEVICE_ATTR_RO(curr1_input, ltc4261_value, LTC4261_SENSE_H);
194
187
195
188
/* Overcurrent alarm */
196
-
static SENSOR_DEVICE_ATTR(curr1_max_alarm, S_IRUGO, ltc4261_show_bool, NULL,
197
-
FAULT_OC);
189
+
static SENSOR_DEVICE_ATTR_RO(curr1_max_alarm, ltc4261_bool, FAULT_OC);
198
190
199
191
static struct attribute *ltc4261_attrs[] = {
200
192
&sensor_dev_attr_in1_input.dev_attr.attr,
201
193
&sensor_dev_attr_in1_min_alarm.dev_attr.attr,
202
194
&sensor_dev_attr_in1_max_alarm.dev_attr.attr,
203
195
&sensor_dev_attr_in2_input.dev_attr.attr,
204
196
&sensor_dev_attr_in2_min_alarm.dev_attr.attr,
205
197
&sensor_dev_attr_in2_max_alarm.dev_attr.attr,
206
198
207
199
&sensor_dev_attr_curr1_input.dev_attr.attr,