]> git.karo-electronics.de Git - linux-beck.git/commitdiff
dmaengine: ipu: Consolidate duplicated irq handlers
authorThomas Gleixner <tglx@linutronix.de>
Sat, 1 Aug 2015 07:06:58 +0000 (07:06 +0000)
committerVinod Koul <vinod.koul@intel.com>
Thu, 6 Aug 2015 03:00:57 +0000 (08:30 +0530)
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>
drivers/dma/ipu/ipu_irq.c

index 9f95940d3fe2c853c65831b6ddc1b0486fd61a07..fc6506b12278a37ced2681ce4929e9ce104262ea 100644 (file)
@@ -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;