"Nayak, Rajendra" <[email protected]> writes:
[...]
>> diff --git a/arch/arm/mach-omap2/pm_bus.c
>> b/arch/arm/mach-omap2/pm_bus.c
>> index 69acaa5..3787da8 100644
>> --- a/arch/arm/mach-omap2/pm_bus.c
>> +++ b/arch/arm/mach-omap2/pm_bus.c
>> @@ -70,3 +70,64 @@ int platform_pm_runtime_idle(struct device *dev)
>> };
>> #endif /* CONFIG_PM_RUNTIME */
>>
>> +#ifdef CONFIG_SUSPEND
>> +int platform_pm_suspend_noirq(struct device *dev)
>> +{
>> + struct device_driver *drv = dev->driver;
>> + struct platform_device *pdev = to_platform_device(dev);
>> + struct omap_device *odev = to_omap_device(pdev);
>> + int ret = 0;
>> +
>> + if (!drv)
>> + return 0;
>> +
>> + if (drv->pm) {
>> + if (drv->pm->suspend_noirq)
>> + ret = drv->pm->suspend_noirq(dev);
>> + }
>> +
>> + if (omap_device_is_valid(odev)) {
>> + if (odev->flags & OMAP_DEVICE_NO_BUS_SUSPEND) {
>> + dev_dbg(dev, "no automatic bus-level
>> system resume.\n");
>> + return 0;
>> + }
>> +
>> + dev_dbg(dev, "%s\n", __func__);
>> + omap_device_idle(pdev);
>
> Is it expected that a device is always in enabled state at this point?
> If the device is already in idle a call to omap_device_idle unconditionally
> throws up warnings from the omap_device api.
Hmm, good point. The device may already be idled (via runtime PM, or
maybe because it was never enabled.)
There are two options:
1. fixup the warnings in the omap_device_idle() to allow multiple
calls to _idle()
2. Add an omap_device_is_idle() check before calling _idle()
I much prefer (1).
Paul?
Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html