]> Git Repo - J-u-boot.git/blobdiff - include/led.h
led: Implement software led blinking
[J-u-boot.git] / include / led.h
index a6353166289d294c416332ffc98faab9e7ee5343..8270d6cef93389d0c6819535d1d2d44e2ebeccbd 100644 (file)
@@ -13,13 +13,25 @@ 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 +41,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 +133,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
This page took 0.025932 seconds and 4 git commands to generate.