summaryrefslogtreecommitdiff
path: root/include/led.h
diff options
context:
space:
mode:
authorChristian Marangi <[email protected]>2024-10-01 14:24:38 +0200
committerTom Rini <[email protected]>2024-10-10 16:02:20 -0600
commitaad8cfa3ca4b1bb18c4a55d2bbee4f58d3095d64 (patch)
tree2a9f00dc48586d39d6cd9dde0da623d88adea60e /include/led.h
parentfc55ae03fdda244b74756c9dedb16143dbe002bd (diff)
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 <[email protected]> Reviewed-by: Simon Glass <[email protected]>
Diffstat (limited to 'include/led.h')
-rw-r--r--include/led.h51
1 files changed, 51 insertions, 0 deletions
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