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

Commit fc013873 authored by Tomi Valkeinen's avatar Tomi Valkeinen Committed by Tony Lindgren
Browse files

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: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: default avatarKevin Hilman <khilman@ti.com>
Acked-by: default avatarPaul Walmsley <paul@pwsan.com>
[tony@atomide.com: updated to fix a warning with recent dmtimer changes]
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent c862dd70
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2625,7 +2625,7 @@ int omap_hwmod_set_postsetup_state(struct omap_hwmod *oh, u8 state)
 * 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;
+10 −4
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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);
+2 −2
Original line number Diff line number Diff line
@@ -104,7 +104,7 @@ struct dmtimer_platform_data {

	bool loses_context;

	u32 (*get_context_loss_count)(struct device *dev);
	int (*get_context_loss_count)(struct device *dev);
};

struct omap_dm_timer *omap_dm_timer_request(void);
@@ -279,7 +279,7 @@ struct omap_dm_timer {
	struct platform_device *pdev;
	struct list_head node;

	u32 (*get_context_loss_count)(struct device *dev);
	int (*get_context_loss_count)(struct device *dev);
};

int omap_dm_timer_prepare(struct omap_dm_timer *timer);
+2 −2
Original line number Diff line number Diff line
@@ -342,9 +342,9 @@ unsigned long omap_pm_cpu_get_freq(void);
 * driver must restore device context.   If the number of context losses
 * exceeds the maximum positive integer, the function will wrap to 0 and
 * continue counting.  Returns the number of context losses for this device,
 * or zero upon error.
 * or negative value upon error.
 */
u32 omap_pm_get_dev_context_loss_count(struct device *dev);
int omap_pm_get_dev_context_loss_count(struct device *dev);

void omap_pm_enable_off_mode(void);
void omap_pm_disable_off_mode(void);
Loading