ARM: OMAP: change get_context_loss_count ret value to int
get_context_loss_count functions return context loss count as u32, and zero means an error. However, zero is also returned when context has never been lost and could also be returned when the context loss count has wrapped and goes to zero. Change the functions to return an int, with negative value meaning an error. OMAP HSMMC code uses omap_pm_get_dev_context_loss_count(), but as the hsmmc code handles the returned value as an int, with negative value meaning an error, this patch actually fixes hsmmc code also. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Kevin Hilman <khilman@ti.com> Acked-by: Paul Walmsley <paul@pwsan.com> [tony@atomide.com: updated to fix a warning with recent dmtimer changes] Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
committed by
Tony Lindgren
parent
c862dd7067
commit
fc01387302
@@ -2625,7 +2625,7 @@ ohsps_unlock:
|
||||
* Returns the context loss count of the powerdomain assocated with @oh
|
||||
* upon success, or zero if no powerdomain exists for @oh.
|
||||
*/
|
||||
u32 omap_hwmod_get_context_loss_count(struct omap_hwmod *oh)
|
||||
int omap_hwmod_get_context_loss_count(struct omap_hwmod *oh)
|
||||
{
|
||||
struct powerdomain *pwrdm;
|
||||
int ret = 0;
|
||||
|
@@ -1002,16 +1002,16 @@ int pwrdm_post_transition(void)
|
||||
* @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
|
||||
* logic off counter and the per-bank memory off counter. Returns negative
|
||||
* (and WARNs) upon error, otherwise, returns the context loss count.
|
||||
*/
|
||||
u32 pwrdm_get_context_loss_count(struct powerdomain *pwrdm)
|
||||
int pwrdm_get_context_loss_count(struct powerdomain *pwrdm)
|
||||
{
|
||||
int i, count;
|
||||
|
||||
if (!pwrdm) {
|
||||
WARN(1, "powerdomain: %s: pwrdm is null\n", __func__);
|
||||
return 0;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
count = pwrdm->state_counter[PWRDM_POWER_OFF];
|
||||
@@ -1020,7 +1020,13 @@ u32 pwrdm_get_context_loss_count(struct powerdomain *pwrdm)
|
||||
for (i = 0; i < pwrdm->banks; i++)
|
||||
count += pwrdm->ret_mem_off_counter[i];
|
||||
|
||||
pr_debug("powerdomain: %s: context loss count = %u\n",
|
||||
/*
|
||||
* Context loss count has to be a non-negative value. Clear the sign
|
||||
* bit to get a value range from 0 to INT_MAX.
|
||||
*/
|
||||
count &= INT_MAX;
|
||||
|
||||
pr_debug("powerdomain: %s: context loss count = %d\n",
|
||||
pwrdm->name, count);
|
||||
|
||||
return count;
|
||||
|
@@ -217,7 +217,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);
|
||||
int pwrdm_get_context_loss_count(struct powerdomain *pwrdm);
|
||||
bool pwrdm_can_ever_lose_context(struct powerdomain *pwrdm);
|
||||
|
||||
extern void omap242x_powerdomains_init(void);
|
||||
|
Reference in New Issue
Block a user