leds: core: add managed version of led_trigger_register
[deliverable/linux.git] / include / linux / leds.h
index fa359c79c825e666789ec1ce65392b6ff184d93c..bc1476fda96eb3206995b270e32cb54a49305eea 100644 (file)
@@ -44,9 +44,9 @@ struct led_classdev {
 #define LED_BLINK_ONESHOT      (1 << 17)
 #define LED_BLINK_ONESHOT_STOP (1 << 18)
 #define LED_BLINK_INVERT       (1 << 19)
-#define LED_SYSFS_DISABLE      (1 << 20)
-#define SET_BRIGHTNESS_ASYNC   (1 << 21)
-#define SET_BRIGHTNESS_SYNC    (1 << 22)
+#define LED_BLINK_BRIGHTNESS_CHANGE (1 << 20)
+#define LED_BLINK_DISABLE      (1 << 21)
+#define LED_SYSFS_DISABLE      (1 << 22)
 #define LED_DEV_CAP_FLASH      (1 << 23)
 
        /* Set LED brightness level */
@@ -57,8 +57,8 @@ struct led_classdev {
         * Set LED brightness level immediately - it can block the caller for
         * the time required for accessing a LED device register.
         */
-       int             (*brightness_set_sync)(struct led_classdev *led_cdev,
-                                       enum led_brightness brightness);
+       int (*brightness_set_blocking)(struct led_classdev *led_cdev,
+                                      enum led_brightness brightness);
        /* Get LED brightness level */
        enum led_brightness (*brightness_get)(struct led_classdev *led_cdev);
 
@@ -156,10 +156,25 @@ extern void led_blink_set_oneshot(struct led_classdev *led_cdev,
  *
  * Set an LED's brightness, and, if necessary, cancel the
  * software blink timer that implements blinking when the
- * hardware doesn't.
+ * hardware doesn't. This function is guaranteed not to sleep.
  */
 extern void led_set_brightness(struct led_classdev *led_cdev,
                               enum led_brightness brightness);
+
+/**
+ * led_set_brightness_sync - set LED brightness synchronously
+ * @led_cdev: the LED to set
+ * @brightness: the brightness to set it to
+ *
+ * Set an LED's brightness immediately. This function will block
+ * the caller for the time required for accessing device registers,
+ * and it can sleep.
+ *
+ * Returns: 0 on success or negative error value on failure
+ */
+extern int led_set_brightness_sync(struct led_classdev *led_cdev,
+                                  enum led_brightness value);
+
 /**
  * led_update_brightness - update LED brightness
  * @led_cdev: the LED to query
@@ -231,6 +246,8 @@ ssize_t led_trigger_show(struct device *dev, struct device_attribute *attr,
 /* Registration functions for complex triggers */
 extern int led_trigger_register(struct led_trigger *trigger);
 extern void led_trigger_unregister(struct led_trigger *trigger);
+extern int devm_led_trigger_register(struct device *dev,
+                                    struct led_trigger *trigger);
 
 extern void led_trigger_register_simple(const char *name,
                                struct led_trigger **trigger);
This page took 0.025874 seconds and 5 git commands to generate.