|
@@ -689,6 +689,13 @@ static int __devexit via686a_remove(struct platform_device *pdev)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static void via686a_update_fan_div(struct via686a_data *data)
|
|
|
+{
|
|
|
+ int reg = via686a_read_value(data, VIA686A_REG_FANDIV);
|
|
|
+ data->fan_div[0] = (reg >> 4) & 0x03;
|
|
|
+ data->fan_div[1] = reg >> 6;
|
|
|
+}
|
|
|
+
|
|
|
static void __devinit via686a_init_device(struct via686a_data *data)
|
|
|
{
|
|
|
u8 reg;
|
|
@@ -702,6 +709,9 @@ static void __devinit via686a_init_device(struct via686a_data *data)
|
|
|
via686a_write_value(data, VIA686A_REG_TEMP_MODE,
|
|
|
(reg & ~VIA686A_TEMP_MODE_MASK)
|
|
|
| VIA686A_TEMP_MODE_CONTINUOUS);
|
|
|
+
|
|
|
+ /* Pre-read fan clock divisor values */
|
|
|
+ via686a_update_fan_div(data);
|
|
|
}
|
|
|
|
|
|
static struct via686a_data *via686a_update_device(struct device *dev)
|
|
@@ -753,9 +763,7 @@ static struct via686a_data *via686a_update_device(struct device *dev)
|
|
|
(via686a_read_value(data, VIA686A_REG_TEMP_LOW23) &
|
|
|
0xc0) >> 6;
|
|
|
|
|
|
- i = via686a_read_value(data, VIA686A_REG_FANDIV);
|
|
|
- data->fan_div[0] = (i >> 4) & 0x03;
|
|
|
- data->fan_div[1] = i >> 6;
|
|
|
+ via686a_update_fan_div(data);
|
|
|
data->alarms =
|
|
|
via686a_read_value(data,
|
|
|
VIA686A_REG_ALARM1) |
|