diff options
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r-- | kernel/irq/manage.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 3164ba7ce151..c3003e9d91a3 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -216,7 +216,7 @@ static inline int setup_affinity(unsigned int irq, struct irq_desc *desc) | |||
216 | void __disable_irq(struct irq_desc *desc, unsigned int irq, bool suspend) | 216 | void __disable_irq(struct irq_desc *desc, unsigned int irq, bool suspend) |
217 | { | 217 | { |
218 | if (suspend) { | 218 | if (suspend) { |
219 | if (!desc->action || (desc->action->flags & IRQF_TIMER)) | 219 | if (!desc->action || (desc->action->flags & IRQF_NO_SUSPEND)) |
220 | return; | 220 | return; |
221 | desc->status |= IRQ_SUSPENDED; | 221 | desc->status |= IRQ_SUSPENDED; |
222 | } | 222 | } |
@@ -456,6 +456,9 @@ int __irq_set_trigger(struct irq_desc *desc, unsigned int irq, | |||
456 | /* note that IRQF_TRIGGER_MASK == IRQ_TYPE_SENSE_MASK */ | 456 | /* note that IRQF_TRIGGER_MASK == IRQ_TYPE_SENSE_MASK */ |
457 | desc->status &= ~(IRQ_LEVEL | IRQ_TYPE_SENSE_MASK); | 457 | desc->status &= ~(IRQ_LEVEL | IRQ_TYPE_SENSE_MASK); |
458 | desc->status |= flags; | 458 | desc->status |= flags; |
459 | |||
460 | if (chip != desc->chip) | ||
461 | irq_chip_set_defaults(desc->chip); | ||
459 | } | 462 | } |
460 | 463 | ||
461 | return ret; | 464 | return ret; |