| 
					
				 | 
			
			
				@@ -257,3 +257,21 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	nr_regs = irq_setup->nr_regs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (prcm_irq_setup) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pr_err("PRCM: already initialized; won't reinitialize\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return -EINVAL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (nr_regs > OMAP_PRCM_MAX_NR_PENDING_REG) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pr_err("PRCM: nr_regs too large\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return -EINVAL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	prcm_irq_setup = irq_setup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	prcm_irq_chips = kzalloc(sizeof(void *) * nr_regs, GFP_KERNEL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	prcm_irq_setup->saved_mask = kzalloc(sizeof(u32) * nr_regs, GFP_KERNEL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	prcm_irq_setup->priority_mask = kzalloc(sizeof(u32) * nr_regs, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		GFP_KERNEL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (!prcm_irq_chips || !prcm_irq_setup->saved_mask || 
			 |