diff options
Diffstat (limited to 'arch/arm/mach-omap2/pm.c')
| -rw-r--r-- | arch/arm/mach-omap2/pm.c | 69 | 
1 files changed, 3 insertions, 66 deletions
diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index 1ec429964b7..8d5e6e6b14a 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c @@ -32,8 +32,6 @@  #include "pm.h"  #include "twl-common.h" -static struct omap_device_pm_latency *pm_lats; -  /*   * omap_pm_suspend: points to a function that does the SoC-specific   * suspend work @@ -82,7 +80,7 @@ static int __init _init_omap_device(char *name)  		 __func__, name))  		return -ENODEV; -	pdev = omap_device_build(oh->name, 0, oh, NULL, 0, pm_lats, 0, false); +	pdev = omap_device_build(oh->name, 0, oh, NULL, 0);  	if (WARN(IS_ERR(pdev), "%s: could not build omap_device for %s\n",  		 __func__, name))  		return -ENODEV; @@ -108,80 +106,19 @@ static void __init omap2_init_processor_devices(void)  	}  } -/* Types of sleep_switch used in omap_set_pwrdm_state */ -#define FORCEWAKEUP_SWITCH	0 -#define LOWPOWERSTATE_SWITCH	1 -  int __init omap_pm_clkdms_setup(struct clockdomain *clkdm, void *unused)  { +	/* XXX The usecount test is racy */  	if ((clkdm->flags & CLKDM_CAN_ENABLE_AUTO) &&  	    !(clkdm->flags & CLKDM_MISSING_IDLE_REPORTING))  		clkdm_allow_idle(clkdm);  	else if (clkdm->flags & CLKDM_CAN_FORCE_SLEEP && -		 atomic_read(&clkdm->usecount) == 0) +		 clkdm->usecount == 0)  		clkdm_sleep(clkdm);  	return 0;  }  /* - * This sets pwrdm state (other than mpu & core. Currently only ON & - * RET are supported. - */ -int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 pwrst) -{ -	u8 curr_pwrst, next_pwrst; -	int sleep_switch = -1, ret = 0, hwsup = 0; - -	if (!pwrdm || IS_ERR(pwrdm)) -		return -EINVAL; - -	while (!(pwrdm->pwrsts & (1 << pwrst))) { -		if (pwrst == PWRDM_POWER_OFF) -			return ret; -		pwrst--; -	} - -	next_pwrst = pwrdm_read_next_pwrst(pwrdm); -	if (next_pwrst == pwrst) -		return ret; - -	curr_pwrst = pwrdm_read_pwrst(pwrdm); -	if (curr_pwrst < PWRDM_POWER_ON) { -		if ((curr_pwrst > pwrst) && -			(pwrdm->flags & PWRDM_HAS_LOWPOWERSTATECHANGE)) { -			sleep_switch = LOWPOWERSTATE_SWITCH; -		} else { -			hwsup = clkdm_in_hwsup(pwrdm->pwrdm_clkdms[0]); -			clkdm_wakeup(pwrdm->pwrdm_clkdms[0]); -			sleep_switch = FORCEWAKEUP_SWITCH; -		} -	} - -	ret = pwrdm_set_next_pwrst(pwrdm, pwrst); -	if (ret) -		pr_err("%s: unable to set power state of powerdomain: %s\n", -		       __func__, pwrdm->name); - -	switch (sleep_switch) { -	case FORCEWAKEUP_SWITCH: -		if (hwsup) -			clkdm_allow_idle(pwrdm->pwrdm_clkdms[0]); -		else -			clkdm_sleep(pwrdm->pwrdm_clkdms[0]); -		break; -	case LOWPOWERSTATE_SWITCH: -		pwrdm_set_lowpwrstchange(pwrdm); -		pwrdm_wait_transition(pwrdm); -		pwrdm_state_switch(pwrdm); -		break; -	} - -	return ret; -} - - - -/*   * This API is to be called during init to set the various voltage   * domains to the voltage as per the opp table. Typically we boot up   * at the nominal voltage. So this function finds out the rate of  |