"Shilimkar, Santosh" <santosh.shilimkar@xxxxxx> writes: >> 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. And if you look at the OMAP's MPU irq_chip implementation, these are not populated either. We rely on the default lazy enable via unmask and the lazy disable. Kevin -- 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