hwmon: (w83795) Exclude fan control feature by default
authorJean Delvare <khali@linux-fr.org>
Thu, 28 Oct 2010 18:31:49 +0000 (20:31 +0200)
committerJean Delvare <khali@endymion.delvare>
Thu, 28 Oct 2010 18:31:49 +0000 (20:31 +0200)
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: Jean Delvare <khali@linux-fr.org>
Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
drivers/hwmon/Kconfig
drivers/hwmon/w83795.c

index d229f45928452d53e93ac1d61a934a0c90d0b849..a06ac97229d94118a3b61e624b6985145872ff03 100644 (file)
@@ -1041,6 +1041,23 @@ config SENSORS_W83795
          This driver can also be built as a module.  If so, the module
          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
        tristate "Winbond W83L785TS-S"
        depends on I2C && EXPERIMENTAL
index a9116ad747f25c524d3c0f3f136649060abea7d3..c461e753f9bf4e4a926d6834e59cf1bcbc06df98 100644 (file)
@@ -1455,6 +1455,7 @@ store_in(struct device *dev, struct device_attribute *attr,
 }
 
 
+#ifdef CONFIG_SENSORS_W83795_FANCTRL
 static ssize_t
 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,
        mutex_unlock(&data->update_lock);
        return count;
 }
+#endif
 
 
 #define NOT_USED                       -1
@@ -1711,6 +1713,7 @@ static const struct sensor_device_attribute_2 sda_single_files[] = {
                      store_chassis_clear, ALARM_STATUS, 46),
        SENSOR_ATTR_2(beep_enable, S_IWUSR | S_IRUGO, show_alarm_beep,
                      store_beep, BEEP_ENABLE, 47),
+#ifdef CONFIG_SENSORS_W83795_FANCTRL
        SENSOR_ATTR_2(speed_cruise_tolerance, S_IWUSR | S_IRUGO, show_fanin,
                store_fanin, FANIN_TOL, NOT_USED),
        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[] = {
                      store_sf_setup, SETUP_PWM_UPTIME, NOT_USED),
        SENSOR_ATTR_2(pwm_downtime, S_IWUSR | S_IRUGO, show_sf_setup,
                      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 *,
                        return err;
        }
 
+#ifdef CONFIG_SENSORS_W83795_FANCTRL
        for (i = 0; i < data->has_pwm; i++) {
                for (j = 0; j < ARRAY_SIZE(w83795_pwm[0]); j++) {
                        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 *,
                                return err;
                }
        }
+#endif
 
        for (i = 0; i < ARRAY_SIZE(w83795_temp); i++) {
                if (!(data->has_temp & (1 << i)))
                        continue;
+#ifdef CONFIG_SENSORS_W83795_FANCTRL
                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);
                        if (err)
                                return err;