diff options
| -rw-r--r-- | arch/arm/mach-omap2/pm34xx.c | 7 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/prcm-common.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/prm_common.c | 8 | 
3 files changed, 15 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index f56d1d678ad..391c708111e 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c @@ -242,10 +242,15 @@ static void omap34xx_save_context(u32 *save)  static int omap34xx_do_sram_idle(unsigned long save_state)  { -	if (suspend_debug) +	if (suspend_debug) {  		pr_debug("OMAP3_PRM_IRQENABLE_MPU_OFFSET 0x%08x\n",  			 omap2_prm_read_mod_reg(OCP_MOD,  				OMAP3_PRM_IRQENABLE_MPU_OFFSET)); +		omap_prcm_irq_restore(); +		pr_debug("OMAP3_PRM_IRQENABLE_MPU_OFFSET 0x%08x\n", +			 omap2_prm_read_mod_reg(OCP_MOD, +				OMAP3_PRM_IRQENABLE_MPU_OFFSET)); +	}  	omap34xx_cpu_suspend(save_state);  	return 0; diff --git a/arch/arm/mach-omap2/prcm-common.h b/arch/arm/mach-omap2/prcm-common.h index c7d355fafd2..bc83da73d18 100644 --- a/arch/arm/mach-omap2/prcm-common.h +++ b/arch/arm/mach-omap2/prcm-common.h @@ -487,6 +487,7 @@ extern int omap_prcm_register_chain_handler(  extern int omap_prcm_event_to_irq(const char *event);  extern void omap_prcm_irq_prepare(void);  extern void omap_prcm_irq_complete(void); +extern void omap_prcm_irq_restore(void);  # endif diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c index 228b850e632..c82aea6f358 100644 --- a/arch/arm/mach-omap2/prm_common.c +++ b/arch/arm/mach-omap2/prm_common.c @@ -216,6 +216,14 @@ void omap_prcm_irq_prepare(void)  	prcm_irq_setup->suspended = true;  } +void omap_prcm_irq_restore(void) +{ +	if (prcm_irq_setup->suspend_save_flag) { +		prcm_irq_setup->restore_irqen(prcm_irq_setup->saved_mask); +		prcm_irq_setup->ocp_barrier(); +	} +} +  void omap_prcm_irq_complete(void)  {  	prcm_irq_setup->suspended = false;  |