Re: [spi-devel-general] Re: [PATCH 2.6-git 0/4] SPI core refresh

From: David Brownell
Date: Tue Dec 13 2005 - 11:37:05 EST


> On Mon, 2005-12-12 at 19:01 +0100, Rui Sousa wrote:
> > How do you handle IRQ's generated by a SPI device (e.g ack the
> > interrupt, check if it was the SPI device that generated the
> > interrupt, ...) if you can't read/write on the SPI bus from interrupt
> > context?

I don't understand the question. The SPI controller may be busy
handling transactions for a different device, so the best you
could do from _any_ IRQ handler is to queue some messages that
will get to the IRQ-issuing device sometime later. It's not
possible to make the other transactions finish any faster, or
abort them safely mid-transfer.

The way the ads7846 driver handles it, for example, is to issue
a transaction collecting a bunch of touchscreen sensor readings.
And disable its (nonsharable) irq, since the interrupt will be
raised for some time and there's no portable way for Linux to
force the IRQ to trigger only on the relevant edge.

See the 2.6.15-rc5-mm1 patches...

- Dave

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/