Skip to contentSkip to conversation

hwmon: (gl518sm) Report error on invalid

PATCH In review Jean Delvare 1 participant 1 message Oct 22, 2007 Hardware monitoring

lore
Share & tools
lore
#0 lore raw

PATCH 5/5 hwmon: (gl518sm) Report error on invalid

If the user attempts to write a fan clock divider not supported by the chip, an error should be returned.

---
 drivers/hwmon/gl518sm.c |   14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)
drivers/hwmon/gl518sm.c +12 -2
@@ -107,7 +107,6 @@ static inline u8 FAN_TO_REG(long rpm, in
 #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
 	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);
Signature · 6 lines
Jean Delvare

_______________________________________________
lm-sensors mailing list
[email protected]
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors