diff options
author | Paul Burton <paul.burton@imgtec.com> | 2017-08-13 00:36:21 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2017-09-04 07:53:14 -0400 |
commit | c26ba670cdb84e0556436be7bf68a75a1d4f4d76 (patch) | |
tree | 0300f2f1c12de09fbf8dd2654750355ddafedcad /drivers/irqchip | |
parent | 471aa962a6acc19a990e20fa3846db40e62120cc (diff) |
irqchip: mips-gic: Remove gic_set_dual_edge()
Remove the gic_set_dual_edge() function in favour of using the new
change_gic_dual() accessor function which provides equivalent
functionality. This also allows us to remove the gic_update_bits()
function which gic_set_dual_edge() was the last user of, along with the
GIC_INTR_OFS() & GIC_INTR_BIT() macros.
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/17031/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'drivers/irqchip')
-rw-r--r-- | drivers/irqchip/irq-mips-gic.c | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c index 14a1682f399e..8aae9d20b82c 100644 --- a/drivers/irqchip/irq-mips-gic.c +++ b/drivers/irqchip/irq-mips-gic.c | |||
@@ -81,24 +81,6 @@ static inline void gic_write(unsigned int reg, unsigned long val) | |||
81 | return gic_write64(reg, (u64)val); | 81 | return gic_write64(reg, (u64)val); |
82 | } | 82 | } |
83 | 83 | ||
84 | static inline void gic_update_bits(unsigned int reg, unsigned long mask, | ||
85 | unsigned long val) | ||
86 | { | ||
87 | unsigned long regval; | ||
88 | |||
89 | regval = gic_read(reg); | ||
90 | regval &= ~mask; | ||
91 | regval |= val; | ||
92 | gic_write(reg, regval); | ||
93 | } | ||
94 | |||
95 | static inline void gic_set_dual_edge(unsigned int intr, unsigned int dual) | ||
96 | { | ||
97 | gic_update_bits(GIC_REG(SHARED, GIC_SH_SET_DUAL) + GIC_INTR_OFS(intr), | ||
98 | 1ul << GIC_INTR_BIT(intr), | ||
99 | (unsigned long)dual << GIC_INTR_BIT(intr)); | ||
100 | } | ||
101 | |||
102 | static inline void gic_map_to_pin(unsigned int intr, unsigned int pin) | 84 | static inline void gic_map_to_pin(unsigned int intr, unsigned int pin) |
103 | { | 85 | { |
104 | gic_write32(GIC_REG(SHARED, GIC_SH_INTR_MAP_TO_PIN_BASE) + | 86 | gic_write32(GIC_REG(SHARED, GIC_SH_INTR_MAP_TO_PIN_BASE) + |
@@ -260,32 +242,32 @@ static int gic_set_type(struct irq_data *d, unsigned int type) | |||
260 | case IRQ_TYPE_EDGE_FALLING: | 242 | case IRQ_TYPE_EDGE_FALLING: |
261 | change_gic_pol(irq, GIC_POL_FALLING_EDGE); | 243 | change_gic_pol(irq, GIC_POL_FALLING_EDGE); |
262 | change_gic_trig(irq, GIC_TRIG_EDGE); | 244 | change_gic_trig(irq, GIC_TRIG_EDGE); |
263 | gic_set_dual_edge(irq, GIC_TRIG_DUAL_DISABLE); | 245 | change_gic_dual(irq, GIC_DUAL_SINGLE); |
264 | is_edge = true; | 246 | is_edge = true; |
265 | break; | 247 | break; |
266 | case IRQ_TYPE_EDGE_RISING: | 248 | case IRQ_TYPE_EDGE_RISING: |
267 | change_gic_pol(irq, GIC_POL_RISING_EDGE); | 249 | change_gic_pol(irq, GIC_POL_RISING_EDGE); |
268 | change_gic_trig(irq, GIC_TRIG_EDGE); | 250 | change_gic_trig(irq, GIC_TRIG_EDGE); |
269 | gic_set_dual_edge(irq, GIC_TRIG_DUAL_DISABLE); | 251 | change_gic_dual(irq, GIC_DUAL_SINGLE); |
270 | is_edge = true; | 252 | is_edge = true; |
271 | break; | 253 | break; |
272 | case IRQ_TYPE_EDGE_BOTH: | 254 | case IRQ_TYPE_EDGE_BOTH: |
273 | /* polarity is irrelevant in this case */ | 255 | /* polarity is irrelevant in this case */ |
274 | change_gic_trig(irq, GIC_TRIG_EDGE); | 256 | change_gic_trig(irq, GIC_TRIG_EDGE); |
275 | gic_set_dual_edge(irq, GIC_TRIG_DUAL_ENABLE); | 257 | change_gic_dual(irq, GIC_DUAL_DUAL); |
276 | is_edge = true; | 258 | is_edge = true; |
277 | break; | 259 | break; |
278 | case IRQ_TYPE_LEVEL_LOW: | 260 | case IRQ_TYPE_LEVEL_LOW: |
279 | change_gic_pol(irq, GIC_POL_ACTIVE_LOW); | 261 | change_gic_pol(irq, GIC_POL_ACTIVE_LOW); |
280 | change_gic_trig(irq, GIC_TRIG_LEVEL); | 262 | change_gic_trig(irq, GIC_TRIG_LEVEL); |
281 | gic_set_dual_edge(irq, GIC_TRIG_DUAL_DISABLE); | 263 | change_gic_dual(irq, GIC_DUAL_SINGLE); |
282 | is_edge = false; | 264 | is_edge = false; |
283 | break; | 265 | break; |
284 | case IRQ_TYPE_LEVEL_HIGH: | 266 | case IRQ_TYPE_LEVEL_HIGH: |
285 | default: | 267 | default: |
286 | change_gic_pol(irq, GIC_POL_ACTIVE_HIGH); | 268 | change_gic_pol(irq, GIC_POL_ACTIVE_HIGH); |
287 | change_gic_trig(irq, GIC_TRIG_LEVEL); | 269 | change_gic_trig(irq, GIC_TRIG_LEVEL); |
288 | gic_set_dual_edge(irq, GIC_TRIG_DUAL_DISABLE); | 270 | change_gic_dual(irq, GIC_DUAL_SINGLE); |
289 | is_edge = false; | 271 | is_edge = false; |
290 | break; | 272 | break; |
291 | } | 273 | } |