I posted this is the thread which discussed about request_threaded_irq but I did not get any reply. So I am posting it freshly.
I am working on a touchscreen driver for
The request_threaded_irq() function was added to allow developers to split interrupt handling code into two parts. One part that will execute with interrupts blocked, and a second part that can be done by a kernel thread without interrupts blocked. For details of why, you can read this:
http://lwn.net/Articles/302043/
In your case, the driver you linked to does this:
err = request_threaded_irq(client->irq, NULL, cy8ctmg110_irq_thread,
IRQF_TRIGGER_RISING, "touch_reset_key", ts);
By passing NULL for the second arg, "handler", the argument to thread_fn, or the function cy8ctmg110_irq_thread() will be called when the interrupt is detected.
For you, choosing which request irq function will depend on what your driver needs to do in interrupt context.
Another important aspect: "If you want to set up a threaded irq handler for your device then you need to supply handler and thread_fn. handler is still called in hard interrupt context and has to check whether the interrupt originates from the device. If yes it needs to disable the interrupt on the device and return IRQ_WAKE_THREAD which will wake up the handler thread and run thread_fn."
Source: https://www.kernel.org/doc/htmldocs/genericirq.html