mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 22:54:05 +08:00
hwmon: (via686a) Initialize fan_div values
Functions set_fan_min() and set_fan_div() assume that the fan_div values have already been read from the register. The driver currently doesn't initialize them at load time, they are only set when function via686a_update_device() is called. This means that set_fan_min() and set_fan_div() misbehave if, for example, "sensors -s" is called before any monitoring application (e.g. "sensors") is has been run. Fix the problem by always initializing the fan_div values at device bind time. Signed-off-by: Jean Delvare <khali@linux-fr.org> Cc: stable@kernel.org Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
This commit is contained in:
parent
014bcd28a0
commit
f790674d3f
@ -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) |
|
||||
|
Loading…
Reference in New Issue
Block a user