diff options
author | Jean Delvare <khali@linux-fr.org> | 2010-11-15 15:38:56 -0500 |
---|---|---|
committer | Jean Delvare <khali@endymion.delvare> | 2010-11-15 15:38:56 -0500 |
commit | d5ab845a13de7ff2d195917dad8879acfb6d8ff9 (patch) | |
tree | 63f66db0cadf410ea084ecade80ea970da92969a /drivers/hwmon | |
parent | ae51cd9bcd9ca841bf45c0ba33823c56ac1ce81e (diff) |
hwmon: (w83795) Expose fan control method
Expose fan control method (DC vs. PWM) using the standard sysfs
attributes. I've made it read-only as the board should be wired for
a given mode, the BIOS should have set up the chip for this mode, and
you shouldn't have to change it. But it would be easy enough to make
it changeable if someone comes up with a use case.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/w83795.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c index fd96e72adde0..95b1f860c14e 100644 --- a/drivers/hwmon/w83795.c +++ b/drivers/hwmon/w83795.c | |||
@@ -916,6 +916,21 @@ store_pwm_enable(struct device *dev, struct device_attribute *attr, | |||
916 | } | 916 | } |
917 | 917 | ||
918 | static ssize_t | 918 | static ssize_t |
919 | show_pwm_mode(struct device *dev, struct device_attribute *attr, char *buf) | ||
920 | { | ||
921 | struct w83795_data *data = w83795_update_pwm_config(dev); | ||
922 | int index = to_sensor_dev_attr_2(attr)->index; | ||
923 | unsigned int mode; | ||
924 | |||
925 | if (data->pwm_fomc & (1 << index)) | ||
926 | mode = 0; /* DC */ | ||
927 | else | ||
928 | mode = 1; /* PWM */ | ||
929 | |||
930 | return sprintf(buf, "%u\n", mode); | ||
931 | } | ||
932 | |||
933 | static ssize_t | ||
919 | show_temp_src(struct device *dev, struct device_attribute *attr, char *buf) | 934 | show_temp_src(struct device *dev, struct device_attribute *attr, char *buf) |
920 | { | 935 | { |
921 | struct sensor_device_attribute_2 *sensor_attr = | 936 | struct sensor_device_attribute_2 *sensor_attr = |
@@ -1551,6 +1566,8 @@ store_sf_setup(struct device *dev, struct device_attribute *attr, | |||
1551 | show_pwm, store_pwm, PWM_FREQ, index - 1), \ | 1566 | show_pwm, store_pwm, PWM_FREQ, index - 1), \ |
1552 | SENSOR_ATTR_2(pwm##index##_enable, S_IWUSR | S_IRUGO, \ | 1567 | SENSOR_ATTR_2(pwm##index##_enable, S_IWUSR | S_IRUGO, \ |
1553 | show_pwm_enable, store_pwm_enable, NOT_USED, index - 1), \ | 1568 | show_pwm_enable, store_pwm_enable, NOT_USED, index - 1), \ |
1569 | SENSOR_ATTR_2(pwm##index##_mode, S_IRUGO, \ | ||
1570 | show_pwm_mode, NULL, NOT_USED, index - 1), \ | ||
1554 | SENSOR_ATTR_2(fan##index##_target, S_IWUSR | S_IRUGO, \ | 1571 | SENSOR_ATTR_2(fan##index##_target, S_IWUSR | S_IRUGO, \ |
1555 | show_fanin, store_fanin, FANIN_TARGET, index - 1) } | 1572 | show_fanin, store_fanin, FANIN_TARGET, index - 1) } |
1556 | 1573 | ||
@@ -1698,7 +1715,7 @@ static const struct sensor_device_attribute_2 w83795_dts[][8] = { | |||
1698 | SENSOR_ATTR_DTS(14), | 1715 | SENSOR_ATTR_DTS(14), |
1699 | }; | 1716 | }; |
1700 | 1717 | ||
1701 | static const struct sensor_device_attribute_2 w83795_pwm[][7] = { | 1718 | static const struct sensor_device_attribute_2 w83795_pwm[][8] = { |
1702 | SENSOR_ATTR_PWM(1), | 1719 | SENSOR_ATTR_PWM(1), |
1703 | SENSOR_ATTR_PWM(2), | 1720 | SENSOR_ATTR_PWM(2), |
1704 | SENSOR_ATTR_PWM(3), | 1721 | SENSOR_ATTR_PWM(3), |