summaryrefslogtreecommitdiffstats
path: root/include/led.h
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2017-03-13 10:33:36 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2017-03-30 08:23:20 +0200
commitaea9aba24910b8aa89a889e8d826b8dc69d3d48b (patch)
tree51469149a38ca550f1e041a70603078ca630332a /include/led.h
parent441e9f5a72b245b671118f3e771eb129834a7a34 (diff)
downloadbarebox-aea9aba24910b8aa89a889e8d826b8dc69d3d48b.tar.gz
barebox-aea9aba24910b8aa89a889e8d826b8dc69d3d48b.tar.xz
led: add blinking/flashing and led_blink_pattern interface
So far blinking/flashing LEDs is only supported on led-trigger level. Even without triggers it useful to be able to blink/flash LEDs, so add this functionality to the LED core. A led_blink_pattern consists of a number of on and off-periods which are described in an array. Using such an array you can encode nearly every blink pattern you need. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Markus Pargmann <mpa@pengutronix.de> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'include/led.h')
-rw-r--r--include/led.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/led.h b/include/led.h
index 000267cdc5..fb5c48b9e2 100644
--- a/include/led.h
+++ b/include/led.h
@@ -12,6 +12,13 @@ struct led {
char *name;
int num;
struct list_head list;
+
+ int blink;
+ int flash;
+ unsigned int *blink_states;
+ int blink_nr_states;
+ int blink_next_state;
+ uint64_t blink_next_event;
};
struct led *led_by_number(int no);
@@ -25,6 +32,10 @@ static inline int led_get_number(struct led *led)
int led_set_num(int num, unsigned int value);
int led_set(struct led *led, unsigned int value);
+int led_blink(struct led *led, unsigned int on_ms, unsigned int off_ms);
+int led_blink_pattern(struct led *led, const unsigned int *pattern,
+ unsigned int pattern_len);
+int led_flash(struct led *led, unsigned int duration_ms);
int led_register(struct led *led);
void led_unregister(struct led *led);
void led_unregister(struct led *led);