]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/linux/leds.h
leds: add possibility to remove leds classdevs during suspend/resume
[linux-2.6-omap-h63xx.git] / include / linux / leds.h
index 494bed7c2fc12f5133504daa7b4a2cc0e3b4b326..00f89fd6c52a21f83d26a7b94e351e3c782854bf 100644 (file)
 #define __LINUX_LEDS_H_INCLUDED
 
 #include <linux/list.h>
+#include <linux/spinlock.h>
+#include <linux/rwsem.h>
 
 struct device;
-struct class_device;
 /*
  * LED Core
  */
@@ -37,13 +38,13 @@ struct led_classdev {
        void            (*brightness_set)(struct led_classdev *led_cdev,
                                          enum led_brightness brightness);
 
-       struct class_device     *class_dev;
+       struct device           *dev;
        struct list_head         node;                  /* LED Device list */
        char                    *default_trigger;       /* Trigger to use */
 
 #ifdef CONFIG_LEDS_TRIGGERS
        /* Protects the trigger data below */
-       rwlock_t                 trigger_lock;
+       struct rw_semaphore      trigger_lock;
 
        struct led_trigger      *trigger;
        struct list_head         trig_list;
@@ -53,7 +54,15 @@ struct led_classdev {
 
 extern int led_classdev_register(struct device *parent,
                                 struct led_classdev *led_cdev);
-extern void led_classdev_unregister(struct led_classdev *led_cdev);
+extern void __led_classdev_unregister(struct led_classdev *led_cdev, bool sus);
+static inline void led_classdev_unregister(struct led_classdev *lcd)
+{
+       __led_classdev_unregister(lcd, false);
+}
+static inline void led_classdev_unregister_suspended(struct led_classdev *lcd)
+{
+       __led_classdev_unregister(lcd, true);
+}
 extern void led_classdev_suspend(struct led_classdev *led_cdev);
 extern void led_classdev_resume(struct led_classdev *led_cdev);
 
@@ -109,4 +118,18 @@ extern void ledtrig_ide_activity(void);
 #define ledtrig_ide_activity() do {} while(0)
 #endif
 
+/* For the leds-gpio driver */
+struct gpio_led {
+       const char *name;
+       char *default_trigger;
+       unsigned        gpio;
+       u8              active_low;
+};
+
+struct gpio_led_platform_data {
+       int             num_leds;
+       struct gpio_led *leds;
+};
+
+
 #endif         /* __LINUX_LEDS_H_INCLUDED */