Current implementation of the irq_disable only calls chip->irq_disable. This fails to disable interrupt on some chip implementations, as there are two alternative chip specific functions for this task, chip->irq_disable and chip->irq_mask. Added alternative path for chip->irq_disable also. Signed-off-by: Tero Kristo <t-kristo@xxxxxx> --- kernel/irq/chip.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index d5a3009..15597f1 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -198,10 +198,11 @@ void irq_enable(struct irq_desc *desc) void irq_disable(struct irq_desc *desc) { irq_state_set_disabled(desc); - if (desc->irq_data.chip->irq_disable) { + if (desc->irq_data.chip->irq_disable) desc->irq_data.chip->irq_disable(&desc->irq_data); - irq_state_set_masked(desc); - } + else + desc->irq_data.chip->irq_mask(&desc->irq_data); + irq_state_set_masked(desc); } static inline void mask_ack_irq(struct irq_desc *desc) -- 1.7.4.1 Texas Instruments Oy, Tekniikantie 12, 02150 Espoo. Y-tunnus: 0115040-6. Kotipaikka: Helsinki -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html