Commit 00030af2 authored by Jean Delvare's avatar Jean Delvare Committed by Jean Delvare

hwmon: (w83795) Exclude fan control feature by default

The fan control feature of the w83795 driver is insufficiently
reviewed and tested for public consumption at this time, so make it
optional and disabled by default. We will change the default when
review and testing is deemed sufficient. Ultimately the option will
go away.
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Acked-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
parent e3760b43
...@@ -1041,6 +1041,23 @@ config SENSORS_W83795 ...@@ -1041,6 +1041,23 @@ config SENSORS_W83795
This driver can also be built as a module. If so, the module This driver can also be built as a module. If so, the module
will be called w83795. will be called w83795.
config SENSORS_W83795_FANCTRL
boolean "Include fan control support (DANGEROUS)"
depends on SENSORS_W83795 && EXPERIMENTAL
default n
help
If you say yes here, support for the both manual and automatic
fan control features will be included in the driver.
This part of the code wasn't carefully reviewed and tested yet,
so enabling this option is strongly discouraged on production
servers. Only developers and testers should enable it for the
time being.
Please also note that this option will create sysfs attribute
files which may change in the future, so you shouldn't rely
on them being stable.
config SENSORS_W83L785TS config SENSORS_W83L785TS
tristate "Winbond W83L785TS-S" tristate "Winbond W83L785TS-S"
depends on I2C && EXPERIMENTAL depends on I2C && EXPERIMENTAL
......
...@@ -1455,6 +1455,7 @@ store_in(struct device *dev, struct device_attribute *attr, ...@@ -1455,6 +1455,7 @@ store_in(struct device *dev, struct device_attribute *attr,
} }
#ifdef CONFIG_SENSORS_W83795_FANCTRL
static ssize_t static ssize_t
show_sf_setup(struct device *dev, struct device_attribute *attr, char *buf) show_sf_setup(struct device *dev, struct device_attribute *attr, char *buf)
{ {
...@@ -1506,6 +1507,7 @@ store_sf_setup(struct device *dev, struct device_attribute *attr, ...@@ -1506,6 +1507,7 @@ store_sf_setup(struct device *dev, struct device_attribute *attr,
mutex_unlock(&data->update_lock); mutex_unlock(&data->update_lock);
return count; return count;
} }
#endif
#define NOT_USED -1 #define NOT_USED -1
...@@ -1711,6 +1713,7 @@ static const struct sensor_device_attribute_2 sda_single_files[] = { ...@@ -1711,6 +1713,7 @@ static const struct sensor_device_attribute_2 sda_single_files[] = {
store_chassis_clear, ALARM_STATUS, 46), store_chassis_clear, ALARM_STATUS, 46),
SENSOR_ATTR_2(beep_enable, S_IWUSR | S_IRUGO, show_alarm_beep, SENSOR_ATTR_2(beep_enable, S_IWUSR | S_IRUGO, show_alarm_beep,
store_beep, BEEP_ENABLE, 47), store_beep, BEEP_ENABLE, 47),
#ifdef CONFIG_SENSORS_W83795_FANCTRL
SENSOR_ATTR_2(speed_cruise_tolerance, S_IWUSR | S_IRUGO, show_fanin, SENSOR_ATTR_2(speed_cruise_tolerance, S_IWUSR | S_IRUGO, show_fanin,
store_fanin, FANIN_TOL, NOT_USED), store_fanin, FANIN_TOL, NOT_USED),
SENSOR_ATTR_2(pwm_default, S_IWUSR | S_IRUGO, show_sf_setup, SENSOR_ATTR_2(pwm_default, S_IWUSR | S_IRUGO, show_sf_setup,
...@@ -1719,6 +1722,7 @@ static const struct sensor_device_attribute_2 sda_single_files[] = { ...@@ -1719,6 +1722,7 @@ static const struct sensor_device_attribute_2 sda_single_files[] = {
store_sf_setup, SETUP_PWM_UPTIME, NOT_USED), store_sf_setup, SETUP_PWM_UPTIME, NOT_USED),
SENSOR_ATTR_2(pwm_downtime, S_IWUSR | S_IRUGO, show_sf_setup, SENSOR_ATTR_2(pwm_downtime, S_IWUSR | S_IRUGO, show_sf_setup,
store_sf_setup, SETUP_PWM_DOWNTIME, NOT_USED), store_sf_setup, SETUP_PWM_DOWNTIME, NOT_USED),
#endif
}; };
/* /*
...@@ -1872,6 +1876,7 @@ static int w83795_handle_files(struct device *dev, int (*fn)(struct device *, ...@@ -1872,6 +1876,7 @@ static int w83795_handle_files(struct device *dev, int (*fn)(struct device *,
return err; return err;
} }
#ifdef CONFIG_SENSORS_W83795_FANCTRL
for (i = 0; i < data->has_pwm; i++) { for (i = 0; i < data->has_pwm; i++) {
for (j = 0; j < ARRAY_SIZE(w83795_pwm[0]); j++) { for (j = 0; j < ARRAY_SIZE(w83795_pwm[0]); j++) {
err = fn(dev, &w83795_pwm[i][j].dev_attr); err = fn(dev, &w83795_pwm[i][j].dev_attr);
...@@ -1879,11 +1884,16 @@ static int w83795_handle_files(struct device *dev, int (*fn)(struct device *, ...@@ -1879,11 +1884,16 @@ static int w83795_handle_files(struct device *dev, int (*fn)(struct device *,
return err; return err;
} }
} }
#endif
for (i = 0; i < ARRAY_SIZE(w83795_temp); i++) { for (i = 0; i < ARRAY_SIZE(w83795_temp); i++) {
if (!(data->has_temp & (1 << i))) if (!(data->has_temp & (1 << i)))
continue; continue;
#ifdef CONFIG_SENSORS_W83795_FANCTRL
for (j = 0; j < ARRAY_SIZE(w83795_temp[0]); j++) { for (j = 0; j < ARRAY_SIZE(w83795_temp[0]); j++) {
#else
for (j = 0; j < 8; j++) {
#endif
err = fn(dev, &w83795_temp[i][j].dev_attr); err = fn(dev, &w83795_temp[i][j].dev_attr);
if (err) if (err)
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment