aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/irqchip
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/irqchip')
-rw-r--r--drivers/irqchip/exynos-combiner.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/irqchip/exynos-combiner.c b/drivers/irqchip/exynos-combiner.c
index 6855c92c2262..494c2e21b538 100644
--- a/drivers/irqchip/exynos-combiner.c
+++ b/drivers/irqchip/exynos-combiner.c
@@ -33,7 +33,7 @@
33static DEFINE_SPINLOCK(irq_controller_lock); 33static DEFINE_SPINLOCK(irq_controller_lock);
34 34
35struct combiner_chip_data { 35struct combiner_chip_data {
36 unsigned int irq_offset; 36 unsigned int hwirq_offset;
37 unsigned int irq_mask; 37 unsigned int irq_mask;
38 void __iomem *base; 38 void __iomem *base;
39 unsigned int parent_irq; 39 unsigned int parent_irq;
@@ -80,11 +80,11 @@ static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
80 if (status == 0) 80 if (status == 0)
81 goto out; 81 goto out;
82 82
83 combiner_irq = __ffs(status); 83 combiner_irq = chip_data->hwirq_offset + __ffs(status);
84 cascade_irq = irq_find_mapping(combiner_irq_domain, combiner_irq);
84 85
85 cascade_irq = combiner_irq + (chip_data->irq_offset & ~31); 86 if (unlikely(!cascade_irq))
86 if (unlikely(cascade_irq >= NR_IRQS)) 87 do_bad_IRQ(irq, desc);
87 do_bad_IRQ(cascade_irq, desc);
88 else 88 else
89 generic_handle_irq(cascade_irq); 89 generic_handle_irq(cascade_irq);
90 90
@@ -129,8 +129,7 @@ static void __init combiner_init_one(struct combiner_chip_data *combiner_data,
129 void __iomem *base, unsigned int irq) 129 void __iomem *base, unsigned int irq)
130{ 130{
131 combiner_data->base = base; 131 combiner_data->base = base;
132 combiner_data->irq_offset = irq_find_mapping( 132 combiner_data->hwirq_offset = (combiner_nr & ~3) * IRQ_IN_COMBINER;
133 combiner_irq_domain, combiner_nr * IRQ_IN_COMBINER);
134 combiner_data->irq_mask = 0xff << ((combiner_nr % 4) << 3); 133 combiner_data->irq_mask = 0xff << ((combiner_nr % 4) << 3);
135 combiner_data->parent_irq = irq; 134 combiner_data->parent_irq = irq;
136 135