diff options
author | Jonas Aaberg <jonas.aberg@stericsson.com> | 2012-05-21 16:05:01 +0200 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2013-01-23 15:39:18 +0100 |
commit | 53ef1f590dc59f3c1478c68ea1f06a28f55ddccb (patch) | |
tree | 290f605ca73727e643e93b96fc67e2ec327fd37e /drivers/power | |
parent | ab8500-fg: Go to INIT_RECOVERY when charger removed (diff) | |
download | linux-53ef1f590dc59f3c1478c68ea1f06a28f55ddccb.tar.xz linux-53ef1f590dc59f3c1478c68ea1f06a28f55ddccb.zip |
ab8500-bm: Flush all work queues before suspending
Flush all workqueues at suspend time to avoid suspending during work.
Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Reviewed-by: Marcus COOPER <marcus.xm.cooper@stericsson.com>
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/ab8500_charger.c | 11 | ||||
-rw-r--r-- | drivers/power/ab8500_fg.c | 5 |
2 files changed, 16 insertions, 0 deletions
diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c index da965ee615cc..a632b94e38b9 100644 --- a/drivers/power/ab8500_charger.c +++ b/drivers/power/ab8500_charger.c @@ -2866,6 +2866,17 @@ static int ab8500_charger_suspend(struct platform_device *pdev, if (delayed_work_pending(&di->check_hw_failure_work)) cancel_delayed_work(&di->check_hw_failure_work); + flush_delayed_work(&di->attach_work); + flush_delayed_work(&di->usb_charger_attached_work); + flush_delayed_work(&di->ac_charger_attached_work); + flush_delayed_work(&di->check_usbchgnotok_work); + flush_delayed_work(&di->check_vbat_work); + flush_delayed_work(&di->kick_wd_work); + + flush_work(&di->usb_link_status_work); + flush_work(&di->ac_work); + flush_work(&di->detect_usb_type_work); + return 0; } #else diff --git a/drivers/power/ab8500_fg.c b/drivers/power/ab8500_fg.c index c791a5cef2b1..f94c9661e47e 100644 --- a/drivers/power/ab8500_fg.c +++ b/drivers/power/ab8500_fg.c @@ -2570,6 +2570,11 @@ static int ab8500_fg_suspend(struct platform_device *pdev, struct ab8500_fg *di = platform_get_drvdata(pdev); flush_delayed_work(&di->fg_periodic_work); + flush_work(&di->fg_work); + flush_work(&di->fg_acc_cur_work); + flush_delayed_work(&di->fg_reinit_work); + flush_delayed_work(&di->fg_low_bat_work); + flush_delayed_work(&di->fg_check_hw_failure_work); /* * If the FG is enabled we will disable it before going to suspend |