mirror of https://gitee.com/openkylin/linux.git
hwmon: fix detection of abituguru volt inputs
This patch fixes the detection of volt inputs with a reading of more then 240 units. Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl> Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
This commit is contained in:
parent
2dbbdb3574
commit
e432dc811b
|
@ -418,7 +418,7 @@ static int __devinit
|
|||
abituguru_detect_bank1_sensor_type(struct abituguru_data *data,
|
||||
u8 sensor_addr)
|
||||
{
|
||||
u8 val, buf[3];
|
||||
u8 val, test_flag, buf[3];
|
||||
int i, ret = -ENODEV; /* error is the most common used retval :| */
|
||||
|
||||
/* If overriden by the user return the user selected type */
|
||||
|
@ -436,7 +436,7 @@ abituguru_detect_bank1_sensor_type(struct abituguru_data *data,
|
|||
return -ENODEV;
|
||||
|
||||
/* Test val is sane / usable for sensor type detection. */
|
||||
if ((val < 10u) || (val > 240u)) {
|
||||
if ((val < 10u) || (val > 250u)) {
|
||||
printk(KERN_WARNING ABIT_UGURU_NAME
|
||||
": bank1-sensor: %d reading (%d) too close to limits, "
|
||||
"unable to determine sensor type, skipping sensor\n",
|
||||
|
@ -449,10 +449,20 @@ abituguru_detect_bank1_sensor_type(struct abituguru_data *data,
|
|||
|
||||
ABIT_UGURU_DEBUG(2, "testing bank1 sensor %d\n", (int)sensor_addr);
|
||||
/* Volt sensor test, enable volt low alarm, set min value ridicously
|
||||
high. If its a volt sensor this should always give us an alarm. */
|
||||
buf[0] = ABIT_UGURU_VOLT_LOW_ALARM_ENABLE;
|
||||
buf[1] = 245;
|
||||
buf[2] = 250;
|
||||
high, or vica versa if the reading is very high. If its a volt
|
||||
sensor this should always give us an alarm. */
|
||||
if (val <= 240u) {
|
||||
buf[0] = ABIT_UGURU_VOLT_LOW_ALARM_ENABLE;
|
||||
buf[1] = 245;
|
||||
buf[2] = 250;
|
||||
test_flag = ABIT_UGURU_VOLT_LOW_ALARM_FLAG;
|
||||
} else {
|
||||
buf[0] = ABIT_UGURU_VOLT_HIGH_ALARM_ENABLE;
|
||||
buf[1] = 5;
|
||||
buf[2] = 10;
|
||||
test_flag = ABIT_UGURU_VOLT_HIGH_ALARM_FLAG;
|
||||
}
|
||||
|
||||
if (abituguru_write(data, ABIT_UGURU_SENSOR_BANK1 + 2, sensor_addr,
|
||||
buf, 3) != 3)
|
||||
goto abituguru_detect_bank1_sensor_type_exit;
|
||||
|
@ -469,13 +479,13 @@ abituguru_detect_bank1_sensor_type(struct abituguru_data *data,
|
|||
sensor_addr, buf, 3,
|
||||
ABIT_UGURU_MAX_RETRIES) != 3)
|
||||
goto abituguru_detect_bank1_sensor_type_exit;
|
||||
if (buf[0] & ABIT_UGURU_VOLT_LOW_ALARM_FLAG) {
|
||||
if (buf[0] & test_flag) {
|
||||
ABIT_UGURU_DEBUG(2, " found volt sensor\n");
|
||||
ret = ABIT_UGURU_IN_SENSOR;
|
||||
goto abituguru_detect_bank1_sensor_type_exit;
|
||||
} else
|
||||
ABIT_UGURU_DEBUG(2, " alarm raised during volt "
|
||||
"sensor test, but volt low flag not set\n");
|
||||
"sensor test, but volt range flag not set\n");
|
||||
} else
|
||||
ABIT_UGURU_DEBUG(2, " alarm not raised during volt sensor "
|
||||
"test\n");
|
||||
|
|
Loading…
Reference in New Issue