Commit 7d3e91b8 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging

* 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
  hwmon: (asus_atk0110) Fix upper limit readings
  hwmon: (smsc47m1) Differentiate between LPC47M233 and LPC47M292
parents ddb1d4ed 8d282497
...@@ -593,7 +593,11 @@ static int atk_add_sensor(struct atk_data *data, union acpi_object *obj) ...@@ -593,7 +593,11 @@ static int atk_add_sensor(struct atk_data *data, union acpi_object *obj)
sensor->data = data; sensor->data = data;
sensor->id = flags->integer.value; sensor->id = flags->integer.value;
sensor->limit1 = limit1->integer.value; sensor->limit1 = limit1->integer.value;
sensor->limit2 = limit2->integer.value; if (data->old_interface)
sensor->limit2 = limit2->integer.value;
else
/* The upper limit is expressed as delta from lower limit */
sensor->limit2 = sensor->limit1 + limit2->integer.value;
snprintf(sensor->input_attr_name, ATTR_NAME_SIZE, snprintf(sensor->input_attr_name, ATTR_NAME_SIZE,
"%s%d_input", base_name, start + *num); "%s%d_input", base_name, start + *num);
......
...@@ -86,6 +86,7 @@ superio_exit(void) ...@@ -86,6 +86,7 @@ superio_exit(void)
#define SUPERIO_REG_ACT 0x30 #define SUPERIO_REG_ACT 0x30
#define SUPERIO_REG_BASE 0x60 #define SUPERIO_REG_BASE 0x60
#define SUPERIO_REG_DEVID 0x20 #define SUPERIO_REG_DEVID 0x20
#define SUPERIO_REG_DEVREV 0x21
/* Logical device registers */ /* Logical device registers */
...@@ -429,6 +430,9 @@ static int __init smsc47m1_find(unsigned short *addr, ...@@ -429,6 +430,9 @@ static int __init smsc47m1_find(unsigned short *addr,
* The LPC47M292 (device id 0x6B) is somewhat compatible, but it * The LPC47M292 (device id 0x6B) is somewhat compatible, but it
* supports a 3rd fan, and the pin configuration registers are * supports a 3rd fan, and the pin configuration registers are
* unfortunately different. * unfortunately different.
* The LPC47M233 has the same device id (0x6B) but is not compatible.
* We check the high bit of the device revision register to
* differentiate them.
*/ */
switch (val) { switch (val) {
case 0x51: case 0x51:
...@@ -448,6 +452,13 @@ static int __init smsc47m1_find(unsigned short *addr, ...@@ -448,6 +452,13 @@ static int __init smsc47m1_find(unsigned short *addr,
sio_data->type = smsc47m1; sio_data->type = smsc47m1;
break; break;
case 0x6B: case 0x6B:
if (superio_inb(SUPERIO_REG_DEVREV) & 0x80) {
pr_debug(DRVNAME ": "
"Found SMSC LPC47M233, unsupported\n");
superio_exit();
return -ENODEV;
}
pr_info(DRVNAME ": Found SMSC LPC47M292\n"); pr_info(DRVNAME ": Found SMSC LPC47M292\n");
sio_data->type = smsc47m2; sio_data->type = smsc47m2;
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment