diff options
author | Corentin Chary <corentincj@iksaif.net> | 2010-11-29 07:14:13 (GMT) |
---|---|---|
committer | Matthew Garrett <mjg@redhat.com> | 2011-01-07 22:03:44 (GMT) |
commit | 62a75d83131c8887237d26a36ffeabd53c3640fd (patch) | |
tree | 6ada03ec08dcb4a6f9f615f8543648f2b21aea49 /drivers/platform/x86/eeepc-laptop.c | |
parent | dfed65d56f9a94466bb4afd44ec8e900a6709cda (diff) | |
download | linux-62a75d83131c8887237d26a36ffeabd53c3640fd.tar.xz |
eeepc-laptop: add a getter for touchpad led
Allow te get the current led state in a more accurate way.
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
Diffstat (limited to 'drivers/platform/x86/eeepc-laptop.c')
-rw-r--r-- | drivers/platform/x86/eeepc-laptop.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index b2edfdc..e9fc530 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c @@ -529,6 +529,15 @@ static void tpd_led_set(struct led_classdev *led_cdev, queue_work(eeepc->led_workqueue, &eeepc->tpd_led_work); } +static enum led_brightness tpd_led_get(struct led_classdev *led_cdev) +{ + struct eeepc_laptop *eeepc; + + eeepc = container_of(led_cdev, struct eeepc_laptop, tpd_led); + + return get_acpi(eeepc, CM_ASL_TPD); +} + static int eeepc_led_init(struct eeepc_laptop *eeepc) { int rv; @@ -543,6 +552,8 @@ static int eeepc_led_init(struct eeepc_laptop *eeepc) eeepc->tpd_led.name = "eeepc::touchpad"; eeepc->tpd_led.brightness_set = tpd_led_set; + if (get_acpi(eeepc, CM_ASL_TPD) >= 0) /* if method is available */ + eeepc->tpd_led.brightness_get = tpd_led_get; eeepc->tpd_led.max_brightness = 1; rv = led_classdev_register(&eeepc->platform_device->dev, |