From: Rui S. <rui...@la...> - 2005-12-13 17:04:13
|
On Tue, 2005-12-13 at 15:09 +0300, dmitry pervushin wrote: > 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? > Hmm... what do you mean by "cannot read/write" ? Normally you can > write/read registers in interrupt context The registers I want to read are from a SPI device (a SPI slave attached to a SPI bus). I need to use SPI bus transfers to access them. > , and then set the > flag/complete the completion/what else ? If I read the API correctly reading/writing a byte from the SPI bus (synchronously) always implies putting the task doing the read to sleep: int spi_transfer(struct spi_msg *msg, void (*callback) (struct spi_msg *, int)) { ... err = TO_SPI_BUS_DRIVER(bus->driver)->queue(msg); wait_for_completion(&msg->sync); ... } So, how can I, from an interrupt handler, read/write a couple of bytes from my SPI device using this API? > In other words, could you please share the code that causes problems ? > Rui |