leds: Add support for the 3rd LED on the PCEngines WRAP
PATCH 1/1 leds: Add support for the 3rd LED on the PCEngines WRAP
The 3rd LED on this board is something like a power-led, it is on all the time. With this change to the leds-wrap driver it is possible to use this LED too.
---
Hi
I wonder why there was no support for this LED. This LED and the GPIO line is documented in the first commit message (0d75565f) for this file.
I use this changed version for five weeks and it just works. I think this patch can be included in 2.6.25.
bye
PS: I'm not subscribed to the lkml, so please Cc me.
drivers/leds/leds-wrap.c | 43 +++++++++++++++++++++++++++++++++++++------ 1 files changed, 37 insertions(+), 6 deletions(-)
drivers/leds/leds-wrap.c +37 -6
@@ -19,11 +19,21 @@#include <linux/scx200_gpio.h> #define DRVNAME "wrap-led" +#define WRAP_POWER_LED_GPIO 2#define WRAP_ERROR_LED_GPIO 3 -#define WRAP_EXTRA_LED_GPIO 18 +#define WRAP_EXTRA_LED_GPIO 18static struct platform_device *pdev; +static void wrap_power_led_set (struct led_classdev *led_cdev, +enum led_brightness value) +{ +if (value) +scx200_gpio_set_low (WRAP_POWER_LED_GPIO ); +else +scx200_gpio_set_high (WRAP_POWER_LED_GPIO ); +} +static void wrap_error_led_set (struct led_classdev *led_cdev,enum led_brightness value) {
@@ -42,6 +52,11 @@ static void wrap_extra_led_set(struct led_classdev *led_cdev,scx200_gpio_set_high (WRAP_EXTRA_LED_GPIO ); } +static struct led_classdev wrap_power_led = { + .name ="wrap:power" , + .brightness_set = wrap_power_led_set, +}; +static struct led_classdev wrap_error_led = { .name ="wrap:error" , .brightness_set = wrap_error_led_set,
@@ -56,6 +71,7 @@ static struct led_classdev wrap_extra_led = {static int wrap_led_suspend (struct platform_device *dev,pm_message_t state) { +led_classdev_suspend (&wrap_power_led);led_classdev_suspend (&wrap_error_led);led_classdev_suspend (&wrap_extra_led);return 0 ;
@@ -63,6 +79,7 @@ static int wrap_led_suspend(struct platform_device *dev,static int wrap_led_resume (struct platform_device *dev) { +led_classdev_resume (&wrap_power_led);led_classdev_resume (&wrap_error_led);led_classdev_resume (&wrap_extra_led);return 0 ;
@@ -76,17 +93,31 @@ static int wrap_led_probe(struct platform_device *pdev) {int ret; + ret =led_classdev_register (&pdev->dev, &wrap_power_led); +if (ret <0 ) +return ret; + ret =led_classdev_register (&pdev->dev, &wrap_error_led); -if (ret ==0 ) { - ret =led_classdev_register (&pdev->dev, &wrap_extra_led); -if (ret <0 ) -led_classdev_unregister (&wrap_error_led); - } +if (ret <0 ) + goto err1; + + ret =led_classdev_register (&pdev->dev, &wrap_extra_led); +if (ret <0 ) + goto err2; + +return ret; + +err2: +led_classdev_unregister (&wrap_error_led); +err1: +led_classdev_unregister (&wrap_power_led); +return ret; }static int wrap_led_remove (struct platform_device *pdev) { +led_classdev_unregister (&wrap_power_led);led_classdev_unregister (&wrap_error_led);led_classdev_unregister (&wrap_extra_led);return 0 ;
Signature · 1 line
1.5.3.7.1112.g9758e
Richard Purdie
AppliedQuoted 8 lines · Michael Loeffler
The 3rd LED on this board is something like a power-led, it is on all the time. With this change to the leds-wrap driver it is possible to use this LED too.
Signed-off-by Michael Loeffler <[email protected]>---
Hi
Quoted 6 lines
I wonder why there was no support for this LED. This LED and the GPIO line is documented in the first commit message (
0d75565f) for this file.I use this changed version for five weeks and it just works. I think this patch can be included in 2.6.25.
I've queued it up in the LED tree, thanks.
Richard