> 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

Reply via email to