Commit 492e9657d1a790f44ab9b0e03fc72c1d8145f590

Authored by Jim Cromie
Committed by Linus Torvalds
1 parent 28f74e7177

hwmon/pc87360 separate alarm files: add in-min/max-alarms

Adds vin-min/max-alarm callbacks, sensor-device-attribute declarations,
and refs to those new decls in the macro used to initialize the vin_group
(of sysfs files)

[akpm@linux-foundation.org: cleanups]
Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
Cc: Jean Delvare <khali@linux-fr.org>
Cc: "Mark M. Hoffman" <mhoffman@lightlink.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 51 additions and 1 deletions Side-by-side Diff

drivers/hwmon/pc87360.c
... ... @@ -494,11 +494,61 @@
494 494 #define CHAN_ALM_MAX 0x04 /* max limit exceeded */
495 495 #define TEMP_ALM_CRIT 0x08 /* temp crit exceeded (temp only) */
496 496  
  497 +/* show_in_min/max_alarm() reads data from the per-channel status
  498 + register (sec 11.5.12), not the vin event status registers (sec
  499 + 11.5.2) that (legacy) show_in_alarm() resds (via data->in_alarms) */
  500 +
  501 +static ssize_t show_in_min_alarm(struct device *dev,
  502 + struct device_attribute *devattr, char *buf)
  503 +{
  504 + struct pc87360_data *data = pc87360_update_device(dev);
  505 + unsigned nr = to_sensor_dev_attr(devattr)->index;
  506 +
  507 + return sprintf(buf, "%u\n", !!(data->in_status[nr] & CHAN_ALM_MIN));
  508 +}
  509 +static ssize_t show_in_max_alarm(struct device *dev,
  510 + struct device_attribute *devattr, char *buf)
  511 +{
  512 + struct pc87360_data *data = pc87360_update_device(dev);
  513 + unsigned nr = to_sensor_dev_attr(devattr)->index;
  514 +
  515 + return sprintf(buf, "%u\n", !!(data->in_status[nr] & CHAN_ALM_MAX));
  516 +}
  517 +
  518 +static struct sensor_device_attribute in_min_alarm[] = {
  519 + SENSOR_ATTR(in0_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 0),
  520 + SENSOR_ATTR(in1_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 1),
  521 + SENSOR_ATTR(in2_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 2),
  522 + SENSOR_ATTR(in3_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 3),
  523 + SENSOR_ATTR(in4_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 4),
  524 + SENSOR_ATTR(in5_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 5),
  525 + SENSOR_ATTR(in6_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 6),
  526 + SENSOR_ATTR(in7_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 7),
  527 + SENSOR_ATTR(in8_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 8),
  528 + SENSOR_ATTR(in9_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 9),
  529 + SENSOR_ATTR(in10_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 10),
  530 +};
  531 +static struct sensor_device_attribute in_max_alarm[] = {
  532 + SENSOR_ATTR(in0_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 0),
  533 + SENSOR_ATTR(in1_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 1),
  534 + SENSOR_ATTR(in2_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 2),
  535 + SENSOR_ATTR(in3_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 3),
  536 + SENSOR_ATTR(in4_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 4),
  537 + SENSOR_ATTR(in5_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 5),
  538 + SENSOR_ATTR(in6_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 6),
  539 + SENSOR_ATTR(in7_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 7),
  540 + SENSOR_ATTR(in8_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 8),
  541 + SENSOR_ATTR(in9_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 9),
  542 + SENSOR_ATTR(in10_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 10),
  543 +};
  544 +
497 545 #define VIN_UNIT_ATTRS(X) \
498 546 &in_input[X].dev_attr.attr, \
499 547 &in_status[X].dev_attr.attr, \
500 548 &in_min[X].dev_attr.attr, \
501   - &in_max[X].dev_attr.attr
  549 + &in_max[X].dev_attr.attr, \
  550 + &in_min_alarm[X].dev_attr.attr, \
  551 + &in_max_alarm[X].dev_attr.attr
502 552  
503 553 static ssize_t show_vid(struct device *dev, struct device_attribute *attr, char *buf)
504 554 {