mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 11:19:37 +00: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