Re: Threaded interrupts for synaptic touchscreen in HTC dream

Mark Brown
2009-07-21T11:36:42Z

On Tue, Jul 21, 2009 at 12:59:25PM +0200, Pavel Machek wrote:

This looks like an unrelated (but useful) change:

> *
> + * http://www.synaptics.com/sites/default/files/511_000099_01F.pdf
> */

This too:

> static void decode_report(struct synaptics_ts_data *ts, u8 *buf)
> {
> +/*
> + * This sensor sends two 6-byte absolute finger reports, an optional
> + * 2-byte relative report followed by a status byte. This function
> + * reads the two finger reports and transforms the coordinates

Worth splitting them out?

> +static irqreturn_t synaptics_ts_hardirq(int irq, void *dev_id)
> +{
> + disable_irq_nosync(irq);
> + return IRQ_WAKE_THREAD;

Are you sure that this is going to work? The IRQ thread code will not
call the thread function if the IRQ is marked as disabled so the thread
won't actually get called and the interrupt will just stay disabled (see
irq_thread() in kernel/irq/manage.c). As far as I can see the threaded
IRQ support can't be used for devices on interrupt driven buses that
can't interact with the hardware in hardirq context but I might be
missing something here.