ACPI: thinkpad-acpi: map ENXIO to EINVAL for fan sysfs
authorHenrique de Moraes Holschuh <hmh@hmh.eng.br>
Sat, 28 Apr 2007 01:00:12 +0000 (22:00 -0300)
committerLen Brown <len.brown@intel.com>
Sun, 29 Apr 2007 01:41:19 +0000 (21:41 -0400)
Currently, all fan control operations return ENXIO if unsupported
operations are requested, but return EINVAL if invalid fan modes are
requested on a given ThinkPad.

This is not strictly correct for sysfs, so map ENXIO to EINVAL in the sysfs
attribute store handlers, as we do benefit from the ENXIO in other parts of
the driver code.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/misc/thinkpad_acpi.c

index b85f0960e608d2ec0cbe3386a297754adfb44cfe..7aed118ca82beba262b14950d09b6819cbbb7f10 100644 (file)
@@ -2824,7 +2824,9 @@ static ssize_t fan_pwm1_enable_store(struct device *dev,
        }
 
        res = fan_set_level_safe(level);
-       if (res < 0)
+       if (res == -ENXIO)
+               return -EINVAL;
+       else if (res < 0)
                return res;
 
        fan_watchdog_reset();
@@ -2888,7 +2890,9 @@ static ssize_t fan_pwm1_store(struct device *dev,
        if (!rc && (status &
                    (TP_EC_FAN_AUTO | TP_EC_FAN_FULLSPEED)) == 0) {
                rc = fan_set_level(newlevel);
-               if (!rc) {
+               if (rc == -ENXIO)
+                       rc = -EINVAL;
+               else if (!rc) {
                        fan_update_desired_level(newlevel);
                        fan_watchdog_reset();
                }