From: "Menon, Nishanth" <nm@ti.com>
To: balbi@ti.com
Cc: Kevin <khilman@ti.com>, linux-omap <linux-omap@vger.kernel.org>,
linux-arm <linux-arm-kernel@lists.infradead.org>,
Colin <ccross@google.com>
Subject: Re: [PATCH 2/2] OMAP2+: PM: SR: add suspend/resume handlers
Date: Fri, 22 Jul 2011 08:53:12 -0500 [thread overview]
Message-ID: <CAOMWX4djN8D1hWGuqRLkk53pVPghT_T=3FUkhJv8Hnu7CWQ8Mg@mail.gmail.com> (raw)
In-Reply-To: <20110722091303.GK32058@legolas.emea.dhcp.ti.com>
On Fri, Jul 22, 2011 at 04:13, Felipe Balbi <balbi@ti.com> wrote:
> Hi,
>
> On Fri, Jul 22, 2011 at 12:55:53AM -0500, Nishanth Menon wrote:
>> Suspend and Resume paths are safe enough to do it in
>> the standard LDM suspend/resume handlers where one can
>> sleep. Add suspend/resume handlers for SmartReflex.
>>
>> Signed-off-by: Nishanth Menon <nm@ti.com>
>> ---
>> arch/arm/mach-omap2/smartreflex.c | 87 +++++++++++++++++++++++++++++++++++++
>> 1 files changed, 87 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c
>> index 33a027f..fb90bd2 100644
>> --- a/arch/arm/mach-omap2/smartreflex.c
>> +++ b/arch/arm/mach-omap2/smartreflex.c
>> @@ -39,6 +39,7 @@ struct omap_sr {
>> int ip_type;
>> int nvalue_count;
>> bool autocomp_active;
>> + bool is_suspended;
>> u32 clk_length;
>> u32 err_weight;
>> u32 err_minlimit;
>> @@ -684,6 +685,12 @@ void omap_sr_enable(struct voltagedomain *voltdm)
>> if (!sr->autocomp_active)
>> return;
>>
>> + if (sr->is_suspended) {
>> + dev_dbg(&sr->pdev->dev, "%s: in suspended state\n", __func__);
>> + return;
>> + }
>
> I wonder why you get these called if you're in suspend state. If this is
> called by some other driver, then shouldn't you pm_runtime_get_sync();
> do_whatever_you_need_to_do(); and pm_runtime_put(); rather then just
> returning ?
because we have two state machines running in parallel - cpu idle and
dvfs(cpufreq, and other dependent domain voltage scaling) and SR
driver is just one - it does it's own get_sync and put_sync_suspend.
we cannot guarentee that the SR enable/disable calls can be properly
sequenced unless we use suspend lockouts. SmartReflex driver is an
independent entity of it's own - yeah we can do the same as we have
done historically in the omap[34]_idle paths(which is disable SR after
we have disabled interrupts), but in case of suspend(unlike in idle),
we do *know* that SR will have to be disabled - hence doing it earlier
as part of standard LDM suspend sequences is more opportunistic.
Regards,
Nishanth Menon
WARNING: multiple messages have this Message-ID (diff)
From: nm@ti.com (Menon, Nishanth)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/2] OMAP2+: PM: SR: add suspend/resume handlers
Date: Fri, 22 Jul 2011 08:53:12 -0500 [thread overview]
Message-ID: <CAOMWX4djN8D1hWGuqRLkk53pVPghT_T=3FUkhJv8Hnu7CWQ8Mg@mail.gmail.com> (raw)
In-Reply-To: <20110722091303.GK32058@legolas.emea.dhcp.ti.com>
On Fri, Jul 22, 2011 at 04:13, Felipe Balbi <balbi@ti.com> wrote:
> Hi,
>
> On Fri, Jul 22, 2011 at 12:55:53AM -0500, Nishanth Menon wrote:
>> Suspend and Resume paths are safe enough to do it in
>> the standard LDM suspend/resume handlers where one can
>> sleep. Add suspend/resume handlers for SmartReflex.
>>
>> Signed-off-by: Nishanth Menon <nm@ti.com>
>> ---
>> ?arch/arm/mach-omap2/smartreflex.c | ? 87 +++++++++++++++++++++++++++++++++++++
>> ?1 files changed, 87 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c
>> index 33a027f..fb90bd2 100644
>> --- a/arch/arm/mach-omap2/smartreflex.c
>> +++ b/arch/arm/mach-omap2/smartreflex.c
>> @@ -39,6 +39,7 @@ struct omap_sr {
>> ? ? ? int ? ? ? ? ? ? ? ? ? ? ? ? ? ? ip_type;
>> ? ? ? int ? ? ? ? ? ? ? ? ? ? ? ? ? ? nvalue_count;
>> ? ? ? bool ? ? ? ? ? ? ? ? ? ? ? ? ? ?autocomp_active;
>> + ? ? bool ? ? ? ? ? ? ? ? ? ? ? ? ? ?is_suspended;
>> ? ? ? u32 ? ? ? ? ? ? ? ? ? ? ? ? ? ? clk_length;
>> ? ? ? u32 ? ? ? ? ? ? ? ? ? ? ? ? ? ? err_weight;
>> ? ? ? u32 ? ? ? ? ? ? ? ? ? ? ? ? ? ? err_minlimit;
>> @@ -684,6 +685,12 @@ void omap_sr_enable(struct voltagedomain *voltdm)
>> ? ? ? if (!sr->autocomp_active)
>> ? ? ? ? ? ? ? return;
>>
>> + ? ? if (sr->is_suspended) {
>> + ? ? ? ? ? ? dev_dbg(&sr->pdev->dev, "%s: in suspended state\n", __func__);
>> + ? ? ? ? ? ? return;
>> + ? ? }
>
> I wonder why you get these called if you're in suspend state. If this is
> called by some other driver, then shouldn't you pm_runtime_get_sync();
> do_whatever_you_need_to_do(); and pm_runtime_put(); rather then just
> returning ?
because we have two state machines running in parallel - cpu idle and
dvfs(cpufreq, and other dependent domain voltage scaling) and SR
driver is just one - it does it's own get_sync and put_sync_suspend.
we cannot guarentee that the SR enable/disable calls can be properly
sequenced unless we use suspend lockouts. SmartReflex driver is an
independent entity of it's own - yeah we can do the same as we have
done historically in the omap[34]_idle paths(which is disable SR after
we have disabled interrupts), but in case of suspend(unlike in idle),
we do *know* that SR will have to be disabled - hence doing it earlier
as part of standard LDM suspend sequences is more opportunistic.
Regards,
Nishanth Menon
next prev parent reply other threads:[~2011-07-22 13:53 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-22 5:55 [PATCH 0/2] OMAP3+: PM: SR fixes Nishanth Menon
2011-07-22 5:55 ` Nishanth Menon
2011-07-22 5:55 ` [PATCH 1/2] OMAP3+: PM: SR: use put_sync_suspend for disabling Nishanth Menon
2011-07-22 5:55 ` Nishanth Menon
2011-07-22 20:14 ` Kevin Hilman
2011-07-22 20:14 ` Kevin Hilman
2011-07-22 5:55 ` [PATCH 2/2] OMAP2+: PM: SR: add suspend/resume handlers Nishanth Menon
2011-07-22 5:55 ` Nishanth Menon
2011-07-22 9:13 ` Felipe Balbi
2011-07-22 9:13 ` Felipe Balbi
2011-07-22 13:53 ` Menon, Nishanth [this message]
2011-07-22 13:53 ` Menon, Nishanth
2011-07-22 20:10 ` Kevin Hilman
2011-07-22 20:10 ` Kevin Hilman
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='CAOMWX4djN8D1hWGuqRLkk53pVPghT_T=3FUkhJv8Hnu7CWQ8Mg@mail.gmail.com' \
--to=nm@ti.com \
--cc=balbi@ti.com \
--cc=ccross@google.com \
--cc=khilman@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.