diff options
| -rw-r--r-- | drivers/hwmon/asus_atk0110.c | 6 | ||||
| -rw-r--r-- | drivers/hwmon/smsc47m1.c | 11 |
2 files changed, 16 insertions, 1 deletions
diff --git a/drivers/hwmon/asus_atk0110.c b/drivers/hwmon/asus_atk0110.c index bff0103610c1..fe4fa29c9219 100644 --- a/drivers/hwmon/asus_atk0110.c +++ b/drivers/hwmon/asus_atk0110.c | |||
| @@ -593,7 +593,11 @@ static int atk_add_sensor(struct atk_data *data, union acpi_object *obj) | |||
| 593 | sensor->data = data; | 593 | sensor->data = data; |
| 594 | sensor->id = flags->integer.value; | 594 | sensor->id = flags->integer.value; |
| 595 | sensor->limit1 = limit1->integer.value; | 595 | sensor->limit1 = limit1->integer.value; |
| 596 | sensor->limit2 = limit2->integer.value; | 596 | if (data->old_interface) |
| 597 | sensor->limit2 = limit2->integer.value; | ||
| 598 | else | ||
| 599 | /* The upper limit is expressed as delta from lower limit */ | ||
| 600 | sensor->limit2 = sensor->limit1 + limit2->integer.value; | ||
| 597 | 601 | ||
| 598 | snprintf(sensor->input_attr_name, ATTR_NAME_SIZE, | 602 | snprintf(sensor->input_attr_name, ATTR_NAME_SIZE, |
| 599 | "%s%d_input", base_name, start + *num); | 603 | "%s%d_input", base_name, start + *num); |
diff --git a/drivers/hwmon/smsc47m1.c b/drivers/hwmon/smsc47m1.c index a92dbb97ee99..ba75bfcf14ce 100644 --- a/drivers/hwmon/smsc47m1.c +++ b/drivers/hwmon/smsc47m1.c | |||
| @@ -86,6 +86,7 @@ superio_exit(void) | |||
| 86 | #define SUPERIO_REG_ACT 0x30 | 86 | #define SUPERIO_REG_ACT 0x30 |
| 87 | #define SUPERIO_REG_BASE 0x60 | 87 | #define SUPERIO_REG_BASE 0x60 |
| 88 | #define SUPERIO_REG_DEVID 0x20 | 88 | #define SUPERIO_REG_DEVID 0x20 |
| 89 | #define SUPERIO_REG_DEVREV 0x21 | ||
| 89 | 90 | ||
| 90 | /* Logical device registers */ | 91 | /* Logical device registers */ |
| 91 | 92 | ||
| @@ -429,6 +430,9 @@ static int __init smsc47m1_find(unsigned short *addr, | |||
| 429 | * The LPC47M292 (device id 0x6B) is somewhat compatible, but it | 430 | * The LPC47M292 (device id 0x6B) is somewhat compatible, but it |
| 430 | * supports a 3rd fan, and the pin configuration registers are | 431 | * supports a 3rd fan, and the pin configuration registers are |
| 431 | * unfortunately different. | 432 | * unfortunately different. |
| 433 | * The LPC47M233 has the same device id (0x6B) but is not compatible. | ||
| 434 | * We check the high bit of the device revision register to | ||
| 435 | * differentiate them. | ||
| 432 | */ | 436 | */ |
| 433 | switch (val) { | 437 | switch (val) { |
| 434 | case 0x51: | 438 | case 0x51: |
| @@ -448,6 +452,13 @@ static int __init smsc47m1_find(unsigned short *addr, | |||
| 448 | sio_data->type = smsc47m1; | 452 | sio_data->type = smsc47m1; |
| 449 | break; | 453 | break; |
| 450 | case 0x6B: | 454 | case 0x6B: |
| 455 | if (superio_inb(SUPERIO_REG_DEVREV) & 0x80) { | ||
| 456 | pr_debug(DRVNAME ": " | ||
| 457 | "Found SMSC LPC47M233, unsupported\n"); | ||
| 458 | superio_exit(); | ||
| 459 | return -ENODEV; | ||
| 460 | } | ||
| 461 | |||
| 451 | pr_info(DRVNAME ": Found SMSC LPC47M292\n"); | 462 | pr_info(DRVNAME ": Found SMSC LPC47M292\n"); |
| 452 | sio_data->type = smsc47m2; | 463 | sio_data->type = smsc47m2; |
| 453 | break; | 464 | break; |
