|
@@ -308,10 +308,8 @@ struct lm85_data {
|
|
|
u8 pwm[3]; /* Register value */
|
|
|
u8 temp_ext[3]; /* Decoded values */
|
|
|
u8 in_ext[8]; /* Decoded values */
|
|
|
- u8 smooth[1]; /* Register encoding */
|
|
|
u8 vid; /* Register value */
|
|
|
u8 vrm; /* VRM version */
|
|
|
- u8 syncpwm3; /* Saved PWM3 for TACH 2,3,4 config */
|
|
|
u32 alarms; /* Register encoding, combined */
|
|
|
struct lm85_autofan autofan[3];
|
|
|
struct lm85_zone zone[3];
|
|
@@ -756,14 +754,15 @@ static ssize_t set_pwm_auto_pwm_minctl(struct device *dev,
|
|
|
struct i2c_client *client = to_i2c_client(dev);
|
|
|
struct lm85_data *data = i2c_get_clientdata(client);
|
|
|
long val = simple_strtol(buf, NULL, 10);
|
|
|
+ u8 tmp;
|
|
|
|
|
|
mutex_lock(&data->update_lock);
|
|
|
data->autofan[nr].min_off = val;
|
|
|
- lm85_write_value(client, LM85_REG_AFAN_SPIKE1, data->smooth[0]
|
|
|
- | data->syncpwm3
|
|
|
- | (data->autofan[0].min_off ? 0x20 : 0)
|
|
|
- | (data->autofan[1].min_off ? 0x40 : 0)
|
|
|
- | (data->autofan[2].min_off ? 0x80 : 0));
|
|
|
+ tmp = lm85_read_value(client, LM85_REG_AFAN_SPIKE1);
|
|
|
+ tmp &= ~(0x20 << nr);
|
|
|
+ if (data->autofan[nr].min_off)
|
|
|
+ tmp |= 0x20 << nr;
|
|
|
+ lm85_write_value(client, LM85_REG_AFAN_SPIKE1, tmp);
|
|
|
mutex_unlock(&data->update_lock);
|
|
|
return count;
|
|
|
}
|
|
@@ -1531,8 +1530,6 @@ static struct lm85_data *lm85_update_device(struct device *dev)
|
|
|
}
|
|
|
|
|
|
i = lm85_read_value(client, LM85_REG_AFAN_SPIKE1);
|
|
|
- data->smooth[0] = i & 0x0f;
|
|
|
- data->syncpwm3 = i & 0x10; /* Save PWM3 config */
|
|
|
data->autofan[0].min_off = (i & 0x20) != 0;
|
|
|
data->autofan[1].min_off = (i & 0x40) != 0;
|
|
|
data->autofan[2].min_off = (i & 0x80) != 0;
|