diff options
Diffstat (limited to 'include/led.h')
-rw-r--r-- | include/led.h | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/include/led.h b/include/led.h index a6353166289..99f93c5ef86 100644 --- a/include/led.h +++ b/include/led.h @@ -7,19 +7,34 @@ #ifndef __LED_H #define __LED_H +#include <stdbool.h> +#include <cyclic.h> + struct udevice; enum led_state_t { LEDST_OFF = 0, LEDST_ON = 1, LEDST_TOGGLE, -#ifdef CONFIG_LED_BLINK LEDST_BLINK, -#endif LEDST_COUNT, }; +enum led_sw_blink_state_t { + LED_SW_BLINK_ST_DISABLED, + LED_SW_BLINK_ST_NOT_READY, + LED_SW_BLINK_ST_OFF, + LED_SW_BLINK_ST_ON, +}; + +struct led_sw_blink { + enum led_sw_blink_state_t state; + struct udevice *dev; + struct cyclic_info cyclic; + const char cyclic_name[0]; +}; + /** * struct led_uc_plat - Platform data the uclass stores about each device * @@ -29,6 +44,9 @@ enum led_state_t { struct led_uc_plat { const char *label; enum led_state_t default_state; +#ifdef CONFIG_LED_SW_BLINK + struct led_sw_blink *sw_blink; +#endif }; /** @@ -118,4 +136,9 @@ int led_set_period(struct udevice *dev, int period_ms); */ int led_bind_generic(struct udevice *parent, const char *driver_name); +/* Internal functions for software blinking. Do not use them in your code */ +int led_sw_set_period(struct udevice *dev, int period_ms); +bool led_sw_is_blinking(struct udevice *dev); +bool led_sw_on_state_change(struct udevice *dev, enum led_state_t state); + #endif |