> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html