1 From 28b29382f1f9c4f6783054527283a8247b2c5cba Mon Sep 17 00:00:00 2001
2 From: Holger Freyther <zecke@openmoko.org>
3 Date: Fri, 25 Jul 2008 23:06:05 +0100
4 Subject: [PATCH] [led] Misc fixes in the driver code
5 to_bundle returned the wrong data. The platform_device is the
6 parent of the class_device used by the LED device class. Return
9 num_leds was not set to the correct number of registered LEDs. All
10 loops using num_leds (e.g. module unloading) were not executed at
13 On removal of the module disable all LEDs.
15 Signed-Off-By: Holger Freyther <zecke@openmoko.org>
17 drivers/leds/leds-neo1973-gta02.c | 6 +++++-
18 1 files changed, 5 insertions(+), 1 deletions(-)
20 diff --git a/drivers/leds/leds-neo1973-gta02.c b/drivers/leds/leds-neo1973-gta02.c
21 index fbb62c4..343550a 100644
22 --- a/drivers/leds/leds-neo1973-gta02.c
23 +++ b/drivers/leds/leds-neo1973-gta02.c
24 @@ -46,7 +46,7 @@ static inline struct gta02_led_priv *to_priv(struct led_classdev *led_cdev)
26 static inline struct gta02_led_bundle *to_bundle(struct led_classdev *led_cdev)
28 - return dev_get_drvdata(led_cdev->dev);
29 + return dev_get_drvdata(led_cdev->dev->parent);
32 static void gta02led_set(struct led_classdev *led_cdev,
33 @@ -174,6 +174,8 @@ static int __init gta02led_probe(struct platform_device *pdev)
34 rc = led_classdev_register(&pdev->dev, &lp->cdev);
37 + bundle->num_leds = i;
42 @@ -186,6 +188,8 @@ static int gta02led_remove(struct platform_device *pdev)
43 struct gta02_led_priv *lp = &bundle->led[i];
45 s3c2410_pwm_disable(&lp->pwm);
47 + gta02led_set(&lp->cdev, 0);
49 led_classdev_unregister(&lp->cdev);
50 mutex_destroy(&lp->mutex);