diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.c | 18 | 
1 files changed, 9 insertions, 9 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index c2c798c08c2..9553c9907d4 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -138,6 +138,7 @@  #include <linux/spinlock.h>  #include <linux/slab.h>  #include <linux/bootmem.h> +#include <linux/cpu.h>  #include <asm/system_misc.h> @@ -610,8 +611,6 @@ static int _enable_wakeup(struct omap_hwmod *oh, u32 *v)  	/* XXX test pwrdm_get_wken for this hwmod's subsystem */ -	oh->_int_flags |= _HWMOD_WAKEUP_ENABLED; -  	return 0;  } @@ -645,8 +644,6 @@ static int _disable_wakeup(struct omap_hwmod *oh, u32 *v)  	/* XXX test pwrdm_get_wken for this hwmod's subsystem */ -	oh->_int_flags &= ~_HWMOD_WAKEUP_ENABLED; -  	return 0;  } @@ -1368,7 +1365,9 @@ static void _enable_sysc(struct omap_hwmod *oh)  	}  	if (sf & SYSC_HAS_MIDLEMODE) { -		if (oh->flags & HWMOD_SWSUP_MSTANDBY) { +		if (oh->flags & HWMOD_FORCE_MSTANDBY) { +			idlemode = HWMOD_IDLEMODE_FORCE; +		} else if (oh->flags & HWMOD_SWSUP_MSTANDBY) {  			idlemode = HWMOD_IDLEMODE_NO;  		} else {  			if (sf & SYSC_HAS_ENAWAKEUP) @@ -1440,7 +1439,8 @@ static void _idle_sysc(struct omap_hwmod *oh)  	}  	if (sf & SYSC_HAS_MIDLEMODE) { -		if (oh->flags & HWMOD_SWSUP_MSTANDBY) { +		if ((oh->flags & HWMOD_SWSUP_MSTANDBY) || +		    (oh->flags & HWMOD_FORCE_MSTANDBY)) {  			idlemode = HWMOD_IDLEMODE_FORCE;  		} else {  			if (sf & SYSC_HAS_ENAWAKEUP) @@ -2154,7 +2154,7 @@ static int _enable(struct omap_hwmod *oh)  	if (soc_ops.enable_module)  		soc_ops.enable_module(oh);  	if (oh->flags & HWMOD_BLOCK_WFI) -		disable_hlt(); +		cpu_idle_poll_ctrl(true);  	if (soc_ops.update_context_lost)  		soc_ops.update_context_lost(oh); @@ -2218,7 +2218,7 @@ static int _idle(struct omap_hwmod *oh)  	_del_initiator_dep(oh, mpu_oh);  	if (oh->flags & HWMOD_BLOCK_WFI) -		enable_hlt(); +		cpu_idle_poll_ctrl(false);  	if (soc_ops.disable_module)  		soc_ops.disable_module(oh); @@ -2328,7 +2328,7 @@ static int _shutdown(struct omap_hwmod *oh)  		_del_initiator_dep(oh, mpu_oh);  		/* XXX what about the other system initiators here? dma, dsp */  		if (oh->flags & HWMOD_BLOCK_WFI) -			enable_hlt(); +			cpu_idle_poll_ctrl(false);  		if (soc_ops.disable_module)  			soc_ops.disable_module(oh);  		_disable_clocks(oh);  |