From aad8cfa3ca4b1bb18c4a55d2bbee4f58d3095d64 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Tue, 1 Oct 2024 14:24:38 +0200 Subject: led: implement LED activity API Implement LED activity API similar to BOOT LED API. Usual activity might be a file transfer with TFTP, a flash write... User of this API will call led_activity_on/off/blink() to signal these kind of activity. New Kconfig is implemented similar to BOOT LED, LED_ACTIVITY to enable support for it. It's introduced a new /options/u-boot property "activity-led" and "activity-led-period" to define the activity LED label and the default period when the activity LED is set to blink mode. If "activity-led-period" is not defined, the value of 250 (ms) is used by default. If CONFIG_LED_BLINK or CONFIG_LED_SW_BLINK is not enabled, led_boot_blink call will fallback to simple LED ON. Signed-off-by: Christian Marangi Reviewed-by: Simon Glass --- include/led.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'include') diff --git a/include/led.h b/include/led.h index 49ec2998a33..19d92d6441a 100644 --- a/include/led.h +++ b/include/led.h @@ -54,14 +54,21 @@ struct led_uc_plat { * struct led_uc_priv - Private data the uclass stores about each device * * @boot_led_label: Boot LED label + * @activity_led_label: Activity LED label * @boot_led_dev: Boot LED dev + * @activity_led_dev: Activity LED dev * @boot_led_period: Boot LED blink period + * @activity_led_period: Activity LED blink period */ struct led_uc_priv { #ifdef CONFIG_LED_BOOT const char *boot_led_label; int boot_led_period; #endif +#ifdef CONFIG_LED_ACTIVITY + const char *activity_led_label; + int activity_led_period; +#endif }; struct led_ops { @@ -192,4 +199,48 @@ static inline int led_boot_blink(void) } #endif +#ifdef CONFIG_LED_ACTIVITY + +/** + * led_activity_on() - turn ON the designated LED for activity + * + * Return: 0 if OK, -ve on error + */ +int led_activity_on(void); + +/** + * led_activity_off() - turn OFF the designated LED for activity + * + * Return: 0 if OK, -ve on error + */ +int led_activity_off(void); + +#if defined(CONFIG_LED_BLINK) || defined(CONFIG_LED_SW_BLINK) +/** + * led_activity_blink() - turn ON the designated LED for activity + * + * Return: 0 if OK, -ve on error + */ +int led_activity_blink(void); +#else +/* If LED BLINK is not supported/enabled, fallback to LED ON */ +#define led_activity_blink led_activity_on +#endif +#else +static inline int led_activity_on(void) +{ + return -ENOSYS; +} + +static inline int led_activity_off(void) +{ + return -ENOSYS; +} + +static inline int led_activity_blink(void) +{ + return -ENOSYS; +} +#endif + #endif -- cgit v1.2.3