From: d-gerlach@ti.com (Dave Gerlach)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: OMAP2+: Remove suspend_set_ops from common pm late init
Date: Fri, 9 May 2014 15:17:04 -0500 [thread overview]
Message-ID: <536D37C0.1000704@ti.com> (raw)
In-Reply-To: <536D26C6.1060903@ti.com>
On 05/09/2014 02:04 PM, Nishanth Menon wrote:
> On 05/09/2014 01:53 PM, Dave Gerlach wrote:
>> In omap2_common_pm_late_init suspend_set_ops was called to set common
>> suspend handling functions for all omap platforms. This created two
>> problems. First, these suspend ops were being set for all platforms,
>> regardless of whether or not suspend support has been integrated so in
>> the case of AM33XX, suspend to mem was presented as available but
>> failed every time. Second, some platforms will need to define a
>> completely separate set of suspend ops, such as AM33XX, due to
>> differences from previous omap platforms so there is no need to
>> always set the common omap ops.
>>
>> This patch moves the suspend_set_ops call from omap2_common_pm_late_init
>> into a separate function that then gets called in the omap*_pm_init
>> functions for each platform.
>>
>> Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
>> ---
>> arch/arm/mach-omap2/common.h | 8 ++++++++
>> arch/arm/mach-omap2/pm.c | 8 ++++----
>> arch/arm/mach-omap2/pm24xx.c | 1 +
>> arch/arm/mach-omap2/pm34xx.c | 1 +
>> arch/arm/mach-omap2/pm44xx.c | 1 +
>> 5 files changed, 15 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
>> index d88aff7..091e1c7 100644
>> --- a/arch/arm/mach-omap2/common.h
>> +++ b/arch/arm/mach-omap2/common.h
>> @@ -162,6 +162,14 @@ static inline void omap44xx_restart(enum reboot_mode mode, const char *cmd)
>> }
>> #endif
>>
>> +#ifdef CONFIG_SUSPEND
>> +void omap_common_suspend_init(void);
>> +#else
>> +static inline void omap_common_suspend_init(void)
>> +{
>> +}
>> +#endif
>> +
> push this off to this pm.h?
I could, I had just put it in the same spot as
omap2_common_pm_late_init. I agree it makes sense to move it though.
>
>> /* This gets called from mach-omap2/io.c, do not call this */
>> void __init omap2_set_globals_tap(u32 class, void __iomem *tap);
>>
>> diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c
>> index e1b4141..c9b36fb 100644
>> --- a/arch/arm/mach-omap2/pm.c
>> +++ b/arch/arm/mach-omap2/pm.c
>> @@ -243,6 +243,10 @@ static const struct platform_suspend_ops omap_pm_ops = {
>> .valid = suspend_valid_only_mem,
>> };
>>
>> +void __init omap_common_suspend_init(void)
> provide kernel doc please? and do we need __init?
Added and no.
>
>> +{
>> + suspend_set_ops(&omap_pm_ops);
>> +}
>> #endif /* CONFIG_SUSPEND */
>>
>> static void __init omap3_init_voltages(void)
>> @@ -310,9 +314,5 @@ int __init omap2_common_pm_late_init(void)
>> /* cpufreq dummy device instantiation */
>> omap_init_cpufreq();
>>
>> -#ifdef CONFIG_SUSPEND
>> - suspend_set_ops(&omap_pm_ops);
>> -#endif
>> -
>> return 0;
>> }
>> diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c
>> index 8c07594..8cd2408 100644
>> --- a/arch/arm/mach-omap2/pm24xx.c
>> +++ b/arch/arm/mach-omap2/pm24xx.c
>> @@ -231,6 +231,7 @@ static void __init prcm_setup_regs(void)
>>
>> #ifdef CONFIG_SUSPEND
>> omap_pm_suspend = omap2_enter_full_retention;
>> + omap_common_suspend_init();
>> #endif
>>
>> /* REVISIT: Configure number of 32 kHz clock cycles for sys_clk
>> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
>> index 87099bb..32b2597 100644
>> --- a/arch/arm/mach-omap2/pm34xx.c
>> +++ b/arch/arm/mach-omap2/pm34xx.c
>> @@ -707,6 +707,7 @@ int __init omap3_pm_init(void)
>>
>> #ifdef CONFIG_SUSPEND
>> omap_pm_suspend = omap3_pm_suspend;
>> + omap_common_suspend_init();
>> #endif
>>
>> arm_pm_idle = omap3_pm_idle;
>> diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c
>> index eefb30c..58d7cd7 100644
>> --- a/arch/arm/mach-omap2/pm44xx.c
>> +++ b/arch/arm/mach-omap2/pm44xx.c
>> @@ -253,6 +253,7 @@ int __init omap4_pm_init(void)
>>
>> #ifdef CONFIG_SUSPEND
>> omap_pm_suspend = omap4_pm_suspend;
>> + omap_common_suspend_init();
>
> do we need to expose omap_pm_suspend anymore with this since the
> original purpose was to make pm.c know about the suspend function?
> How about:
> omap_common_suspend_init(omap4_pm_suspend);
> should do the job, right? and with that, you dont need the #ifdef
> CONFIG_SUSPEND either in each of the pmxxx.c files since you already
> deal with it in header.
Yes, I like this idea myself.
Thanks for the comments,
Dave
>
>> #endif
>>
>> /* Overwrite the default cpu_do_idle() */
>>
>
>
next prev parent reply other threads:[~2014-05-09 20:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-09 18:53 [PATCH] ARM: OMAP2+: Remove suspend_set_ops from common pm late init Dave Gerlach
2014-05-09 19:04 ` Nishanth Menon
2014-05-09 20:17 ` Dave Gerlach [this message]
2014-05-09 20:38 ` Nishanth Menon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=536D37C0.1000704@ti.com \
--to=d-gerlach@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox