Skip to content

RFC Support for irq chips on slow busses (i2c, spi)

Thomas Gleixner lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest3 patches 12 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/3genirq: Add oneshot supportinclude/linux/interrupt.h include/linux/irq.h kernel/irq/chip.c +1 more+43 -50 replies
2/3genirq: Add buslock support for irq chips on slow bussesinclude/linux/interrupt.h include/linux/irq.h kernel/irq/manage.c+129 -012 replies
3/3genirq: Support nested threaded irq handlinginclude/linux/interrupt.h kernel/irq/chip.c kernel/irq/internals.h +1 more+82 -10 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [RFC patch 0/3] Support for irq chips on slow busses (i2c, spi)

The support for irq chips on slow busses eg. i2c, spi has been discussed to great length several times. Most of the details can be found in this thread: http://lkml.org/lkml/2009/7/21/266

The following patch series is a round up of the various patch snippets sent out during the discussion and the ideas we agreed on.

There are some subtle differences to the initial test patches:

1) Instead of using a separate flow handler we allow to request the one shot feature with a flag on request_irq and integrate the oneshot feature into the existing level/edge handlers.

2) Instead of conditional locking which makes the patch smaller but hides the already known fact that a device sits behind a slow irq chip I implemented a set of separate management functions (see patch 2/3). The initial idea with the conditional locking can be found here:
http://lkml.org/lkml/2009/7/22/163

3) patch 3/3 implements a helper function which allows the demultiplexing thread to call the demux handlers in its own thread context with out creating a separate thread for each subdevice interrupt. The device driver needs to request the interrupt via request_nested_slowbus_irq() to prevent the creation of the extra thread.

Please have a thorough look and hopefully a test ride on your favourite slowbus irq chip implementation so we can get this into .32

Thanks,

tglx