Content-Disposition: inline; filename=hwmon-f71805f-add-fanctl-1-prepare.patch f71805f: Store the fan control registers So far we were only extracting the fan skip bit from the fan control registers, but we'll soon need more bits so better store the whole register values. Signed-off-by: Jean Delvare --- drivers/hwmon/f71805f.c | 26 +++++++++++++++----------- 1 files changed, 15 insertions(+), 11 deletions(-) --- linux-2.6.18-rc5.orig/drivers/hwmon/f71805f.c 2006-09-04 11:07:24.000000000 +0200 +++ linux-2.6.18-rc5/drivers/hwmon/f71805f.c 2006-09-04 12:02:09.000000000 +0200 @@ -122,6 +122,9 @@ /* status nr from 0 to 2 */ #define F71805F_REG_STATUS(nr) (0x36 + (nr)) +/* individual register bits */ +#define FAN_CTRL_SKIP 0x80 + /* * Data structures and manipulation thereof */ @@ -143,7 +146,7 @@ u8 in_low[9]; u16 fan[3]; u16 fan_low[3]; - u8 fan_enabled; /* Read once at init time */ + u8 fan_ctrl[3]; u8 temp[3]; u8 temp_high[3]; u8 temp_hyst[3]; @@ -281,9 +284,10 @@ F71805F_REG_IN_LOW(nr)); } for (nr = 0; nr < 3; nr++) { - if (data->fan_enabled & (1 << nr)) - data->fan_low[nr] = f71805f_read16(data, - F71805F_REG_FAN_LOW(nr)); + if (data->fan_ctrl[nr] & FAN_CTRL_SKIP) + continue; + data->fan_low[nr] = f71805f_read16(data, + F71805F_REG_FAN_LOW(nr)); } for (nr = 0; nr < 3; nr++) { data->temp_high[nr] = f71805f_read8(data, @@ -304,9 +308,10 @@ F71805F_REG_IN(nr)); } for (nr = 0; nr < 3; nr++) { - if (data->fan_enabled & (1 << nr)) - data->fan[nr] = f71805f_read16(data, - F71805F_REG_FAN(nr)); + if (data->fan_ctrl[nr] & FAN_CTRL_SKIP) + continue; + data->fan[nr] = f71805f_read16(data, + F71805F_REG_FAN(nr)); } for (nr = 0; nr < 3; nr++) { data->temp[nr] = f71805f_read8(data, @@ -798,9 +803,8 @@ /* Fan monitoring can be disabled. If it is, we won't be polling the register values, and won't create the related sysfs files. */ for (i = 0; i < 3; i++) { - reg = f71805f_read8(data, F71805F_REG_FAN_CTRL(i)); - if (!(reg & 0x80)) - data->fan_enabled |= (1 << i); + data->fan_ctrl[i] = f71805f_read8(data, + F71805F_REG_FAN_CTRL(i)); } } @@ -831,7 +835,7 @@ if ((err = sysfs_create_group(&pdev->dev.kobj, &f71805f_group))) goto exit_free; for (i = 0; i < 3; i++) { - if (!(data->fan_enabled & (1 << i))) + if (data->fan_ctrl[i] & FAN_CTRL_SKIP) continue; if ((err = sysfs_create_group(&pdev->dev.kobj, &f71805f_group_fan[i])))