Re: uses of irq_to_gpio() in drivers/staging/iio

From: Jonathan Cameron
Date: Tue Aug 02 2011 - 12:55:54 EST


On 08/02/11 17:43, Ben Dooks wrote:
> Whilst looking in drivers/staging/iio/accel/lis3l02dq_core.c, I
> came across the following lines of code
>
> 708 if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0) {
> 709 ret = request_threaded_irq(st->us->irq,
> 710 &lis3l02dq_th,
> 711 &lis3l02dq_event_handler,
> 712 IRQF_TRIGGER_RISING,
> 713 "lis3l02dq",
> 714 indio_dev);
>
> Which gives rise to the following questions:
>
> 1) IRQ0 and GPIO0 are often valid numbers for GPIOs.
Good point - should fix that one. Any suggestions for a neat way
to do it?
>
> 2) Not all interrupts are necessarily GPIO interrupts. What happens
> if the device is attached to a hardware interrupt line which is
> not a GPIO?
>
Easy. It doesn't work. Stupid hardware doesn't necessarily drop
the interrupt line on a read. Hence it sticks high. If one only has
edge triggered interrupt lines that's a pain. Is there an easy way
around this? When I wrote the relevant code a long time ago I couldn't
get anything else to work.

There may well be a better way but I haven't revisited this recently.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/