Source
275
275
WARN_ON_ONCE(1);
276
276
val = 0;
277
277
}
278
278
return val;
279
279
}
280
280
281
281
/*
282
282
* Show boolean, either a fault or an alarm.
283
283
* .nr points to the register, .index is the bit mask to check
284
284
*/
285
-
static ssize_t pem_show_bool(struct device *dev,
286
-
struct device_attribute *da, char *buf)
285
+
static ssize_t pem_bool_show(struct device *dev, struct device_attribute *da,
286
+
char *buf)
287
287
{
288
288
struct sensor_device_attribute_2 *attr = to_sensor_dev_attr_2(da);
289
289
struct pem_data *data = pem_update_device(dev);
290
290
u8 status;
291
291
292
292
if (IS_ERR(data))
293
293
return PTR_ERR(data);
294
294
295
295
status = data->data_string[attr->nr] & attr->index;
296
296
return snprintf(buf, PAGE_SIZE, "%d\n", !!status);
297
297
}
298
298
299
-
static ssize_t pem_show_data(struct device *dev, struct device_attribute *da,
299
+
static ssize_t pem_data_show(struct device *dev, struct device_attribute *da,
300
300
char *buf)
301
301
{
302
302
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
303
303
struct pem_data *data = pem_update_device(dev);
304
304
long value;
305
305
306
306
if (IS_ERR(data))
307
307
return PTR_ERR(data);
308
308
309
309
value = pem_get_data(data->data_string, sizeof(data->data_string),
310
310
attr->index);
311
311
312
312
return snprintf(buf, PAGE_SIZE, "%ld\n", value);
313
313
}
314
314
315
-
static ssize_t pem_show_input(struct device *dev, struct device_attribute *da,
315
+
static ssize_t pem_input_show(struct device *dev, struct device_attribute *da,
316
316
char *buf)
317
317
{
318
318
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
319
319
struct pem_data *data = pem_update_device(dev);
320
320
long value;
321
321
322
322
if (IS_ERR(data))
323
323
return PTR_ERR(data);
324
324
325
325
value = pem_get_input(data->input_string, sizeof(data->input_string),
326
326
attr->index);
327
327
328
328
return snprintf(buf, PAGE_SIZE, "%ld\n", value);
329
329
}
330
330
331
-
static ssize_t pem_show_fan(struct device *dev, struct device_attribute *da,
331
+
static ssize_t pem_fan_show(struct device *dev, struct device_attribute *da,
332
332
char *buf)
333
333
{
334
334
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
335
335
struct pem_data *data = pem_update_device(dev);
336
336
long value;
337
337
338
338
if (IS_ERR(data))
339
339
return PTR_ERR(data);
340
340
341
341
value = pem_get_fan(data->fan_speed, sizeof(data->fan_speed),
342
342
attr->index);
343
343
344
344
return snprintf(buf, PAGE_SIZE, "%ld\n", value);
345
345
}
346
346
347
347
/* Voltages */
348
-
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, pem_show_data, NULL,
349
-
PEM_DATA_VOUT_LSB);
350
-
static SENSOR_DEVICE_ATTR_2(in1_alarm, S_IRUGO, pem_show_bool, NULL,
351
-
PEM_DATA_ALARM_1, ALRM1_VOUT_OUT_LIMIT);
352
-
static SENSOR_DEVICE_ATTR_2(in1_crit_alarm, S_IRUGO, pem_show_bool, NULL,
353
-
PEM_DATA_ALARM_1, ALRM1_OV_VOLT_SHUTDOWN);
354
-
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, pem_show_input, NULL,
355
-
PEM_INPUT_VOLTAGE);
356
-
static SENSOR_DEVICE_ATTR_2(in2_alarm, S_IRUGO, pem_show_bool, NULL,
357
-
PEM_DATA_ALARM_1,
358
-
ALRM1_VIN_OUT_LIMIT | ALRM1_PRIMARY_FAULT);
348
+
static SENSOR_DEVICE_ATTR_RO(in1_input, pem_data, PEM_DATA_VOUT_LSB);
349
+
static SENSOR_DEVICE_ATTR_2_RO(in1_alarm, pem_bool, PEM_DATA_ALARM_1,
350
+
ALRM1_VOUT_OUT_LIMIT);
351
+
static SENSOR_DEVICE_ATTR_2_RO(in1_crit_alarm, pem_bool, PEM_DATA_ALARM_1,
352
+
ALRM1_OV_VOLT_SHUTDOWN);
353
+
static SENSOR_DEVICE_ATTR_RO(in2_input, pem_input, PEM_INPUT_VOLTAGE);
354
+
static SENSOR_DEVICE_ATTR_2_RO(in2_alarm, pem_bool, PEM_DATA_ALARM_1,
355
+
ALRM1_VIN_OUT_LIMIT | ALRM1_PRIMARY_FAULT);
359
356
360
357
/* Currents */
361
-
static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, pem_show_data, NULL,
362
-
PEM_DATA_CURRENT);
363
-
static SENSOR_DEVICE_ATTR_2(curr1_alarm, S_IRUGO, pem_show_bool, NULL,
364
-
PEM_DATA_ALARM_1, ALRM1_VIN_OVERCURRENT);
358
+
static SENSOR_DEVICE_ATTR_RO(curr1_input, pem_data, PEM_DATA_CURRENT);
359
+
static SENSOR_DEVICE_ATTR_2_RO(curr1_alarm, pem_bool, PEM_DATA_ALARM_1,
360
+
ALRM1_VIN_OVERCURRENT);
365
361
366
362
/* Power */
367
-
static SENSOR_DEVICE_ATTR(power1_input, S_IRUGO, pem_show_input, NULL,
368
-
PEM_INPUT_POWER_LSB);
369
-
static SENSOR_DEVICE_ATTR_2(power1_alarm, S_IRUGO, pem_show_bool, NULL,
370
-
PEM_DATA_ALARM_1, ALRM1_POWER_LIMIT);
363
+
static SENSOR_DEVICE_ATTR_RO(power1_input, pem_input, PEM_INPUT_POWER_LSB);
364
+
static SENSOR_DEVICE_ATTR_2_RO(power1_alarm, pem_bool, PEM_DATA_ALARM_1,
365
+
ALRM1_POWER_LIMIT);
371
366
372
367
/* Fans */
373
-
static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, pem_show_fan, NULL,
374
-
PEM_FAN_FAN1);
375
-
static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, pem_show_fan, NULL,
376
-
PEM_FAN_FAN2);
377
-
static SENSOR_DEVICE_ATTR(fan3_input, S_IRUGO, pem_show_fan, NULL,
378
-
PEM_FAN_FAN3);
379
-
static SENSOR_DEVICE_ATTR_2(fan1_alarm, S_IRUGO, pem_show_bool, NULL,
380
-
PEM_DATA_ALARM_2, ALRM2_FAN_FAULT);
368
+
static SENSOR_DEVICE_ATTR_RO(fan1_input, pem_fan, PEM_FAN_FAN1);
369
+
static SENSOR_DEVICE_ATTR_RO(fan2_input, pem_fan, PEM_FAN_FAN2);
370
+
static SENSOR_DEVICE_ATTR_RO(fan3_input, pem_fan, PEM_FAN_FAN3);
371
+
static SENSOR_DEVICE_ATTR_2_RO(fan1_alarm, pem_bool, PEM_DATA_ALARM_2,
372
+
ALRM2_FAN_FAULT);
381
373
382
374
/* Temperatures */
383
-
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, pem_show_data, NULL,
384
-
PEM_DATA_TEMP);
385
-
static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO, pem_show_data, NULL,
386
-
PEM_DATA_TEMP_MAX);
387
-
static SENSOR_DEVICE_ATTR(temp1_crit, S_IRUGO, pem_show_data, NULL,
388
-
PEM_DATA_TEMP_CRIT);
389
-
static SENSOR_DEVICE_ATTR_2(temp1_alarm, S_IRUGO, pem_show_bool, NULL,
390
-
PEM_DATA_ALARM_1, ALRM1_TEMP_WARNING);
391
-
static SENSOR_DEVICE_ATTR_2(temp1_crit_alarm, S_IRUGO, pem_show_bool, NULL,
392
-
PEM_DATA_ALARM_1, ALRM1_TEMP_SHUTDOWN);
393
-
static SENSOR_DEVICE_ATTR_2(temp1_fault, S_IRUGO, pem_show_bool, NULL,
394
-
PEM_DATA_ALARM_2, ALRM2_TEMP_FAULT);
375
+
static SENSOR_DEVICE_ATTR_RO(temp1_input, pem_data, PEM_DATA_TEMP);
376
+
static SENSOR_DEVICE_ATTR_RO(temp1_max, pem_data, PEM_DATA_TEMP_MAX);
377
+
static SENSOR_DEVICE_ATTR_RO(temp1_crit, pem_data, PEM_DATA_TEMP_CRIT);
378
+
static SENSOR_DEVICE_ATTR_2_RO(temp1_alarm, pem_bool, PEM_DATA_ALARM_1,
379
+
ALRM1_TEMP_WARNING);
380
+
static SENSOR_DEVICE_ATTR_2_RO(temp1_crit_alarm, pem_bool, PEM_DATA_ALARM_1,
381
+
ALRM1_TEMP_SHUTDOWN);
382
+
static SENSOR_DEVICE_ATTR_2_RO(temp1_fault, pem_bool, PEM_DATA_ALARM_2,
383
+
ALRM2_TEMP_FAULT);
395
384
396
385
static struct attribute *pem_attributes[] = {
397
386
&sensor_dev_attr_in1_input.dev_attr.attr,
398
387
&sensor_dev_attr_in1_alarm.dev_attr.attr,
399
388
&sensor_dev_attr_in1_crit_alarm.dev_attr.attr,
400
389
&sensor_dev_attr_in2_alarm.dev_attr.attr,
401
390
402
391
&sensor_dev_attr_curr1_alarm.dev_attr.attr,
403
392
404
393
&sensor_dev_attr_power1_alarm.dev_attr.attr,