|  | @@ -327,3 +327,46 @@ void omap_intc_restore_context(void)
 | 
	
		
			
				|  |  |  					bank, INTC_SYSCONFIG);
 | 
	
		
			
				|  |  |  		intc_bank_write_reg(intc_context[ind].sysconfig,
 | 
	
		
			
				|  |  |  					bank, INTC_SYSCONFIG);
 | 
	
		
			
				|  |  | +		intc_bank_write_reg(intc_context[ind].protection,
 | 
	
		
			
				|  |  | +					bank, INTC_PROTECTION);
 | 
	
		
			
				|  |  | +		intc_bank_write_reg(intc_context[ind].idle,
 | 
	
		
			
				|  |  | +					bank, INTC_IDLE);
 | 
	
		
			
				|  |  | +		intc_bank_write_reg(intc_context[ind].threshold,
 | 
	
		
			
				|  |  | +					bank, INTC_THRESHOLD);
 | 
	
		
			
				|  |  | +		for (i = 0; i < INTCPS_NR_IRQS; i++)
 | 
	
		
			
				|  |  | +			intc_bank_write_reg(intc_context[ind].ilr[i],
 | 
	
		
			
				|  |  | +				bank, (0x100 + 0x4*i));
 | 
	
		
			
				|  |  | +		for (i = 0; i < INTCPS_NR_MIR_REGS; i++)
 | 
	
		
			
				|  |  | +			intc_bank_write_reg(intc_context[ind].mir[i],
 | 
	
		
			
				|  |  | +				 &irq_banks[0], INTC_MIR0 + (0x20 * i));
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	/* MIRs are saved and restore with other PRCM registers */
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void omap3_intc_suspend(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	/* A pending interrupt would prevent OMAP from entering suspend */
 | 
	
		
			
				|  |  | +	omap_ack_irq(NULL);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void omap3_intc_prepare_idle(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	/*
 | 
	
		
			
				|  |  | +	 * Disable autoidle as it can stall interrupt controller,
 | 
	
		
			
				|  |  | +	 * cf. errata ID i540 for 3430 (all revisions up to 3.1.x)
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	intc_bank_write_reg(0, &irq_banks[0], INTC_SYSCONFIG);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void omap3_intc_resume_idle(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	/* Re-enable autoidle */
 | 
	
		
			
				|  |  | +	intc_bank_write_reg(1, &irq_banks[0], INTC_SYSCONFIG);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +asmlinkage void __exception_irq_entry omap3_intc_handle_irq(struct pt_regs *regs)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	void __iomem *base_addr = OMAP3_IRQ_BASE;
 | 
	
		
			
				|  |  | +	omap_intc_handle_irq(base_addr, regs);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +#endif /* CONFIG_ARCH_OMAP3 */
 |