staging: iio: dummy: complete IIO events delivery to userspace
authorIoana Ciornei <ciorneiioana@gmail.com>
Tue, 27 Oct 2015 18:40:56 +0000 (20:40 +0200)
committerJonathan Cameron <jic23@kernel.org>
Sat, 21 Nov 2015 15:56:44 +0000 (15:56 +0000)
commit2e9fed42209b17116c6221e136ccbd3f252f5f86
tree1eeeb8259272706e243aec8d1df95225c4628223
parentb57f9f34e27bf81c97b10d6725d71824e448c37e
staging: iio: dummy: complete IIO events delivery to userspace

Starting with commit fd2bb310ca (Staging: iio: Move evgen interrupt
generation to irq_work) event processing is handled by calling
both the top half and the threaded part properly simulating real
hardware interrupts making use of threaded interrupts.
This way the processing is split in 2 parts:

* the IRQ handler that runs in IRQ context and only saves the event
timestamp
* the threaded handler that runs in process context, reads the events
and pushes the in the userspace.

If the IRQ handler returns IRQ_HANDLED the threaded handler is not
even being called since the interrupt is considered to be processed.
Because the iio dummy driver processes the events in the threaded
handler the IRQ handler must return IRQ_WAKE_THREAD so that the
threaded part would be awakened and called.

Signed-off-by: Ioana Ciornei <ciorneiioana@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/staging/iio/iio_simple_dummy_events.c