summaryrefslogtreecommitdiffstats
path: root/drivers/irqchip
diff options
context:
space:
mode:
authorPaul Burton <paul.burton@imgtec.com>2017-08-13 00:36:21 -0400
committerRalf Baechle <ralf@linux-mips.org>2017-09-04 07:53:14 -0400
commitc26ba670cdb84e0556436be7bf68a75a1d4f4d76 (patch)
tree0300f2f1c12de09fbf8dd2654750355ddafedcad /drivers/irqchip
parent471aa962a6acc19a990e20fa3846db40e62120cc (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.c28
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
84static 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
95static 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
102static inline void gic_map_to_pin(unsigned int intr, unsigned int pin) 84static 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 }