leds-clevo-mail: hw accelerated LED blink extension
Subsystems (2)
PATCH 3/4 leds-clevo-mail: hw accelerated LED blink extension
From: Márton Németh <[email protected]>
Extends the leds subsystem with a blink_set() callback function which can be optionally implemented by a LED driver. If implemented, the driver can use the hardware acceleration for blinking a LED.
Signed-off-by Márton Németh <[email protected]>
---
Documentation/leds-class.txt +21 -4
@@ -49,6 +49,27 @@ overhead, I suggest these become part of above leaves scope for further attributes should they be needed. +Hardware accelerated blink of LEDs +================================== + +Some LEDs can be programmed to blink without any CPU interaction. To +support this feature, a LED driver can optionally implement the +blink_set() function (see <linux/leds.h>). If implemeted, the +ledtrig-timer tries to use it. The blink_set() function should return +0 if the blink setting is supported, or -EINVAL otherwise, which means +that the LED will be turned on and off from software by the leds +subsystem. + +The blink_set() function should choose a user friendly blinking +value if it is called with *delay_on==0 && *delay_off==0 parameters. In +this case the driver should give back the chosen value through delay_on +and delay_off parameters to the leds subsystem. + +Any call to the brightness_set() callback function should cancel the +previously programmed hardware blinking function so setting the brightness +to 0 can also cancel the blinking of the LED. + + Known Issues ============
@@ -57,10 +78,6 @@ would cause nightmare dependency issues. compared to the benefits the simple trigger functionality brings. The rest of the LED subsystem can be modular. -Some leds can be programmed to flash in hardware. As this isn't a generic -LED device property, this should be exported as a device specific sysfs -attribute rather than part of the class if this functionality is required. - Future Development ==================
drivers/leds/Kconfig +5 -1
@@ -152,7 +152,11 @@ config LEDS_TRIGGER_TIMER depends on LEDS_TRIGGERS help This allows LEDs to be controlled by a programmable timer - via sysfs. If unsure, say Y. + via sysfs. Some LED hardware can be programmed to start + blinking the LED without any further software interaction. + For more details read Documentation/leds-class.txt. + + If unsure, say Y. config LEDS_TRIGGER_IDE_DISK bool "LED IDE Disk Trigger"
drivers/leds/ledtrig-timer.c +37 -4
59 lines not on this page · raw message
include/linux/leds.h +5 -0
@@ -37,6 +37,11 @@ struct led_classdev {void (*brightness_set)(struct led_classdev *led_cdev,enum led_brightness brightness); +/* 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 */