diff options
| author | Mohsan Habibi <mohsan@motorola.com> | 2014-06-23 17:09:07 -0400 |
|---|---|---|
| committer | Douglas Zobel <dzobel1@motorola.com> | 2014-06-25 14:20:17 +0000 |
| commit | afafddafc588120fa3c90325a97038bf6abf55d2 (patch) | |
| tree | e238e3b7077cf087565c99ac5b6a7d5290184232 /drivers/watchdog/omap_wdt.c | |
| parent | f3eddc99d4403e3d4d01fedd72e3abf61641086b (diff) | |
| download | olio-linux-3.10-afafddafc588120fa3c90325a97038bf6abf55d2.tar.xz olio-linux-3.10-afafddafc588120fa3c90325a97038bf6abf55d2.zip | |
IKXCLOCK-2527 watchdog: omap_wdt: change pm_runtime to IRQ safe
WD suspend function is using pm run-time API to suspend, and pm
run-time for WD is initialized with no IRQ safe, as result IRQ will be
enabled for some period of time to handle pm run-time request for WD.
If there is any pending/firing IRQ during this time it will be handled
and if IRQ is threaded then the thread will be put into running queue,
but SW is in idling sequence (no scheduling) and at this point there
is nothing to prevent system go to sleep (IRQ is not pending , it was
handled), as result the IRQ thread will be scheduled only after some
wake up event with unpredictable delay.
The solution is make WD pm runtime IRQ safe, so if there is pending
IRQ, system just will not go to sleep.
Change-Id: Ieed3a01ce503fcd11c54053b18780f6081b3f039
Signed-off-by: Mohsan Habibi <mohsan@motorola.com>
Diffstat (limited to 'drivers/watchdog/omap_wdt.c')
| -rw-r--r-- | drivers/watchdog/omap_wdt.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c index a0622ec438e..057fe5e00f2 100644 --- a/drivers/watchdog/omap_wdt.c +++ b/drivers/watchdog/omap_wdt.c @@ -309,6 +309,7 @@ static int omap_wdt_probe(struct platform_device *pdev) platform_set_drvdata(pdev, omap_wdt); pm_runtime_enable(wdev->dev); + pm_runtime_irq_safe(wdev->dev); pm_runtime_get_sync(wdev->dev); if (pdata && pdata->read_reset_sources) |