diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2015-08-01 07:06:58 +0000 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2015-08-06 08:30:57 +0530 |
commit | 3d8cc00073d6750ffe883685e49b2e4a0f596370 (patch) | |
tree | e919602f617ebfbf079d373408e7aefe23674ccd /drivers/dma/ipu | |
parent | 425e20fd08a53ad06c562960d594505813c7910c (diff) | |
download | linux-3d8cc00073d6750ffe883685e49b2e4a0f596370.tar.gz linux-3d8cc00073d6750ffe883685e49b2e4a0f596370.tar.bz2 linux-3d8cc00073d6750ffe883685e49b2e4a0f596370.zip |
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>
Diffstat (limited to 'drivers/dma/ipu')
-rw-r--r-- | drivers/dma/ipu/ipu_irq.c | 46 |
1 files changed, 4 insertions, 42 deletions
diff --git a/drivers/dma/ipu/ipu_irq.c b/drivers/dma/ipu/ipu_irq.c index 9f95940d3fe2..fc6506b12278 100644 --- a/drivers/dma/ipu/ipu_irq.c +++ b/drivers/dma/ipu/ipu_irq.c @@ -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; |