Skip to content

Commit 0921a57

Browse files
jwrdegoedelag-linaro
authored andcommitted
leds: trigger: Add led_mc_trigger_event() function
Add a new led_mc_trigger_event() function for triggers which want to change the color of a multi-color LED based on their trigger conditions. Signed-off-by: Hans de Goede <[email protected]> Reviewed-by: Jacek Anaszewski <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Lee Jones <[email protected]>
1 parent 5607ca9 commit 0921a57

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

drivers/leds/led-triggers.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,26 @@ void led_trigger_event(struct led_trigger *trig,
396396
}
397397
EXPORT_SYMBOL_GPL(led_trigger_event);
398398

399+
void led_mc_trigger_event(struct led_trigger *trig,
400+
unsigned int *intensity_value, unsigned int num_colors,
401+
enum led_brightness brightness)
402+
{
403+
struct led_classdev *led_cdev;
404+
405+
if (!trig)
406+
return;
407+
408+
rcu_read_lock();
409+
list_for_each_entry_rcu(led_cdev, &trig->led_cdevs, trig_list) {
410+
if (!(led_cdev->flags & LED_MULTI_COLOR))
411+
continue;
412+
413+
led_mc_set_brightness(led_cdev, intensity_value, num_colors, brightness);
414+
}
415+
rcu_read_unlock();
416+
}
417+
EXPORT_SYMBOL_GPL(led_mc_trigger_event);
418+
399419
static void led_trigger_blink_setup(struct led_trigger *trig,
400420
unsigned long delay_on,
401421
unsigned long delay_off,

include/linux/leds.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,9 @@ void led_trigger_register_simple(const char *name,
510510
struct led_trigger **trigger);
511511
void led_trigger_unregister_simple(struct led_trigger *trigger);
512512
void led_trigger_event(struct led_trigger *trigger, enum led_brightness event);
513+
void led_mc_trigger_event(struct led_trigger *trig,
514+
unsigned int *intensity_value, unsigned int num_colors,
515+
enum led_brightness brightness);
513516
void led_trigger_blink(struct led_trigger *trigger, unsigned long delay_on,
514517
unsigned long delay_off);
515518
void led_trigger_blink_oneshot(struct led_trigger *trigger,
@@ -552,6 +555,9 @@ static inline void led_trigger_register_simple(const char *name,
552555
static inline void led_trigger_unregister_simple(struct led_trigger *trigger) {}
553556
static inline void led_trigger_event(struct led_trigger *trigger,
554557
enum led_brightness event) {}
558+
static inline void led_mc_trigger_event(struct led_trigger *trig,
559+
unsigned int *intensity_value, unsigned int num_colors,
560+
enum led_brightness brightness) {}
555561
static inline void led_trigger_blink(struct led_trigger *trigger,
556562
unsigned long delay_on,
557563
unsigned long delay_off) {}

0 commit comments

Comments
 (0)