|
@@ -1212,8 +1212,10 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
|
|
* set the trigger type must match. Also all must
|
|
* set the trigger type must match. Also all must
|
|
* agree on ONESHOT.
|
|
* agree on ONESHOT.
|
|
*/
|
|
*/
|
|
|
|
+ unsigned int oldtype = irqd_get_trigger_type(&desc->irq_data);
|
|
|
|
+
|
|
if (!((old->flags & new->flags) & IRQF_SHARED) ||
|
|
if (!((old->flags & new->flags) & IRQF_SHARED) ||
|
|
- ((old->flags ^ new->flags) & IRQF_TRIGGER_MASK) ||
|
|
|
|
|
|
+ (oldtype != (new->flags & IRQF_TRIGGER_MASK)) ||
|
|
((old->flags ^ new->flags) & IRQF_ONESHOT))
|
|
((old->flags ^ new->flags) & IRQF_ONESHOT))
|
|
goto mismatch;
|
|
goto mismatch;
|
|
|
|
|