Thread (5 messages) 5 messages, 2 authors, 2011-07-22
DORMANTno replies
Revisions (3)
  1. v1 [diff vs current]
  2. v1 [diff vs current]
  3. v1 current

[PATCH 2/2] OMAP2+: PM: SR: add suspend/resume handlers

From: nm@ti.com (Menon, Nishanth)
Date: 2011-07-22 13:53:12
Also in: linux-omap

On Fri, Jul 22, 2011 at 04:13, Felipe Balbi [off-list ref] wrote:
Hi,

On Fri, Jul 22, 2011 at 12:55:53AM -0500, Nishanth Menon wrote:
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help