Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 272000
b: refs/heads/master
c: 8819de7
h: refs/heads/master
v: v3
  • Loading branch information
Andy Ross authored and Matthew Garrett committed Oct 24, 2011
1 parent 4e30b83 commit d293e7c
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ba05b237372bad82533d1f717569d1d817ff3c27
refs/heads/master: 8819de7f988289111cf4c44946f0d8c008b2d9a7
16 changes: 9 additions & 7 deletions trunk/drivers/platform/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -64,15 +64,17 @@ config ASUS_LAPTOP
depends on INPUT
depends on RFKILL || RFKILL = n
select INPUT_SPARSEKMAP
select INPUT_POLLDEV
---help---
This is the new Linux driver for Asus laptops. It may also support some
MEDION, JVC or VICTOR laptops. It makes all the extra buttons generate
standard ACPI events and input events. It also adds
support for video output switching, LCD backlight control, Bluetooth and
Wlan control, and most importantly, allows you to blink those fancy LEDs.
This is a driver for Asus laptops, Lenovo SL and the Pegatron
Lucid tablet. It may also support some MEDION, JVC or VICTOR
laptops. It makes all the extra buttons generate standard
ACPI events and input events. It also adds support for video
output switching, LCD backlight control, Bluetooth and Wlan
control, and most importantly, allows you to blink those
fancy LEDs.

For more information and a userspace daemon for handling the extra
buttons see <http://acpi4asus.sf.net>.
For more information see <http://acpi4asus.sf.net>.

If you have an ACPI-compatible ASUS laptop, say Y or M here.

Expand Down
23 changes: 20 additions & 3 deletions trunk/drivers/platform/x86/asus-laptop.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
*
* Copyright (C) 2002-2005 Julien Lerouge, 2003-2006 Karol Kozimor
* Copyright (C) 2006-2007 Corentin Chary
* Copyright (C) 2011 Wind River Systems
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -48,6 +49,7 @@
#include <linux/uaccess.h>
#include <linux/input.h>
#include <linux/input/sparse-keymap.h>
#include <linux/input-polldev.h>
#include <linux/rfkill.h>
#include <linux/slab.h>
#include <linux/dmi.h>
Expand Down Expand Up @@ -173,6 +175,12 @@ MODULE_PARM_DESC(wwan_status, "Set the wireless status on boot "
#define METHOD_KBD_LIGHT_SET "SLKB"
#define METHOD_KBD_LIGHT_GET "GLKB"

/* For Pegatron Lucid tablet */
#define DEVICE_NAME_PEGA "Lucid"
#define METHOD_PEGA_ENABLE "ENPR"
#define METHOD_PEGA_DISABLE "DAPR"
#define METHOD_PEGA_READ "RDLN"

/*
* Define a specific led structure to keep the main structure clean
*/
Expand Down Expand Up @@ -209,6 +217,7 @@ struct asus_laptop {

int wireless_status;
bool have_rsts;
bool is_pega_lucid;

struct rfkill *gps_rfkill;

Expand Down Expand Up @@ -323,6 +332,14 @@ static int acpi_check_handle(acpi_handle handle, const char *method,
return 0;
}

static bool asus_check_pega_lucid(struct asus_laptop *asus)
{
return !strcmp(asus->name, DEVICE_NAME_PEGA) &&
!acpi_check_handle(asus->handle, METHOD_PEGA_ENABLE, NULL) &&
!acpi_check_handle(asus->handle, METHOD_PEGA_DISABLE, NULL) &&
!acpi_check_handle(asus->handle, METHOD_PEGA_READ, NULL);
}

/* Generic LED function */
static int asus_led_set(struct asus_laptop *asus, const char *method,
int value)
Expand Down Expand Up @@ -1203,7 +1220,6 @@ static mode_t asus_sysfs_is_visible(struct kobject *kobj,
attr == &dev_attr_ls_level.attr) {
supported = !acpi_check_handle(handle, METHOD_ALS_CONTROL, NULL) &&
!acpi_check_handle(handle, METHOD_ALS_LEVEL, NULL);

} else if (attr == &dev_attr_gps.attr) {
supported = !acpi_check_handle(handle, METHOD_GPS_ON, NULL) &&
!acpi_check_handle(handle, METHOD_GPS_OFF, NULL) &&
Expand Down Expand Up @@ -1439,9 +1455,10 @@ static int __devinit asus_acpi_add(struct acpi_device *device)
goto fail_platform;

/*
* Register the platform device first. It is used as a parent for the
* sub-devices below.
* Need platform type detection first, then the platform
* device. It is used as a parent for the sub-devices below.
*/
asus->is_pega_lucid = asus_check_pega_lucid(asus);
result = asus_platform_init(asus);
if (result)
goto fail_platform;
Expand Down

0 comments on commit d293e7c

Please sign in to comment.