Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

uses of irq_to_gpio() in drivers/staging/iio

24 views
Skip to first unread message

Ben Dooks

unread,
Aug 2, 2011, 12:50:01 PM8/2/11
to
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.

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?

--
Ben Dooks <bjd...@googlemail.com> http://www.fluff.org/ben/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Jonathan Cameron

unread,
Aug 2, 2011, 1:00:02 PM8/2/11
to
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.

0 new messages