diff mbox

[1/1] OMAP: omap_device: only override _noirq methods, not normal suspend/resume

Message ID 1314229437-31836-2-git-send-email-khilman@ti.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Kevin Hilman Aug. 24, 2011, 11:43 p.m. UTC
commit c03f007a8bf0e092caeb6856a5c8a850df10b974 (OMAP: PM:
omap_device: add system PM methods for PM domain handling) mistakenly
used SET_SYSTEM_SLEEP_PM_OPS() when trying to configure custom methods
for the PM domains noirq methods.  Fix that by setting only the
suspend_noirq and resume_noirq methods with custom versions.

Note that all other PM domain methods (including the "normal"
suspend/resume methods) are populated using USE_PLATFORM_PM_SLEEP_OPS,
which configures them all to the default subsystem (platform_bus)
methods.

Reported-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
---
 arch/arm/plat-omap/omap_device.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

Comments

Rafael Wysocki Aug. 25, 2011, 2:12 p.m. UTC | #1
On Thursday, August 25, 2011, Kevin Hilman wrote:
> commit c03f007a8bf0e092caeb6856a5c8a850df10b974 (OMAP: PM:
> omap_device: add system PM methods for PM domain handling) mistakenly
> used SET_SYSTEM_SLEEP_PM_OPS() when trying to configure custom methods
> for the PM domains noirq methods.  Fix that by setting only the
> suspend_noirq and resume_noirq methods with custom versions.
> 
> Note that all other PM domain methods (including the "normal"
> suspend/resume methods) are populated using USE_PLATFORM_PM_SLEEP_OPS,
> which configures them all to the default subsystem (platform_bus)
> methods.
> 
> Reported-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
> Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
> Signed-off-by: Kevin Hilman <khilman@ti.com>

Applied to linux-pm/pm-fixes, will be pushed for 3.1, thanks!

Rafael


> ---
>  arch/arm/plat-omap/omap_device.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
> index b6b4097..9a6a538 100644
> --- a/arch/arm/plat-omap/omap_device.c
> +++ b/arch/arm/plat-omap/omap_device.c
> @@ -622,7 +622,8 @@ static struct dev_pm_domain omap_device_pm_domain = {
>  		SET_RUNTIME_PM_OPS(_od_runtime_suspend, _od_runtime_resume,
>  				   _od_runtime_idle)
>  		USE_PLATFORM_PM_SLEEP_OPS
> -		SET_SYSTEM_SLEEP_PM_OPS(_od_suspend_noirq, _od_resume_noirq)
> +		.suspend_noirq = _od_suspend_noirq,
> +		.resume_noirq = _od_resume_noirq,
>  	}
>  };
>  
>
Arnd Bergmann Sept. 1, 2011, 4 p.m. UTC | #2
On Thursday 25 August 2011, Kevin Hilman wrote:
> --- a/arch/arm/plat-omap/omap_device.c
> +++ b/arch/arm/plat-omap/omap_device.c
> @@ -622,7 +622,8 @@ static struct dev_pm_domain omap_device_pm_domain = {
>                 SET_RUNTIME_PM_OPS(_od_runtime_suspend, _od_runtime_resume,
>                                    _od_runtime_idle)
>                 USE_PLATFORM_PM_SLEEP_OPS
> -               SET_SYSTEM_SLEEP_PM_OPS(_od_suspend_noirq, _od_resume_noirq)
> +               .suspend_noirq = _od_suspend_noirq,
> +               .resume_noirq = _od_resume_noirq,
>         }
>  };

This breaks if CONFIG_SUSPEND is not set and the _od_suspend_noirq/_od_resume_noirq
functions are not defined.

	Arnd
Kevin Hilman Sept. 1, 2011, 5:50 p.m. UTC | #3
Arnd Bergmann <arnd@arndb.de> writes:

> On Thursday 25 August 2011, Kevin Hilman wrote:
>> --- a/arch/arm/plat-omap/omap_device.c
>> +++ b/arch/arm/plat-omap/omap_device.c
>> @@ -622,7 +622,8 @@ static struct dev_pm_domain omap_device_pm_domain = {
>>                 SET_RUNTIME_PM_OPS(_od_runtime_suspend, _od_runtime_resume,
>>                                    _od_runtime_idle)
>>                 USE_PLATFORM_PM_SLEEP_OPS
>> -               SET_SYSTEM_SLEEP_PM_OPS(_od_suspend_noirq, _od_resume_noirq)
>> +               .suspend_noirq = _od_suspend_noirq,
>> +               .resume_noirq = _od_resume_noirq,
>>         }
>>  };
>
> This breaks if CONFIG_SUSPEND is not set and the _od_suspend_noirq/_od_resume_noirq
> functions are not defined.

Indeed.

Will post a fix shortly.

Kevin
diff mbox

Patch

diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
index b6b4097..9a6a538 100644
--- a/arch/arm/plat-omap/omap_device.c
+++ b/arch/arm/plat-omap/omap_device.c
@@ -622,7 +622,8 @@  static struct dev_pm_domain omap_device_pm_domain = {
 		SET_RUNTIME_PM_OPS(_od_runtime_suspend, _od_runtime_resume,
 				   _od_runtime_idle)
 		USE_PLATFORM_PM_SLEEP_OPS
-		SET_SYSTEM_SLEEP_PM_OPS(_od_suspend_noirq, _od_resume_noirq)
+		.suspend_noirq = _od_suspend_noirq,
+		.resume_noirq = _od_resume_noirq,
 	}
 };