]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - include/led.h
dm: led: Add support for blinking LEDs
[people/ms/u-boot.git] / include / led.h
index 8c107e28e78e89d98c3a5cdc786016d4628bb118..c67af22591206117bd716defe115bc3fb06212e3 100644 (file)
@@ -17,10 +17,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,
 };
@@ -42,6 +54,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)
@@ -72,4 +98,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