X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=include%2Flinux%2Fleds.h;h=519df72e939d30a4355747aa4cea1140b5c3bef9;hb=e3c50d5d25ac09efd9acbe2b2a3e365466de84ed;hp=059abfe219dc1dacbb40e463a022e75045531507;hpb=22e03f3b58dfcca30f0c8de185022132459638d1;p=safe%2Fjmp%2Flinux-2.6 diff --git a/include/linux/leds.h b/include/linux/leds.h index 059abfe..519df72 100644 --- a/include/linux/leds.h +++ b/include/linux/leds.h @@ -14,9 +14,9 @@ #include #include +#include struct device; -struct class_device; /* * LED Core */ @@ -35,16 +35,24 @@ struct led_classdev { #define LED_SUSPENDED (1 << 0) /* Set LED brightness level */ + /* Must not sleep, use a workqueue if needed */ void (*brightness_set)(struct led_classdev *led_cdev, enum led_brightness brightness); + /* Get LED brightness level */ + enum led_brightness (*brightness_get)(struct led_classdev *led_cdev); - struct class_device *class_dev; + /* Activate hardware accelerated blink */ + int (*blink_set)(struct led_classdev *led_cdev, + unsigned long *delay_on, + unsigned long *delay_off); + + 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; @@ -54,7 +62,7 @@ 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 *lcd); extern void led_classdev_suspend(struct led_classdev *led_cdev); extern void led_classdev_resume(struct led_classdev *led_cdev); @@ -121,6 +129,9 @@ struct gpio_led { struct gpio_led_platform_data { int num_leds; struct gpio_led *leds; + int (*gpio_blink_set)(unsigned gpio, + unsigned long *delay_on, + unsigned long *delay_off); };