hwmon: (applesmc) Handle new temperature format
authorHenrik Rydberg <rydberg@euromail.se>
Tue, 9 Nov 2010 15:15:06 +0000 (15:15 +0000)
committerGuenter Roeck <guenter.roeck@ericsson.com>
Sat, 8 Jan 2011 18:55:40 +0000 (10:55 -0800)
The recent Macbooks have temperature registers of a new type.
This patch adds the logic to handle them.

Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
drivers/hwmon/applesmc.c

index 03c24b7c9cbde60b3c5c7e81d117c79468a78e45..1d7f8aff998222e3f2bbdf09ab9b9226df959cfc 100644 (file)
@@ -734,13 +734,19 @@ static ssize_t applesmc_show_temperature(struct device *dev,
        entry = applesmc_get_entry_by_index(index);
        if (IS_ERR(entry))
                return PTR_ERR(entry);
+       if (entry->len > 2)
+               return -EINVAL;
 
-       ret = applesmc_read_entry(entry, buffer, 2);
+       ret = applesmc_read_entry(entry, buffer, entry->len);
        if (ret)
                return ret;
 
-       temp = buffer[0]*1000;
-       temp += (buffer[1] >> 6) * 250;
+       if (entry->len == 2) {
+               temp = buffer[0] * 1000;
+               temp += (buffer[1] >> 6) * 250;
+       } else {
+               temp = buffer[0] * 4000;
+       }
 
        return snprintf(sysfsbuf, PAGE_SIZE, "%u\n", temp);
 }