LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
To: Richard Purdie <rpurdie@rpsys.net>
Cc: linux-kernel@vger.kernel.org,
ibm-acpi-devel@lists.sourceforge.net, linux-acpi@vger.kernel.org,
Henrique de Moraes Holschuh <hmh@hmh.eng.br>,
Richard Purdie <rpurdie@rpsys.net>
Subject: [PATCH 1/3] LED: add support to leds with readable status
Date: Thu, 7 Feb 2008 21:57:11 -0200 [thread overview]
Message-ID: <1202428633-6711-1-git-send-email-hmh@hmh.eng.br> (raw)
In-Reply-To: <1202428145-6106-1-git-send-email-hmh@hmh.eng.br>
Some led hardware allows drivers to query the led state, and this patch
adds a hook to let the led class take advantage of that information when
available.
Without this functionality, when access to the led hardware is not
exclusive (i.e. firmware or hardware might change its state behind the
kernel's back), reality goes out of sync with the led class' idea of what
the led is doing, which is annoying at best.
Behaviour for drivers that do not or cannot read the led status is
unchanged.
Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: Richard Purdie <rpurdie@rpsys.net>
---
drivers/leds/led-class.c | 9 +++++++++
include/linux/leds.h | 2 ++
2 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index 835f939..3bb38a8 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -24,6 +24,12 @@
static struct class *leds_class;
+static void led_update_brightness(struct led_classdev *led_cdev)
+{
+ if (led_cdev->brightness_get)
+ led_cdev->brightness = led_cdev->brightness_get(led_cdev);
+}
+
static ssize_t led_brightness_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
@@ -31,6 +37,7 @@ static ssize_t led_brightness_show(struct device *dev,
ssize_t ret = 0;
/* no lock needed for this */
+ led_update_brightness(led_cdev);
sprintf(buf, "%u\n", led_cdev->brightness);
ret = strlen(buf) + 1;
@@ -112,6 +119,8 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev)
list_add_tail(&led_cdev->node, &leds_list);
up_write(&leds_list_lock);
+ led_update_brightness(led_cdev);
+
#ifdef CONFIG_LEDS_TRIGGERS
init_rwsem(&led_cdev->trigger_lock);
diff --git a/include/linux/leds.h b/include/linux/leds.h
index 4cb5927..dd5969e 100644
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -37,6 +37,8 @@ struct led_classdev {
/* Set LED brightness level */
void (*brightness_set)(struct led_classdev *led_cdev,
enum led_brightness brightness);
+ /* Get LED brightness level */
+ enum led_brightness (*brightness_get)(struct led_classdev *led_cdev);
/* Activate hardware accelerated blink */
int (*blink_set)(struct led_classdev *led_cdev,
--
1.5.3.8
next prev parent reply other threads:[~2008-02-07 23:57 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-07 23:49 [RFC] LED brightness_get and thinkpad-acpi led-class support Henrique de Moraes Holschuh
2008-02-07 23:57 ` Henrique de Moraes Holschuh [this message]
2008-02-07 23:57 ` [PATCH 2/3] ACPI: thinkpad-acpi: add sysfs led class support for thinklight Henrique de Moraes Holschuh
2008-02-07 23:57 ` [PATCH 3/3] ACPI: thinkpad-acpi: add sysfs led class support to thinkpad leds Henrique de Moraes Holschuh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1202428633-6711-1-git-send-email-hmh@hmh.eng.br \
--to=hmh@hmh.eng.br \
--cc=ibm-acpi-devel@lists.sourceforge.net \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rpurdie@rpsys.net \
--subject='Re: [PATCH 1/3] LED: add support to leds with readable status' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).