From 5769166303b73a6cf11fad6bdbcb2b24639b5ed2 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Sun, 17 Jun 2007 13:00:02 +0000 Subject: [PATCH] Really preserve the fan speed reading when changing the fan clock divider. git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@4452 7894878c-1315-0410-8ee3-d5d059ff63e0 --- kernel/chips/w83627ehf.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/chips/w83627ehf.c b/kernel/chips/w83627ehf.c index 7ce94b4e..b33bac59 100644 --- a/kernel/chips/w83627ehf.c +++ b/kernel/chips/w83627ehf.c @@ -579,10 +579,11 @@ static void store_fan_min(struct i2c_client *client, long val, int nr) /* Write both the fan clock divider (if it changed) and the new 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] >>= (data->fan_div[nr] - new_div); + data->fan[nr] >>= new_div - data->fan_div[nr]; else - data->fan[nr] <<= (new_div - data->fan_div[nr]); + data->fan[nr] <<= data->fan_div[nr] - new_div; #ifdef DEBUG printk(KERN_DEBUG "w83627ehf: fan%u clock divider changed "