diff options
author | Corentin Labbe <corentin.labbe@geomatys.fr> | 2008-10-17 11:51:20 -0400 |
---|---|---|
committer | Jean Delvare <khali@mahadeva.delvare> | 2008-10-17 11:51:20 -0400 |
commit | 366716e6aabfb6f7c65525cc1637e035bfaf422d (patch) | |
tree | a08980a1795a0338c6d96ac41f61efebeb937c1a /drivers/hwmon | |
parent | d664a4809e73c878a43607d584b2e2b60fd07468 (diff) |
hwmon: (adm1029) Use mask for fan_div value
This is my patch for testing correct values of fan div in adm1029 and
prevent a division by 0 for some (unlikely) register values.
Signed-off-by: Corentin Labbe <corentin.labbe@geomatys.fr>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/adm1029.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/hwmon/adm1029.c b/drivers/hwmon/adm1029.c index ba84ca5923f9..36718150b475 100644 --- a/drivers/hwmon/adm1029.c +++ b/drivers/hwmon/adm1029.c | |||
@@ -179,7 +179,8 @@ show_fan(struct device *dev, struct device_attribute *devattr, char *buf) | |||
179 | struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); | 179 | struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); |
180 | struct adm1029_data *data = adm1029_update_device(dev); | 180 | struct adm1029_data *data = adm1029_update_device(dev); |
181 | u16 val; | 181 | u16 val; |
182 | if (data->fan[attr->index] == 0 || data->fan_div[attr->index] == 0 | 182 | if (data->fan[attr->index] == 0 |
183 | || (data->fan_div[attr->index] & 0xC0) == 0 | ||
183 | || data->fan[attr->index] == 255) { | 184 | || data->fan[attr->index] == 255) { |
184 | return sprintf(buf, "0\n"); | 185 | return sprintf(buf, "0\n"); |
185 | } | 186 | } |
@@ -194,7 +195,7 @@ show_fan_div(struct device *dev, struct device_attribute *devattr, char *buf) | |||
194 | { | 195 | { |
195 | struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); | 196 | struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); |
196 | struct adm1029_data *data = adm1029_update_device(dev); | 197 | struct adm1029_data *data = adm1029_update_device(dev); |
197 | if (data->fan_div[attr->index] == 0) | 198 | if ((data->fan_div[attr->index] & 0xC0) == 0) |
198 | return sprintf(buf, "0\n"); | 199 | return sprintf(buf, "0\n"); |
199 | return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[attr->index])); | 200 | return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[attr->index])); |
200 | } | 201 | } |