mirror of
https://github.com/lm-sensors/lm-sensors.git
synced 2026-11-09 16:21:51 +00:00
Fan value problems resolved
git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@128 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
1 parent
2e8b49295a
commit
b827b9a68e
6 files changed
+24
-20
No files matched your search
+8
-6
@@ -67,9 +67,9 @@
|
||||
#define IN_TO_REG(val) (((val) * 10 + 8)/16)
|
||||
#define IN_FROM_REG(val) (((val) * 16) / 10)
|
||||
|
||||
#define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val))/\
|
||||
((val)*2*(div))) & 0xff)
|
||||
#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*2*(div)))
|
||||
#define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val)*(div)/2)/\
|
||||
((val)*(div))) & 0xff)
|
||||
#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div)))
|
||||
|
||||
#define TEMP_TO_REG(val) (((val)<0?(((val)-5)/10)&0xff:((val)+5)/10) & 0xff)
|
||||
#define TEMP_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*10)
|
||||
@@ -173,7 +173,7 @@ struct lm78_data {
|
||||
u8 temp; /* Register value */
|
||||
u8 temp_over; /* Register value */
|
||||
u8 temp_hyst; /* Register value */
|
||||
u8 fan_div[2]; /* Register encoding, shifted right */
|
||||
u8 fan_div[3]; /* Register encoding, shifted right */
|
||||
u8 vid; /* Register encoding, combined */
|
||||
u16 alarms; /* Register encoding, combined */
|
||||
};
|
||||
@@ -726,6 +726,8 @@ void lm78_update_client(struct i2c_client *client)
|
||||
(lm78_read_value(client,LM78_REG_ALARM2) << 8);
|
||||
data->last_updated = jiffies;
|
||||
data->valid = 1;
|
||||
|
||||
data->fan_div[2] = 1;
|
||||
}
|
||||
|
||||
up(&data->update_lock);
|
||||
@@ -782,9 +784,9 @@ void lm78_fan(struct i2c_client *client, int operation, int ctl_name,
|
||||
else if (operation == SENSORS_PROC_REAL_READ) {
|
||||
lm78_update_client(client);
|
||||
results[0] = FAN_FROM_REG(data->fan_min[nr-1],
|
||||
DIV_FROM_REG(data->fan_min[nr-1]));
|
||||
DIV_FROM_REG(data->fan_div[nr-1]));
|
||||
results[1] = FAN_FROM_REG(data->fan[nr-1],
|
||||
DIV_FROM_REG(data->fan_min[nr-1]));
|
||||
DIV_FROM_REG(data->fan_div[nr-1]));
|
||||
*nrels_mag = 2;
|
||||
} else if (operation == SENSORS_PROC_REAL_WRITE) {
|
||||
if (*nrels_mag >= 1) {
|
||||
|
||||
+2
-2
@@ -66,9 +66,9 @@
|
||||
#define IN_FROM_REG(val,nr) (val)
|
||||
|
||||
#define FAN_TO_REG(val,div) ((val)==0?255:\
|
||||
((1350000+(val)*(div))/((val)*(div)*2)) & 0xff)
|
||||
((1350000+(val)*(div)/2)/((val)*(div))) & 0xff)
|
||||
#define FAN_FROM_REG(val,div) ((val)==0?-1:\
|
||||
(val)==255?0:1350000/((div)*(val)*2))
|
||||
(val)==255?0:1350000/((div)*(val)))
|
||||
|
||||
#define TEMP_FROM_REG(val) lm80_temp_from_reg(val)
|
||||
|
||||
|
||||
@@ -86,8 +86,8 @@
|
||||
#define IN_TO_REG(val,nr) (((val) * 10 + 8)/16)
|
||||
#define IN_FROM_REG(val,nr) (((val) * 16) / 10)
|
||||
|
||||
#define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val))/\
|
||||
((val)*2*(div))) & 0xff)
|
||||
#define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val)*(div)/2)/\
|
||||
((val)*(div))) & 0xff)
|
||||
#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*2*(div)))
|
||||
|
||||
#define TEMP_TO_REG(val) (((val)<0?(((val)-5)/10)&0xff:((val)+5)/10) & 0xff)
|
||||
|
||||
+8
-6
@@ -67,9 +67,9 @@
|
||||
#define IN_TO_REG(val) (((val) * 10 + 8)/16)
|
||||
#define IN_FROM_REG(val) (((val) * 16) / 10)
|
||||
|
||||
#define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val))/\
|
||||
((val)*2*(div))) & 0xff)
|
||||
#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*2*(div)))
|
||||
#define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val)*(div)/2)/\
|
||||
((val)*(div))) & 0xff)
|
||||
#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div)))
|
||||
|
||||
#define TEMP_TO_REG(val) (((val)<0?(((val)-5)/10)&0xff:((val)+5)/10) & 0xff)
|
||||
#define TEMP_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*10)
|
||||
@@ -173,7 +173,7 @@ struct lm78_data {
|
||||
u8 temp; /* Register value */
|
||||
u8 temp_over; /* Register value */
|
||||
u8 temp_hyst; /* Register value */
|
||||
u8 fan_div[2]; /* Register encoding, shifted right */
|
||||
u8 fan_div[3]; /* Register encoding, shifted right */
|
||||
u8 vid; /* Register encoding, combined */
|
||||
u16 alarms; /* Register encoding, combined */
|
||||
};
|
||||
@@ -726,6 +726,8 @@ void lm78_update_client(struct i2c_client *client)
|
||||
(lm78_read_value(client,LM78_REG_ALARM2) << 8);
|
||||
data->last_updated = jiffies;
|
||||
data->valid = 1;
|
||||
|
||||
data->fan_div[2] = 1;
|
||||
}
|
||||
|
||||
up(&data->update_lock);
|
||||
@@ -782,9 +784,9 @@ void lm78_fan(struct i2c_client *client, int operation, int ctl_name,
|
||||
else if (operation == SENSORS_PROC_REAL_READ) {
|
||||
lm78_update_client(client);
|
||||
results[0] = FAN_FROM_REG(data->fan_min[nr-1],
|
||||
DIV_FROM_REG(data->fan_min[nr-1]));
|
||||
DIV_FROM_REG(data->fan_div[nr-1]));
|
||||
results[1] = FAN_FROM_REG(data->fan[nr-1],
|
||||
DIV_FROM_REG(data->fan_min[nr-1]));
|
||||
DIV_FROM_REG(data->fan_div[nr-1]));
|
||||
*nrels_mag = 2;
|
||||
} else if (operation == SENSORS_PROC_REAL_WRITE) {
|
||||
if (*nrels_mag >= 1) {
|
||||
|
||||
+2
-2
@@ -66,9 +66,9 @@
|
||||
#define IN_FROM_REG(val,nr) (val)
|
||||
|
||||
#define FAN_TO_REG(val,div) ((val)==0?255:\
|
||||
((1350000+(val)*(div))/((val)*(div)*2)) & 0xff)
|
||||
((1350000+(val)*(div)/2)/((val)*(div))) & 0xff)
|
||||
#define FAN_FROM_REG(val,div) ((val)==0?-1:\
|
||||
(val)==255?0:1350000/((div)*(val)*2))
|
||||
(val)==255?0:1350000/((div)*(val)))
|
||||
|
||||
#define TEMP_FROM_REG(val) lm80_temp_from_reg(val)
|
||||
|
||||
|
||||
+2
-2
@@ -86,8 +86,8 @@
|
||||
#define IN_TO_REG(val,nr) (((val) * 10 + 8)/16)
|
||||
#define IN_FROM_REG(val,nr) (((val) * 16) / 10)
|
||||
|
||||
#define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val))/\
|
||||
((val)*2*(div))) & 0xff)
|
||||
#define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val)*(div)/2)/\
|
||||
((val)*(div))) & 0xff)
|
||||
#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*2*(div)))
|
||||
|
||||
#define TEMP_TO_REG(val) (((val)<0?(((val)-5)/10)&0xff:((val)+5)/10) & 0xff)
|
||||
|
||||
Reference in new issue
Block a user