Each SPI master controller can communicate with one or more children. These make a small bus, sharing MOSI, MISO and SCK signals but not chip select signals. Each device may be configured to use a different clock rate, since those shared signals are ignored unless the chip is selected.
The driver for an SPI controller manages access to those devices through a queue of spi_message transactions, copying data between CPU memory and an SPI slave device. For each such message it queues, it calls the message's completion function when the transaction completes.
|void(*||cleanup )(struct spi_device *spi)|
|int(*||setup )(struct spi_device *spi)|
|int(*||transfer )(struct spi_device *spi, struct spi_message *mesg)|