mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	dmaengine: ipu: Consolidate duplicated irq handlers
The functions irq_irq_err and ipu_irq_fn are identical plus/minus the comments. Remove one. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Vinod Koul <vinod.koul@intel.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: dmaengine@vger.kernel.org Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
		
							parent
							
								
									425e20fd08
								
							
						
					
					
						commit
						3d8cc00073
					
				
					 1 changed files with 4 additions and 42 deletions
				
			
		| 
						 | 
				
			
			@ -265,8 +265,8 @@ int ipu_irq_unmap(unsigned int source)
 | 
			
		|||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Chained IRQ handler for IPU error interrupt */
 | 
			
		||||
static void ipu_irq_err(unsigned int __irq, struct irq_desc *desc)
 | 
			
		||||
/* Chained IRQ handler for IPU function and error interrupt */
 | 
			
		||||
static void ipu_irq_handler(unsigned int __irq, struct irq_desc *desc)
 | 
			
		||||
{
 | 
			
		||||
	struct ipu *ipu = irq_desc_get_handler_data(desc);
 | 
			
		||||
	u32 status;
 | 
			
		||||
| 
						 | 
				
			
			@ -307,44 +307,6 @@ static void ipu_irq_err(unsigned int __irq, struct irq_desc *desc)
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Chained IRQ handler for IPU function interrupt */
 | 
			
		||||
static void ipu_irq_fn(unsigned int __irq, struct irq_desc *desc)
 | 
			
		||||
{
 | 
			
		||||
	struct ipu *ipu = irq_desc_get_handler_data(desc);
 | 
			
		||||
	u32 status;
 | 
			
		||||
	int i, line;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < IPU_IRQ_NR_FN_BANKS; i++) {
 | 
			
		||||
		struct ipu_irq_bank *bank = irq_bank + i;
 | 
			
		||||
 | 
			
		||||
		raw_spin_lock(&bank_lock);
 | 
			
		||||
		status = ipu_read_reg(ipu, bank->status);
 | 
			
		||||
		/* Not clearing all interrupts, see above */
 | 
			
		||||
		status &= ipu_read_reg(ipu, bank->control);
 | 
			
		||||
		raw_spin_unlock(&bank_lock);
 | 
			
		||||
		while ((line = ffs(status))) {
 | 
			
		||||
			struct ipu_irq_map *map;
 | 
			
		||||
			unsigned int irq;
 | 
			
		||||
 | 
			
		||||
			line--;
 | 
			
		||||
			status &= ~(1UL << line);
 | 
			
		||||
 | 
			
		||||
			raw_spin_lock(&bank_lock);
 | 
			
		||||
			map = src2map(32 * i + line);
 | 
			
		||||
			if (map)
 | 
			
		||||
				irq = map->irq;
 | 
			
		||||
			raw_spin_unlock(&bank_lock);
 | 
			
		||||
 | 
			
		||||
			if (!map) {
 | 
			
		||||
				pr_err("IPU: Interrupt on unmapped source %u bank %d\n",
 | 
			
		||||
				       line, i);
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
			generic_handle_irq(irq);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct irq_chip ipu_irq_chip = {
 | 
			
		||||
	.name		= "ipu_irq",
 | 
			
		||||
	.irq_ack	= ipu_irq_ack,
 | 
			
		||||
| 
						 | 
				
			
			@ -384,9 +346,9 @@ int __init ipu_irq_attach_irq(struct ipu *ipu, struct platform_device *dev)
 | 
			
		|||
#endif
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	irq_set_chained_handler_and_data(ipu->irq_fn, ipu_irq_fn, ipu);
 | 
			
		||||
	irq_set_chained_handler_and_data(ipu->irq_fn, ipu_irq_handler, ipu);
 | 
			
		||||
 | 
			
		||||
	irq_set_chained_handler_and_data(ipu->irq_err, ipu_irq_err, ipu);
 | 
			
		||||
	irq_set_chained_handler_and_data(ipu->irq_err, ipu_irq_handler, ipu);
 | 
			
		||||
 | 
			
		||||
	ipu->irq_base = irq_base;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue