> And here it is - I've only build-tested it so far. > > drivers/mfd/twl4030-irq.c | 55 > ++++++++++++++++++-------------------------- > 1 files changed, 23 insertions(+), 32 deletions(-) > > diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c > index bae61b2..4bb1ea7 100644 > --- a/drivers/mfd/twl4030-irq.c > +++ b/drivers/mfd/twl4030-irq.c > @@ -180,15 +180,9 @@ static struct completion irq_event; > static int twl4030_irq_thread(void *data) > { > long irq = (long)data; > - struct irq_desc *desc = irq_to_desc(irq); > static unsigned i2c_errors; > static const unsigned max_i2c_errors = 100; > > - if (!desc) { > - pr_err("twl4030: Invalid IRQ: %ld\n", irq); > - return -EINVAL; > - } > - > current->flags |= PF_NOFREEZE; > > while (!kthread_should_stop()) { > @@ -240,38 +234,25 @@ static int twl4030_irq_thread(void *data) > } > local_irq_enable(); > > - desc->chip->unmask(irq); > + enable_irq(irq); > } > > return 0; > } Russell, Just a question here. In the enable_irq(irq) and disable_irq(irq) call tree, internally there are calls to the interrupt controller chip. In disable_irq() path: desc->chip->disable(irq); And in emable_irq() path: desc->chip->enable(irq); But the in gic gic_chip, enable/disable fn are not populated. static struct irq_chip gic_chip = { .name = "GIC", .ack = gic_ack_irq, .mask = gic_mask_irq, .unmask = gic_unmask_irq, #ifdef CONFIG_SMP .set_affinity = gic_set_cpu, #endif } Do we need these(disable/enable) hooks in gic_chip as well ? Regards, Santosh -- 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