Skip to content

Commit

Permalink
hwmon/w83793: Remove the description of AMDSI and update the voltage …
Browse files Browse the repository at this point in the history
…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: Gong Jun <jgong@winbond.com>
Signed-off-by: Rudolf Marek <r.marek@assembler.cz>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
  • Loading branch information
Gong Jun authored and Jean Delvare committed Jan 18, 2007
1 parent a8b3485 commit ddca933
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions drivers/hwmon/w83793.c
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ static const u16 W83793_REG_IN[][3] = {
/* Low Bits of Vcore A/B Vtt Read/High/Low */
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_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_MIN(index) (0x90 + 2 * (index)) /* High byte */
Expand Down Expand Up @@ -500,7 +501,7 @@ store_temp(struct device *dev, struct device_attribute *attr,
each has 4 mode:(2 bits)
0: Stop monitor
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
TR1-TR2
Expand All @@ -509,8 +510,8 @@ store_temp(struct device *dev, struct device_attribute *attr,
1: To enable temp sensors monitor
*/

/* 0 disable, 5 AMDSI, 6 PECI */
static u8 TO_TEMP_MODE[] = { 0, 0, 5, 6 };
/* 0 disable, 6 PECI */
static u8 TO_TEMP_MODE[] = { 0, 0, 0, 6 };

static ssize_t
show_temp_mode(struct device *dev, struct device_attribute *attr, char *buf)
Expand Down Expand Up @@ -550,7 +551,7 @@ store_temp_mode(struct device *dev, struct device_attribute *attr,
u8 val = simple_strtoul(buf, NULL, 10);

/* transform the sysfs interface values into table above */
if ((val == 5 || val == 6) && (index < 4)) {
if ((val == 6) && (index < 4)) {
val -= 3;
} else if ((val == 3 && index < 4)
|| (val == 4 && index >= 4)
Expand Down Expand Up @@ -839,7 +840,9 @@ show_in(struct device *dev, struct device_attribute *attr, char *buf)
val <<= 2;
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
Expand All @@ -859,6 +862,10 @@ store_in(struct device *dev, struct device_attribute *attr,
scale_in[index] / 2) / scale_in[index];
mutex_lock(&data->update_lock);
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);
} else {
val = SENSORS_LIMIT(val, 0, 0x3FF);
Expand Down

0 comments on commit ddca933

Please sign in to comment.