From 2362e26b04fbe4d2f65919fb05d091f0474e2ead Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Sun, 17 Jun 2007 18:52:53 +0000 Subject: [PATCH] Really preserve the fan speed reading when changing the fan clock divider. Changeset r4452 was incomplete. git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@4454 7894878c-1315-0410-8ee3-d5d059ff63e0 --- kernel/chips/w83627ehf.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/kernel/chips/w83627ehf.c b/kernel/chips/w83627ehf.c index 53423957..7a21a032 100644 --- a/kernel/chips/w83627ehf.c +++ b/kernel/chips/w83627ehf.c @@ -589,10 +589,14 @@ static void store_fan_min(struct i2c_client *client, long val, int nr) fan min (unconditionally) */ if (new_div != data->fan_div[nr]) { /* Preserve the fan speed reading */ - if (new_div > data->fan_div[nr]) - data->fan[nr] >>= new_div - data->fan_div[nr]; - else - data->fan[nr] <<= data->fan_div[nr] - new_div; + if (data->fan[nr] != 0xff) { + if (new_div > data->fan_div[nr]) + data->fan[nr] >>= new_div - data->fan_div[nr]; + else if (data->fan[nr] & 0x80) + data->fan[nr] = 0xff; + else + data->fan[nr] <<= data->fan_div[nr] - new_div; + } #ifdef DEBUG printk(KERN_DEBUG "w83627ehf: fan%u clock divider changed "