diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap_device.c')
-rw-r--r-- | arch/arm/mach-omap2/omap_device.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c index b69dd9abb50a..53f0735817bb 100644 --- a/arch/arm/mach-omap2/omap_device.c +++ b/arch/arm/mach-omap2/omap_device.c | |||
@@ -621,6 +621,7 @@ static int _od_suspend_noirq(struct device *dev) | |||
621 | 621 | ||
622 | if (!ret && !pm_runtime_status_suspended(dev)) { | 622 | if (!ret && !pm_runtime_status_suspended(dev)) { |
623 | if (pm_generic_runtime_suspend(dev) == 0) { | 623 | if (pm_generic_runtime_suspend(dev) == 0) { |
624 | pm_runtime_set_suspended(dev); | ||
624 | omap_device_idle(pdev); | 625 | omap_device_idle(pdev); |
625 | od->flags |= OMAP_DEVICE_SUSPENDED; | 626 | od->flags |= OMAP_DEVICE_SUSPENDED; |
626 | } | 627 | } |
@@ -634,10 +635,18 @@ static int _od_resume_noirq(struct device *dev) | |||
634 | struct platform_device *pdev = to_platform_device(dev); | 635 | struct platform_device *pdev = to_platform_device(dev); |
635 | struct omap_device *od = to_omap_device(pdev); | 636 | struct omap_device *od = to_omap_device(pdev); |
636 | 637 | ||
637 | if ((od->flags & OMAP_DEVICE_SUSPENDED) && | 638 | if (od->flags & OMAP_DEVICE_SUSPENDED) { |
638 | !pm_runtime_status_suspended(dev)) { | ||
639 | od->flags &= ~OMAP_DEVICE_SUSPENDED; | 639 | od->flags &= ~OMAP_DEVICE_SUSPENDED; |
640 | omap_device_enable(pdev); | 640 | omap_device_enable(pdev); |
641 | /* | ||
642 | * XXX: we run before core runtime pm has resumed itself. At | ||
643 | * this point in time, we just restore the runtime pm state and | ||
644 | * considering symmetric operations in resume, we donot expect | ||
645 | * to fail. If we failed, something changed in core runtime_pm | ||
646 | * framework OR some device driver messed things up, hence, WARN | ||
647 | */ | ||
648 | WARN(pm_runtime_set_active(dev), | ||
649 | "Could not set %s runtime state active\n", dev_name(dev)); | ||
641 | pm_generic_runtime_resume(dev); | 650 | pm_generic_runtime_resume(dev); |
642 | } | 651 | } |
643 | 652 | ||