Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f595674 authored by Kevin Hilman's avatar Kevin Hilman Committed by Paul Walmsley
Browse files

OMAP2+: powerdomain: add API to get context loss count



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: default avatarKevin Hilman <khilman@deeprootsystems.com>
[paul@pwsan.com: removed bogus return value on error; improved kerneldoc;
 tweaked commit message]
Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
parent 0a01aa21
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
@@ -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);