aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon
diff options
context:
space:
mode:
authorJean Delvare <khali@linux-fr.org>2010-11-15 15:38:56 -0500
committerJean Delvare <khali@endymion.delvare>2010-11-15 15:38:56 -0500
commitd5ab845a13de7ff2d195917dad8879acfb6d8ff9 (patch)
tree63f66db0cadf410ea084ecade80ea970da92969a /drivers/hwmon
parentae51cd9bcd9ca841bf45c0ba33823c56ac1ce81e (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.c19
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
918static ssize_t 918static ssize_t
919show_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
933static ssize_t
919show_temp_src(struct device *dev, struct device_attribute *attr, char *buf) 934show_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
1701static const struct sensor_device_attribute_2 w83795_pwm[][7] = { 1718static 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),