On Mon, May 14, 2007 at 12:16:22AM +0100, Richard Purdie wrote:Splendid! ... ... Thanks, fixed. From: Anton Vorontsov <cbou@mail.ru> Date: Mon, 14 May 2007 23:39:30 +0400 Subject: [PATCH] Custom triggers support, which are might not supported by all LEDs Signed-off-by: Anton Vorontsov <cbou@mail.ru> --- drivers/leds/led-triggers.c | 11 ++++++++++- include/linux/leds.h | 1 + 2 files changed, 11 insertions(+), 1 deletions(-) diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c index 454fb09..7fde7d0 100644 --- a/drivers/leds/led-triggers.c +++ b/drivers/leds/led-triggers.c @@ -53,6 +53,10 @@ ssize_t led_trigger_store(struct class_device *dev, const char *buf, read_lock(&triggers_list_lock); list_for_each_entry(trig, &trigger_list, next_trig) { if (!strcmp(trigger_name, trig->name)) { + if (trig->is_led_supported && + !trig->is_led_supported(led_cdev)) + break; + write_lock(&led_cdev->trigger_lock); led_trigger_set(led_cdev, trig); write_unlock(&led_cdev->trigger_lock); @@ -85,6 +89,9 @@ ssize_t led_trigger_show(struct class_device *dev, char *buf) if (led_cdev->trigger && !strcmp(led_cdev->trigger->name, trig->name)) len += sprintf(buf+len, "[%s] ", trig->name); + else if (trig->is_led_supported && + !trig->is_led_supported(led_cdev)) + continue; else len += sprintf(buf+len, "%s ", trig->name); } @@ -171,7 +178,9 @@ int led_trigger_register(struct led_trigger *trigger) list_for_each_entry(led_cdev, &leds_list, node) { write_lock(&led_cdev->trigger_lock); if (!led_cdev->trigger && led_cdev->default_trigger && - !strcmp(led_cdev->default_trigger, trigger->name)) + !strcmp(led_cdev->default_trigger, trigger->name) && + (!trigger->is_led_supported || + trigger->is_led_supported(led_cdev))) led_trigger_set(led_cdev, trigger); write_unlock(&led_cdev->trigger_lock); } diff --git a/include/linux/leds.h b/include/linux/leds.h index 88afcef..71175f6 100644 --- a/include/linux/leds.h +++ b/include/linux/leds.h @@ -70,6 +70,7 @@ struct led_trigger { const char *name; void (*activate)(struct led_classdev *led_cdev); void (*deactivate)(struct led_classdev *led_cdev); + int (*is_led_supported)(struct led_classdev *led_cdev); /* LEDs under control by this trigger (for simple triggers) */ rwlock_t leddev_list_lock; -- 1.5.1.1-dirty -
| Linus Torvalds | Linux 2.6.27-rc8 |
| Greg KH | [patch 00/71] 2.6.26-stable review |
| Dmitry Torokhov | 2.6.27-rc8+ - first impressions |
| Rafael J. Wysocki | [Bug #11215] INFO: possible recursive locking detected ps2 command |
git: | |
| Christian MICHON | Re: MinGW port - initial work uploaded |
| Luiz Fernando N. Capitulino | Libification project (SoC) |
| Linus Torvalds | People unaware of the importance of "git gc"? |
| Jakub Narebski | [RFC] Git User's Survey 2008 |
| Richard Stallman | Real men don't attack straw men |
| Tony Abernethy | Re: What is our ultimate goal?? |
| GVG GVG | ssh_exchange_identification: Connection closed by remote host |
| James Hartley | scp batch mode? |
| Ingo Molnar | Re: [TCP]: TCP_DEFER_ACCEPT causes leak sockets |
| Timo Teräs | Re: xfrm_state locking regression... |
| Ingo Molnar | Re: [bug] stuck localhost TCP connections, v2.6.26-rc3+ |
| Natalie Protasevich | [BUG] New Kernel Bugs |
