aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/powerdomain.h
diff options
context:
space:
mode:
authorPaul Walmsley <paul@pwsan.com>2013-01-29 15:45:09 -0500
committerPaul Walmsley <paul@pwsan.com>2013-01-29 16:59:57 -0500
commitc4978fba6b2d4e3a584d72c067a371871fecbedc (patch)
tree75add16022eb4e71ae50e1aecb42d1d5a9f420ab /arch/arm/mach-omap2/powerdomain.h
parentf8457c2d8be94779c8c460060e536d3a2a02c8d8 (diff)
ARM: OMAP2+: PM/powerdomain: move omap_set_pwrdm_state() to powerdomain code
Move omap_set_pwrdm_state() from the PM code to the powerdomain code, and refactor it to split it up into several functions. A subsequent patch will rename it to conform with the existing powerdomain function names. This version includes some additional documentation, based on a suggestion from Jean Pihet. It also modifies omap_set_pwrdm_state() to not bail out early unless both the powerdomain current power state and the next power state are equal. (Previously it would terminate early if the next power state was equal to the target power state, which was insufficiently rigorous.) Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Jean Pihet <jean.pihet@newoldbits.com> Cc: Kevin Hilman <khilman@deeprootsystems.com> Cc: Tero Kristo <t-kristo@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2/powerdomain.h')
-rw-r--r--arch/arm/mach-omap2/powerdomain.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/powerdomain.h b/arch/arm/mach-omap2/powerdomain.h
index 7c1534bb16e9..93e7df824650 100644
--- a/arch/arm/mach-omap2/powerdomain.h
+++ b/arch/arm/mach-omap2/powerdomain.h
@@ -162,6 +162,16 @@ struct powerdomain {
162 * @pwrdm_disable_hdwr_sar: Disable Hardware Save-Restore feature for a pd 162 * @pwrdm_disable_hdwr_sar: Disable Hardware Save-Restore feature for a pd
163 * @pwrdm_set_lowpwrstchange: Enable pd transitions from a shallow to deep sleep 163 * @pwrdm_set_lowpwrstchange: Enable pd transitions from a shallow to deep sleep
164 * @pwrdm_wait_transition: Wait for a pd state transition to complete 164 * @pwrdm_wait_transition: Wait for a pd state transition to complete
165 *
166 * Regarding @pwrdm_set_lowpwrstchange: On the OMAP2 and 3-family
167 * chips, a powerdomain's power state is not allowed to directly
168 * transition from one low-power state (e.g., CSWR) to another
169 * low-power state (e.g., OFF) without first waking up the
170 * powerdomain. This wastes energy. So OMAP4 chips support the
171 * ability to transition a powerdomain power state directly from one
172 * low-power state to another. The function pointed to by
173 * @pwrdm_set_lowpwrstchange is intended to configure the OMAP4
174 * hardware powerdomain state machine to enable this feature.
165 */ 175 */
166struct pwrdm_ops { 176struct pwrdm_ops {
167 int (*pwrdm_set_next_pwrst)(struct powerdomain *pwrdm, u8 pwrst); 177 int (*pwrdm_set_next_pwrst)(struct powerdomain *pwrdm, u8 pwrst);
@@ -228,10 +238,11 @@ bool pwrdm_has_hdwr_sar(struct powerdomain *pwrdm);
228int pwrdm_state_switch(struct powerdomain *pwrdm); 238int pwrdm_state_switch(struct powerdomain *pwrdm);
229int pwrdm_pre_transition(struct powerdomain *pwrdm); 239int pwrdm_pre_transition(struct powerdomain *pwrdm);
230int pwrdm_post_transition(struct powerdomain *pwrdm); 240int pwrdm_post_transition(struct powerdomain *pwrdm);
231int pwrdm_set_lowpwrstchange(struct powerdomain *pwrdm);
232int pwrdm_get_context_loss_count(struct powerdomain *pwrdm); 241int pwrdm_get_context_loss_count(struct powerdomain *pwrdm);
233bool pwrdm_can_ever_lose_context(struct powerdomain *pwrdm); 242bool pwrdm_can_ever_lose_context(struct powerdomain *pwrdm);
234 243
244extern int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 state);
245
235extern void omap242x_powerdomains_init(void); 246extern void omap242x_powerdomains_init(void);
236extern void omap243x_powerdomains_init(void); 247extern void omap243x_powerdomains_init(void);
237extern void omap3xxx_powerdomains_init(void); 248extern void omap3xxx_powerdomains_init(void);