Skip to content

Commit

Permalink
OMAP2+: powerdomain: add API to get context loss count
Browse files Browse the repository at this point in the history
Add new powerdomain API

    u32 pwrdm_get_context_loss_count(struct powerdomain *pwrdm)

for checking how many times the powerdomain has lost context.  The
loss count is the sum of the powerdomain off-mode counter, the
logic off counter and the per-bank memory off counter.

Signed-off-by: Kevin Hilman <[email protected]>
[[email protected]: removed bogus return value on error; improved kerneldoc;
 tweaked commit message]
Signed-off-by: Paul Walmsley <[email protected]>
  • Loading branch information
metaliveblog authored and Paul Walmsley committed Dec 22, 2010
1 parent 0a01aa2 commit 7f59567
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
29 changes: 29 additions & 0 deletions arch/arm/mach-omap2/powerdomain.c
Original file line number Diff line number Diff line change
Expand Up @@ -909,3 +909,32 @@ int pwrdm_post_transition(void)
pwrdm_for_each(_pwrdm_post_transition_cb, NULL);
return 0;
}

/**
* pwrdm_get_context_loss_count - get powerdomain's context loss count
* @pwrdm: struct powerdomain * to wait for
*
* Context loss count is the sum of powerdomain off-mode counter, the
* logic off counter and the per-bank memory off counter. Returns 0
* (and WARNs) upon error, otherwise, returns the context loss count.
*/
u32 pwrdm_get_context_loss_count(struct powerdomain *pwrdm)
{
int i, count;

if (!pwrdm) {
WARN(1, "powerdomain: %s: pwrdm is null\n", __func__);
return 0;
}

count = pwrdm->state_counter[PWRDM_POWER_OFF];
count += pwrdm->ret_logic_off_counter;

for (i = 0; i < pwrdm->banks; i++)
count += pwrdm->ret_mem_off_counter[i];

pr_debug("powerdomain: %s: context loss count = %u\n",
pwrdm->name, count);

return count;
}
1 change: 1 addition & 0 deletions arch/arm/mach-omap2/powerdomain.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ int pwrdm_clkdm_state_switch(struct clockdomain *clkdm);
int pwrdm_pre_transition(void);
int pwrdm_post_transition(void);
int pwrdm_set_lowpwrstchange(struct powerdomain *pwrdm);
u32 pwrdm_get_context_loss_count(struct powerdomain *pwrdm);

extern void omap2xxx_powerdomains_init(void);
extern void omap3xxx_powerdomains_init(void);
Expand Down

0 comments on commit 7f59567

Please sign in to comment.