aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/i8k.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/i8k.c')
-rw-r--r--drivers/char/i8k.c47
1 files changed, 13 insertions, 34 deletions
diff --git a/drivers/char/i8k.c b/drivers/char/i8k.c
index d915707d2ba1..3dc1a724ecc2 100644
--- a/drivers/char/i8k.c
+++ b/drivers/char/i8k.c
@@ -542,20 +542,6 @@ static ssize_t i8k_hwmon_set_pwm(struct device *dev,
542 return err < 0 ? -EIO : count; 542 return err < 0 ? -EIO : count;
543} 543}
544 544
545static ssize_t i8k_hwmon_show_label(struct device *dev,
546 struct device_attribute *devattr,
547 char *buf)
548{
549 static const char *labels[3] = {
550 "CPU",
551 "Left Fan",
552 "Right Fan",
553 };
554 int index = to_sensor_dev_attr(devattr)->index;
555
556 return sprintf(buf, "%s\n", labels[index]);
557}
558
559static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, i8k_hwmon_show_temp, NULL, 0); 545static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, i8k_hwmon_show_temp, NULL, 0);
560static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, i8k_hwmon_show_temp, NULL, 1); 546static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, i8k_hwmon_show_temp, NULL, 1);
561static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, i8k_hwmon_show_temp, NULL, 2); 547static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, i8k_hwmon_show_temp, NULL, 2);
@@ -568,41 +554,34 @@ static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, i8k_hwmon_show_fan, NULL,
568 I8K_FAN_RIGHT); 554 I8K_FAN_RIGHT);
569static SENSOR_DEVICE_ATTR(pwm2, S_IRUGO | S_IWUSR, i8k_hwmon_show_pwm, 555static SENSOR_DEVICE_ATTR(pwm2, S_IRUGO | S_IWUSR, i8k_hwmon_show_pwm,
570 i8k_hwmon_set_pwm, I8K_FAN_RIGHT); 556 i8k_hwmon_set_pwm, I8K_FAN_RIGHT);
571static SENSOR_DEVICE_ATTR(temp1_label, S_IRUGO, i8k_hwmon_show_label, NULL, 0);
572static SENSOR_DEVICE_ATTR(fan1_label, S_IRUGO, i8k_hwmon_show_label, NULL, 1);
573static SENSOR_DEVICE_ATTR(fan2_label, S_IRUGO, i8k_hwmon_show_label, NULL, 2);
574 557
575static struct attribute *i8k_attrs[] = { 558static struct attribute *i8k_attrs[] = {
576 &sensor_dev_attr_temp1_input.dev_attr.attr, /* 0 */ 559 &sensor_dev_attr_temp1_input.dev_attr.attr, /* 0 */
577 &sensor_dev_attr_temp1_label.dev_attr.attr, /* 1 */ 560 &sensor_dev_attr_temp2_input.dev_attr.attr, /* 1 */
578 &sensor_dev_attr_temp2_input.dev_attr.attr, /* 2 */ 561 &sensor_dev_attr_temp3_input.dev_attr.attr, /* 2 */
579 &sensor_dev_attr_temp3_input.dev_attr.attr, /* 3 */ 562 &sensor_dev_attr_temp4_input.dev_attr.attr, /* 3 */
580 &sensor_dev_attr_temp4_input.dev_attr.attr, /* 4 */ 563 &sensor_dev_attr_fan1_input.dev_attr.attr, /* 4 */
581 &sensor_dev_attr_fan1_input.dev_attr.attr, /* 5 */ 564 &sensor_dev_attr_pwm1.dev_attr.attr, /* 5 */
582 &sensor_dev_attr_pwm1.dev_attr.attr, /* 6 */ 565 &sensor_dev_attr_fan2_input.dev_attr.attr, /* 6 */
583 &sensor_dev_attr_fan1_label.dev_attr.attr, /* 7 */ 566 &sensor_dev_attr_pwm2.dev_attr.attr, /* 7 */
584 &sensor_dev_attr_fan2_input.dev_attr.attr, /* 8 */
585 &sensor_dev_attr_pwm2.dev_attr.attr, /* 9 */
586 &sensor_dev_attr_fan2_label.dev_attr.attr, /* 10 */
587 NULL 567 NULL
588}; 568};
589 569
590static umode_t i8k_is_visible(struct kobject *kobj, struct attribute *attr, 570static umode_t i8k_is_visible(struct kobject *kobj, struct attribute *attr,
591 int index) 571 int index)
592{ 572{
593 if ((index == 0 || index == 1) && 573 if (index == 0 && !(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP1))
594 !(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP1))
595 return 0; 574 return 0;
596 if (index == 2 && !(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP2)) 575 if (index == 1 && !(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP2))
597 return 0; 576 return 0;
598 if (index == 3 && !(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP3)) 577 if (index == 2 && !(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP3))
599 return 0; 578 return 0;
600 if (index == 4 && !(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP4)) 579 if (index == 3 && !(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP4))
601 return 0; 580 return 0;
602 if (index >= 5 && index <= 7 && 581 if (index >= 4 && index <= 5 &&
603 !(i8k_hwmon_flags & I8K_HWMON_HAVE_FAN1)) 582 !(i8k_hwmon_flags & I8K_HWMON_HAVE_FAN1))
604 return 0; 583 return 0;
605 if (index >= 8 && index <= 10 && 584 if (index >= 6 && index <= 7 &&
606 !(i8k_hwmon_flags & I8K_HWMON_HAVE_FAN2)) 585 !(i8k_hwmon_flags & I8K_HWMON_HAVE_FAN2))
607 return 0; 586 return 0;
608 587