Commit 29918b6790d92456cab87ff41a01224e0882d04a

Authored by Nishanth Menon
Committed by Jason Cooper
1 parent 2f7d2fb71d

irqchip: crossbar: Introduce centralized check for crossbar write

This is a basic check to ensure that crossbar register needs to be
written. This ensures that we have a common check which is used in
both map and unmap logic.

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Sricharan R <r.sricharan@ti.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Link: https://lkml.kernel.org/r/1403766634-18543-15-git-send-email-r.sricharan@ti.com
Signed-off-by: Jason Cooper <jason@lakedaemon.net>

Showing 1 changed file with 12 additions and 2 deletions Side-by-side Diff

drivers/irqchip/irq-crossbar.c
... ... @@ -84,10 +84,20 @@
84 84 return -ENODEV;
85 85 }
86 86  
  87 +static inline bool needs_crossbar_write(irq_hw_number_t hw)
  88 +{
  89 + if (hw > GIC_IRQ_START)
  90 + return true;
  91 +
  92 + return false;
  93 +}
  94 +
87 95 static int crossbar_domain_map(struct irq_domain *d, unsigned int irq,
88 96 irq_hw_number_t hw)
89 97 {
90   - cb->write(hw - GIC_IRQ_START, cb->irq_map[hw - GIC_IRQ_START]);
  98 + if (needs_crossbar_write(hw))
  99 + cb->write(hw - GIC_IRQ_START, cb->irq_map[hw - GIC_IRQ_START]);
  100 +
91 101 return 0;
92 102 }
93 103  
... ... @@ -106,7 +116,7 @@
106 116 {
107 117 irq_hw_number_t hw = irq_get_irq_data(irq)->hwirq;
108 118  
109   - if (hw > GIC_IRQ_START) {
  119 + if (needs_crossbar_write(hw)) {
110 120 cb->irq_map[hw - GIC_IRQ_START] = IRQ_FREE;
111 121 cb->write(hw - GIC_IRQ_START, cb->safe_map);
112 122 }