Skip to content

Commit

Permalink
hwmon: applesmc: allow for variable ALV0 and ALV1 package length
Browse files Browse the repository at this point in the history
On some recent Macbooks, the package length for the light sensors ALV0 and
ALV1 has changed from 6 to 10.  This patch allows for a variable package
length encompassing both variants.

Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Cc: Nicolas Boichat <nicolas@boichat.ch>
Cc: Riki Oktarianto <rkoktarianto@gmail.com>
Cc: Mark M. Hoffman <mhoffman@lightlink.com>
Cc: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Henrik Rydberg authored and Linus Torvalds committed Oct 20, 2008
1 parent 02fcbd1 commit 8bd1a12
Showing 1 changed file with 15 additions and 5 deletions.
20 changes: 15 additions & 5 deletions drivers/hwmon/applesmc.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@

#define KEY_COUNT_KEY "#KEY" /* r-o ui32 */

#define LIGHT_SENSOR_LEFT_KEY "ALV0" /* r-o {alv (6 bytes) */
#define LIGHT_SENSOR_RIGHT_KEY "ALV1" /* r-o {alv (6 bytes) */
#define LIGHT_SENSOR_LEFT_KEY "ALV0" /* r-o {alv (6-10 bytes) */
#define LIGHT_SENSOR_RIGHT_KEY "ALV1" /* r-o {alv (6-10 bytes) */
#define BACKLIGHT_KEY "LKSB" /* w-o {lkb (2 bytes) */

#define CLAMSHELL_KEY "MSLD" /* r-o ui8 (unused) */
Expand Down Expand Up @@ -543,17 +543,27 @@ static ssize_t applesmc_position_show(struct device *dev,
static ssize_t applesmc_light_show(struct device *dev,
struct device_attribute *attr, char *sysfsbuf)
{
static int data_length;
int ret;
u8 left = 0, right = 0;
u8 buffer[6];
u8 buffer[10], query[6];

mutex_lock(&applesmc_lock);

ret = applesmc_read_key(LIGHT_SENSOR_LEFT_KEY, buffer, 6);
if (!data_length) {
ret = applesmc_get_key_type(LIGHT_SENSOR_LEFT_KEY, query);
if (ret)
goto out;
data_length = clamp_val(query[0], 0, 10);
printk(KERN_INFO "applesmc: light sensor data length set to "
"%d\n", data_length);
}

ret = applesmc_read_key(LIGHT_SENSOR_LEFT_KEY, buffer, data_length);
left = buffer[2];
if (ret)
goto out;
ret = applesmc_read_key(LIGHT_SENSOR_RIGHT_KEY, buffer, 6);
ret = applesmc_read_key(LIGHT_SENSOR_RIGHT_KEY, buffer, data_length);
right = buffer[2];

out:
Expand Down

0 comments on commit 8bd1a12

Please sign in to comment.