aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2014-06-19 17:34:39 -0400
committerJason Cooper <jason@lakedaemon.net>2014-06-24 08:37:27 -0400
commitf37ecbce8bf8867ce19fe9ef09e789002d7aad15 (patch)
treeb65ca93c784f4aeec65581dbff3e550ecd3aa186
parent078bc005651cfb134135c5f6eca48a997afb4014 (diff)
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>
-rw-r--r--drivers/irqchip/spear-shirq.c17
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 {
47/* 47/*
48 * struct spear_shirq: shared irq structure 48 * struct spear_shirq: shared irq structure
49 * 49 *
50 * irq: hardware irq number
51 * irq_base: base irq in linux domain 50 * irq_base: base irq in linux domain
52 * irq_nr: no. of shared interrupts in a particular block 51 * irq_nr: no. of shared interrupts in a particular block
53 * irq_bit_off: starting bit offset in the status register 52 * irq_bit_off: starting bit offset in the status register
@@ -56,7 +55,6 @@ struct shirq_regs {
56 * regs: register configuration for shared irq block 55 * regs: register configuration for shared irq block
57 */ 56 */
58struct spear_shirq { 57struct spear_shirq {
59 u32 irq;
60 u32 irq_base; 58 u32 irq_base;
61 u32 irq_nr; 59 u32 irq_nr;
62 u32 irq_bit_off; 60 u32 irq_bit_off;
@@ -268,28 +266,29 @@ static void shirq_handler(unsigned irq, struct irq_desc *desc)
268 chip->irq_unmask(&desc->irq_data); 266 chip->irq_unmask(&desc->irq_data);
269} 267}
270 268
271static void __init spear_shirq_register(struct spear_shirq *shirq) 269static void __init spear_shirq_register(struct spear_shirq *shirq,
270 int parent_irq)
272{ 271{
273 int i; 272 int i;
274 273
275 if (shirq->invalid_irq) 274 if (shirq->invalid_irq)
276 return; 275 return;
277 276
278 irq_set_chained_handler(shirq->irq, shirq_handler); 277 irq_set_chained_handler(parent_irq, shirq_handler);
278 irq_set_handler_data(parent_irq, shirq);
279
279 for (i = 0; i < shirq->irq_nr; i++) { 280 for (i = 0; i < shirq->irq_nr; i++) {
280 irq_set_chip_and_handler(shirq->irq_base + i, 281 irq_set_chip_and_handler(shirq->irq_base + i,
281 &shirq_chip, handle_simple_irq); 282 &shirq_chip, handle_simple_irq);
282 set_irq_flags(shirq->irq_base + i, IRQF_VALID); 283 set_irq_flags(shirq->irq_base + i, IRQF_VALID);
283 irq_set_chip_data(shirq->irq_base + i, shirq); 284 irq_set_chip_data(shirq->irq_base + i, shirq);
284 } 285 }
285
286 irq_set_handler_data(shirq->irq, shirq);
287} 286}
288 287
289static int __init shirq_init(struct spear_shirq **shirq_blocks, int block_nr, 288static int __init shirq_init(struct spear_shirq **shirq_blocks, int block_nr,
290 struct device_node *np) 289 struct device_node *np)
291{ 290{
292 int i, irq_base, hwirq = 0, irq_nr = 0; 291 int i, parent_irq, irq_base, hwirq = 0, irq_nr = 0;
293 struct irq_domain *shirq_domain; 292 struct irq_domain *shirq_domain;
294 void __iomem *base; 293 void __iomem *base;
295 294
@@ -319,9 +318,9 @@ static int __init shirq_init(struct spear_shirq **shirq_blocks, int block_nr,
319 shirq_blocks[i]->base = base; 318 shirq_blocks[i]->base = base;
320 shirq_blocks[i]->irq_base = irq_find_mapping(shirq_domain, 319 shirq_blocks[i]->irq_base = irq_find_mapping(shirq_domain,
321 hwirq); 320 hwirq);
322 shirq_blocks[i]->irq = irq_of_parse_and_map(np, i);
323 321
324 spear_shirq_register(shirq_blocks[i]); 322 parent_irq = irq_of_parse_and_map(np, i);
323 spear_shirq_register(shirq_blocks[i], parent_irq);
325 hwirq += shirq_blocks[i]->irq_nr; 324 hwirq += shirq_blocks[i]->irq_nr;
326 } 325 }
327 326