提交 ddca933b 编写于 作者: G Gong Jun 提交者: Jean Delvare

hwmon/w83793: Remove the description of AMDSI and update the voltage formula

Fix the driver to match the information in datasheet 1.0. AMD 
SI interface is marked as reserved, computing formula for 5VDD
and 5VSB is updated.
Signed-off-by: NGong Jun <jgong@winbond.com>
Signed-off-by: NRudolf Marek <r.marek@assembler.cz>
Signed-off-by: NJean Delvare <khali@linux-fr.org>
上级 a8b34852
...@@ -117,6 +117,7 @@ static const u16 W83793_REG_IN[][3] = { ...@@ -117,6 +117,7 @@ static const u16 W83793_REG_IN[][3] = {
/* Low Bits of Vcore A/B Vtt Read/High/Low */ /* Low Bits of Vcore A/B Vtt Read/High/Low */
static const u16 W83793_REG_IN_LOW_BITS[] = { 0x1b, 0x68, 0x69 }; static const u16 W83793_REG_IN_LOW_BITS[] = { 0x1b, 0x68, 0x69 };
static u8 scale_in[] = { 2, 2, 2, 16, 16, 16, 8, 24, 24, 16 }; static u8 scale_in[] = { 2, 2, 2, 16, 16, 16, 8, 24, 24, 16 };
static u8 scale_in_add[] = { 0, 0, 0, 0, 0, 0, 0, 150, 150, 0 };
#define W83793_REG_FAN(index) (0x23 + 2 * (index)) /* High byte */ #define W83793_REG_FAN(index) (0x23 + 2 * (index)) /* High byte */
#define W83793_REG_FAN_MIN(index) (0x90 + 2 * (index)) /* High byte */ #define W83793_REG_FAN_MIN(index) (0x90 + 2 * (index)) /* High byte */
...@@ -500,7 +501,7 @@ store_temp(struct device *dev, struct device_attribute *attr, ...@@ -500,7 +501,7 @@ store_temp(struct device *dev, struct device_attribute *attr,
each has 4 mode:(2 bits) each has 4 mode:(2 bits)
0: Stop monitor 0: Stop monitor
1: Use internal temp sensor(default) 1: Use internal temp sensor(default)
2: Use sensor in AMD CPU and get result by AMDSI 2: Reserved
3: Use sensor in Intel CPU and get result by PECI 3: Use sensor in Intel CPU and get result by PECI
TR1-TR2 TR1-TR2
...@@ -509,8 +510,8 @@ store_temp(struct device *dev, struct device_attribute *attr, ...@@ -509,8 +510,8 @@ store_temp(struct device *dev, struct device_attribute *attr,
1: To enable temp sensors monitor 1: To enable temp sensors monitor
*/ */
/* 0 disable, 5 AMDSI, 6 PECI */ /* 0 disable, 6 PECI */
static u8 TO_TEMP_MODE[] = { 0, 0, 5, 6 }; static u8 TO_TEMP_MODE[] = { 0, 0, 0, 6 };
static ssize_t static ssize_t
show_temp_mode(struct device *dev, struct device_attribute *attr, char *buf) show_temp_mode(struct device *dev, struct device_attribute *attr, char *buf)
...@@ -550,7 +551,7 @@ store_temp_mode(struct device *dev, struct device_attribute *attr, ...@@ -550,7 +551,7 @@ store_temp_mode(struct device *dev, struct device_attribute *attr,
u8 val = simple_strtoul(buf, NULL, 10); u8 val = simple_strtoul(buf, NULL, 10);
/* transform the sysfs interface values into table above */ /* transform the sysfs interface values into table above */
if ((val == 5 || val == 6) && (index < 4)) { if ((val == 6) && (index < 4)) {
val -= 3; val -= 3;
} else if ((val == 3 && index < 4) } else if ((val == 3 && index < 4)
|| (val == 4 && index >= 4) || (val == 4 && index >= 4)
...@@ -839,7 +840,9 @@ show_in(struct device *dev, struct device_attribute *attr, char *buf) ...@@ -839,7 +840,9 @@ show_in(struct device *dev, struct device_attribute *attr, char *buf)
val <<= 2; val <<= 2;
val += (data->in_low_bits[nr] >> (index * 2)) & 0x3; val += (data->in_low_bits[nr] >> (index * 2)) & 0x3;
} }
return sprintf(buf, "%d\n", val * scale_in[index]); /* voltage inputs 5VDD and 5VSB needs 150mV offset */
val = val * scale_in[index] + scale_in_add[index];
return sprintf(buf, "%d\n", val);
} }
static ssize_t static ssize_t
...@@ -859,6 +862,10 @@ store_in(struct device *dev, struct device_attribute *attr, ...@@ -859,6 +862,10 @@ store_in(struct device *dev, struct device_attribute *attr,
scale_in[index] / 2) / scale_in[index]; scale_in[index] / 2) / scale_in[index];
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
if (index > 2) { if (index > 2) {
/* fix the limit values of 5VDD and 5VSB to ALARM mechanism */
if (1 == nr || 2 == nr) {
val -= scale_in_add[index] / scale_in[index];
}
val = SENSORS_LIMIT(val, 0, 255); val = SENSORS_LIMIT(val, 0, 255);
} else { } else {
val = SENSORS_LIMIT(val, 0, 0x3FF); val = SENSORS_LIMIT(val, 0, 0x3FF);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册