"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

Reply via email to