diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2014-06-20 01:34:39 +0400 |
---|---|---|
committer | Jason Cooper <jason@lakedaemon.net> | 2014-06-24 16:37:27 +0400 |
commit | f37ecbce8bf8867ce19fe9ef09e789002d7aad15 (patch) | |
tree | b65ca93c784f4aeec65581dbff3e550ecd3aa186 /drivers/irqchip | |
parent | 078bc005651cfb134135c5f6eca48a997afb4014 (diff) | |
download | linux-f37ecbce8bf8867ce19fe9ef09e789002d7aad15.tar.xz |
irqchip: spear_shirq: No point in storing the parent irq
The struct member is pointless and a nismomer as well.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20140619212713.129694036@linutronix.de
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
Diffstat (limited to 'drivers/irqchip')
-rw-r--r-- | drivers/irqchip/spear-shirq.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/irqchip/spear-shirq.c b/drivers/irqchip/spear-shirq.c index 441e39f08135..576968efbc4d 100644 --- a/drivers/irqchip/spear-shirq.c +++ b/drivers/irqchip/spear-shirq.c @@ -47,7 +47,6 @@ struct shirq_regs { /* * struct spear_shirq: shared irq structure * - * irq: hardware irq number * irq_base: base irq in linux domain * irq_nr: no. of shared interrupts in a particular block * irq_bit_off: starting bit offset in the status register @@ -56,7 +55,6 @@ struct shirq_regs { * regs: register configuration for shared irq block */ struct spear_shirq { - u32 irq; u32 irq_base; u32 irq_nr; u32 irq_bit_off; @@ -268,28 +266,29 @@ static void shirq_handler(unsigned irq, struct irq_desc *desc) chip->irq_unmask(&desc->irq_data); } -static void __init spear_shirq_register(struct spear_shirq *shirq) +static void __init spear_shirq_register(struct spear_shirq *shirq, + int parent_irq) { int i; if (shirq->invalid_irq) return; - irq_set_chained_handler(shirq->irq, shirq_handler); + irq_set_chained_handler(parent_irq, shirq_handler); + irq_set_handler_data(parent_irq, shirq); + for (i = 0; i < shirq->irq_nr; i++) { irq_set_chip_and_handler(shirq->irq_base + i, &shirq_chip, handle_simple_irq); set_irq_flags(shirq->irq_base + i, IRQF_VALID); irq_set_chip_data(shirq->irq_base + i, shirq); } - - irq_set_handler_data(shirq->irq, shirq); } static int __init shirq_init(struct spear_shirq **shirq_blocks, int block_nr, struct device_node *np) { - int i, irq_base, hwirq = 0, irq_nr = 0; + int i, parent_irq, irq_base, hwirq = 0, irq_nr = 0; struct irq_domain *shirq_domain; void __iomem *base; @@ -319,9 +318,9 @@ static int __init shirq_init(struct spear_shirq **shirq_blocks, int block_nr, shirq_blocks[i]->base = base; shirq_blocks[i]->irq_base = irq_find_mapping(shirq_domain, hwirq); - shirq_blocks[i]->irq = irq_of_parse_and_map(np, i); - spear_shirq_register(shirq_blocks[i]); + parent_irq = irq_of_parse_and_map(np, i); + spear_shirq_register(shirq_blocks[i], parent_irq); hwirq += shirq_blocks[i]->irq_nr; } |