Turning off the brightness of each channel is required
when removing the driver.
So use flush_work() rather than cancel_work_sync() to execute
remaining brightness works.
Signed-off-by: Milo(Woogyom) Kim <[email protected]>
---
drivers/leds/leds-lp5523.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/leds/leds-lp5523.c b/drivers/leds/leds-lp5523.c
index 9fd9a92..2fd5689 100644
--- a/drivers/leds/leds-lp5523.c
+++ b/drivers/leds/leds-lp5523.c
@@ -974,7 +974,7 @@ static int __devinit lp5523_probe(struct i2c_client *client,
fail2:
for (i = 0; i < chip->num_leds; i++) {
led_classdev_unregister(&chip->leds[i].cdev);
- cancel_work_sync(&chip->leds[i].brightness_work);
+ flush_work(&chip->leds[i].brightness_work);
}
fail1:
if (pdata->enable)
@@ -993,7 +993,7 @@ static int lp5523_remove(struct i2c_client *client)
for (i = 0; i < chip->num_leds; i++) {
led_classdev_unregister(&chip->leds[i].cdev);
- cancel_work_sync(&chip->leds[i].brightness_work);
+ flush_work(&chip->leds[i].brightness_work);
}
if (chip->pdata->enable)
--
1.7.2.5
Best Regards,
Milo
On Wed, Aug 22, 2012 at 3:32 PM, Kim, Milo <[email protected]> wrote:
> Turning off the brightness of each channel is required
> when removing the driver.
>
> So use flush_work() rather than cancel_work_sync() to execute
> remaining brightness works.
>
Thanks, merged to my for-next
-Bryan
> Signed-off-by: Milo(Woogyom) Kim <[email protected]>
> ---
> drivers/leds/leds-lp5523.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/leds/leds-lp5523.c b/drivers/leds/leds-lp5523.c
> index 9fd9a92..2fd5689 100644
> --- a/drivers/leds/leds-lp5523.c
> +++ b/drivers/leds/leds-lp5523.c
> @@ -974,7 +974,7 @@ static int __devinit lp5523_probe(struct i2c_client *client,
> fail2:
> for (i = 0; i < chip->num_leds; i++) {
> led_classdev_unregister(&chip->leds[i].cdev);
> - cancel_work_sync(&chip->leds[i].brightness_work);
> + flush_work(&chip->leds[i].brightness_work);
> }
> fail1:
> if (pdata->enable)
> @@ -993,7 +993,7 @@ static int lp5523_remove(struct i2c_client *client)
>
> for (i = 0; i < chip->num_leds; i++) {
> led_classdev_unregister(&chip->leds[i].cdev);
> - cancel_work_sync(&chip->leds[i].brightness_work);
> + flush_work(&chip->leds[i].brightness_work);
> }
>
> if (chip->pdata->enable)
> --
> 1.7.2.5
>
>
> Best Regards,
> Milo
>
>
--
Bryan Wu <[email protected]>
Kernel Developer +86.186-168-78255 Mobile
Canonical Ltd. http://www.canonical.com
Ubuntu - Linux for human beings | http://www.ubuntu.com