Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=21df67b191fd612fa28aedd39ec1414d8effc454
Commit:     21df67b191fd612fa28aedd39ec1414d8effc454
Parent:     da6848da293b88e5ac46f5ecc6ae41122d5f680b
Author:     Jean Delvare <[EMAIL PROTECTED]>
AuthorDate: Mon Oct 22 17:47:58 2007 +0200
Committer:  Mark M. Hoffman <[EMAIL PROTECTED]>
CommitDate: Thu Feb 7 20:39:41 2008 -0500

    hwmon: (gl518sm) Report error on invalid fan div value
    
    If the user attempts to write a fan clock divider not supported by
    the chip, an error should be returned.
    
    Signed-off-by: Jean Delvare <[EMAIL PROTECTED]>
    Signed-off-by: Mark M. Hoffman <[EMAIL PROTECTED]>
---
 drivers/hwmon/gl518sm.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/hwmon/gl518sm.c b/drivers/hwmon/gl518sm.c
index 535ad87..c525511 100644
--- a/drivers/hwmon/gl518sm.c
+++ b/drivers/hwmon/gl518sm.c
@@ -107,7 +107,6 @@ static inline u8 FAN_TO_REG(long rpm, int div)
 #define VDD_TO_REG(val)                (SENSORS_LIMIT((((val)*4+47)/95),0,255))
 #define VDD_FROM_REG(val)      (((val)*95+2)/4)
 
-#define DIV_TO_REG(val)                ((val)==4?2:(val)==2?1:(val)==1?0:3)
 #define DIV_FROM_REG(val)      (1 << (val))
 
 #define BEEP_MASK_TO_REG(val)  ((val) & 0x7f & data->alarm_mask)
@@ -302,9 +301,20 @@ static ssize_t set_fan_div(struct device *dev, struct 
device_attribute *attr,
        int regvalue;
        unsigned long val = simple_strtoul(buf, NULL, 10);
 
+       switch (val) {
+       case 1: val = 0; break;
+       case 2: val = 1; break;
+       case 4: val = 2; break;
+       case 8: val = 3; break;
+       default:
+               dev_err(dev, "Invalid fan clock divider %lu, choose one "
+                       "of 1, 2, 4 or 8\n", val);
+               return -EINVAL;
+       }
+
        mutex_lock(&data->update_lock);
        regvalue = gl518_read_value(client, GL518_REG_MISC);
-       data->fan_div[nr] = DIV_TO_REG(val);
+       data->fan_div[nr] = val;
        regvalue = (regvalue & ~(0xc0 >> (2 * nr)))
                 | (data->fan_div[nr] << (6 - 2 * nr));
        gl518_write_value(client, GL518_REG_MISC, regvalue);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to