]> git.sur5r.net Git - u-boot/blobdiff - include/led.h
Makefile: drop unused cpp_cfg macro
[u-boot] / include / led.h
index bbab4d14c9856025cd06a0fa1dcd9ca6357064d6..940b97f58c00e0dde4c5969eeffe150b25da6f31 100644 (file)
@@ -1,8 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
 /*
  * Copyright (c) 2015 Google, Inc
  * Written by Simon Glass <sjg@chromium.org>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #ifndef __LED_H
@@ -17,9 +16,22 @@ struct led_uc_plat {
        const char *label;
 };
 
+/**
+ * struct led_uc_priv - Private data the uclass stores about each device
+ *
+ * @period_ms: Flash period in milliseconds
+ */
+struct led_uc_priv {
+       int period_ms;
+};
+
 enum led_state_t {
        LEDST_OFF = 0,
        LEDST_ON = 1,
+       LEDST_TOGGLE,
+#ifdef CONFIG_LED_BLINK
+       LEDST_BLINK,
+#endif
 
        LEDST_COUNT,
 };
@@ -41,6 +53,20 @@ struct led_ops {
         * @return LED state led_state_t, or -ve on error
         */
        enum led_state_t (*get_state)(struct udevice *dev);
+
+#ifdef CONFIG_LED_BLINK
+       /**
+        * led_set_period() - set the blink period of an LED
+        *
+        * Thie records the period if supported, or returns -ENOSYS if not.
+        * To start the LED blinking, use set_state().
+        *
+        * @dev:        LED device to change
+        * @period_ms:  LED blink period in milliseconds
+        * @return 0 if OK, -ve on error
+        */
+       int (*set_period)(struct udevice *dev, int period_ms);
+#endif
 };
 
 #define led_get_ops(dev)       ((struct led_ops *)(dev)->driver->ops)
@@ -71,4 +97,13 @@ int led_set_state(struct udevice *dev, enum led_state_t state);
  */
 enum led_state_t led_get_state(struct udevice *dev);
 
+/**
+ * led_set_period() - set the blink period of an LED
+ *
+ * @dev:       LED device to change
+ * @period_ms: LED blink period in milliseconds
+ * @return 0 if OK, -ve on error
+ */
+int led_set_period(struct udevice *dev, int period_ms);
+
 #endif