Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

spi_async(9) [centos man page]

SPI_ASYNC(9)						  Serial Peripheral Interface (S					      SPI_ASYNC(9)

spi_async - asynchronous SPI transfer SYNOPSIS
int spi_async(struct spi_device * spi, struct spi_message * message); ARGUMENTS
spi device with which data will be exchanged message describes the data transfers, including completion callback CONTEXT
any (irqs may be blocked, etc) DESCRIPTION
This call may be used in_irq and other contexts which can't sleep, as well as from task contexts which can sleep. The completion callback is invoked in a context which can't sleep. Before that invocation, the value of message->status is undefined. When the callback is issued, message->status holds either zero (to indicate complete success) or a negative error code. After that callback returns, the driver which issued the transfer request may deallocate the associated memory; it's no longer in use by any SPI core or controller driver code. Note that although all messages to a spi_device are handled in FIFO order, messages may go to different devices in other orders. Some device might be higher priority, or have various "hard" access time requirements, for example. On detection of any fault during the transfer, processing of the entire message is aborted, and the device is deselected. Until returning from the associated message completion callback, no other spi_message queued to that device will be processed. (This rule applies equally to all the synchronous transfer calls, which are wrappers around this core asynchronous primitive.) COPYRIGHT
Kernel Hackers Manual 3.10 June 2014 SPI_ASYNC(9)

Check Out this Related Man Page

SPI_MESSAGE(9) Serial Peripheral Interface (S STRUCT SPI_MESSAGE(9) NAME
struct_spi_message - one multi-segment SPI transaction SYNOPSIS
struct spi_message { struct list_head transfers; struct spi_device * spi; unsigned is_dma_mapped:1; void (* complete) (void *context); void * context; unsigned actual_length; int status; struct list_head queue; void * state; }; MEMBERS
transfers list of transfer segments in this transaction spi SPI device to which the transaction is queued is_dma_mapped if true, the caller provided both dma and cpu virtual addresses for each transfer buffer complete called to report transaction completions context the argument to complete when it's called actual_length the total number of bytes that were transferred in all successful segments status zero for success, else negative errno queue for use by whichever driver currently owns the message state for use by whichever driver currently owns the message DESCRIPTION
A spi_message is used to execute an atomic sequence of data transfers, each represented by a struct spi_transfer. The sequence is "atomic" in the sense that no other spi_message may use that SPI bus until that sequence completes. On some systems, many such sequences can execute as as single programmed DMA transfer. On all systems, these messages are queued, and might complete after transactions to other devices. Messages sent to a given spi_device are alway executed in FIFO order. The code that submits an spi_message (and its spi_transfers) to the lower layers is responsible for managing its memory. Zero-initialize every field you don't set up explicitly, to insulate against future API updates. After you submit a message and its transfers, ignore them until its completion callback. COPYRIGHT
Kernel Hackers Manual 3.10 June 2014 STRUCT SPI_MESSAGE(9)
Man Page