Commit 29918b6790d92456cab87ff41a01224e0882d04a
Committed by
Jason Cooper
1 parent
2f7d2fb71d
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
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 | } |