diff options
| -rw-r--r-- | drivers/irqchip/exynos-combiner.c | 13 |
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 @@ | |||
| 33 | static DEFINE_SPINLOCK(irq_controller_lock); | 33 | static DEFINE_SPINLOCK(irq_controller_lock); |
| 34 | 34 | ||
| 35 | struct combiner_chip_data { | 35 | struct 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 | ||
