Skip to content

Commit

Permalink
dmaengine: ipu: Consolidate duplicated irq handlers
Browse files Browse the repository at this point in the history
The functions irq_irq_err and ipu_irq_fn are identical plus/minus the
comments. Remove one.

Signed-off-by: Thomas Gleixner <[email protected]>
Cc: Vinod Koul <[email protected]>
Cc: Dan Williams <[email protected]>
Cc: [email protected]
Signed-off-by: Vinod Koul <[email protected]>
  • Loading branch information
KAGA-KOKO authored and Vinod Koul committed Aug 6, 2015
1 parent 425e20f commit 3d8cc00
Showing 1 changed file with 4 additions and 42 deletions.
46 changes: 4 additions & 42 deletions drivers/dma/ipu/ipu_irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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;

Expand Down

0 comments on commit 3d8cc00

Please sign in to comment.