From b56c6493544ca5a02dfcd61b68b3959acdcd6e3e Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Mon, 16 Jul 2012 09:18:10 +0200 Subject: [PATCH] --- yaml --- r: 316034 b: refs/heads/master c: b6e5122f09272cb30c2e1fc1d80a40bfa6e87757 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/hwmon/applesmc.c | 19 ++++++++----------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index 3f60628a7e03..88de9fe49628 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 41bf870e6db130c6e467c70b6da96398066b8be7 +refs/heads/master: b6e5122f09272cb30c2e1fc1d80a40bfa6e87757 diff --git a/trunk/drivers/hwmon/applesmc.c b/trunk/drivers/hwmon/applesmc.c index f41585ecbe2b..75f87f125dac 100644 --- a/trunk/drivers/hwmon/applesmc.c +++ b/trunk/drivers/hwmon/applesmc.c @@ -80,6 +80,8 @@ #define FANS_MANUAL "FS! " /* r-w ui16 */ #define FAN_ID_FMT "F%dID" /* r-o char[16] */ +#define TEMP_SENSOR_TYPE "sp78" + /* List of keys used to read/write fan speeds */ static const char *const fan_speed_fmt[] = { "F%dAc", /* actual speed */ @@ -720,27 +722,22 @@ static ssize_t applesmc_show_temperature(struct device *dev, int index = smcreg.temp_begin + to_index(devattr); const struct applesmc_entry *entry; int ret; - u8 buffer[2]; - unsigned int temp; + s16 value; + int temp; entry = applesmc_get_entry_by_index(index); if (IS_ERR(entry)) return PTR_ERR(entry); - if (entry->len > 2) + if (strcmp(entry->type, TEMP_SENSOR_TYPE)) return -EINVAL; - ret = applesmc_read_entry(entry, buffer, entry->len); + ret = applesmc_read_s16(entry->key, &value); if (ret) return ret; - if (entry->len == 2) { - temp = buffer[0] * 1000; - temp += (buffer[1] >> 6) * 250; - } else { - temp = buffer[0] * 4000; - } + temp = 250 * (value >> 6); - return snprintf(sysfsbuf, PAGE_SIZE, "%u\n", temp); + return snprintf(sysfsbuf, PAGE_SIZE, "%d\n", temp); } static ssize_t applesmc_show_fan_speed(struct device *dev,