1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>spi_async</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Linux Device Drivers"><link rel="up" href="spi.html" title="Chapter&#160;9.&#160;Serial Peripheral Interface (SPI)"><link rel="prev" href="API-spi-setup.html" title="spi_setup"><link rel="next" href="API-spi-async-locked.html" title="spi_async_locked"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="phrase">spi_async</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-spi-setup.html">Prev</a>&#160;</td><th width="60%" align="center">Chapter&#160;9.&#160;Serial Peripheral Interface (SPI)</th><td width="20%" align="right">&#160;<a accesskey="n" href="API-spi-async-locked.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-spi-async"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>spi_async &#8212; 
2     asynchronous SPI transfer
3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">spi_async </b>(</code></td><td>struct spi_device * <var class="pdparam">spi</var>, </td></tr><tr><td>&#160;</td><td>struct spi_message * <var class="pdparam">message</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer">&#160;</div></div></div><div class="refsect1"><a name="idp1115149900"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>spi</code></em></span></dt><dd><p>
4     device with which data will be exchanged
5    </p></dd><dt><span class="term"><em class="parameter"><code>message</code></em></span></dt><dd><p>
6     describes the data transfers, including completion callback
7    </p></dd></dl></div></div><div class="refsect1"><a name="idp1115152580"></a><h2>Context</h2><p>
8   any (irqs may be blocked, etc)
9</p></div><div class="refsect1"><a name="idp1115153212"></a><h2>Description</h2><p>
10   This call may be used in_irq and other contexts which can't sleep,
11   as well as from task contexts which can sleep.
12   </p><p>
13
14   The completion callback is invoked in a context which can't sleep.
15   Before that invocation, the value of message-&gt;status is undefined.
16   When the callback is issued, message-&gt;status holds either zero (to
17   indicate complete success) or a negative error code.  After that
18   callback returns, the driver which issued the transfer request may
19   deallocate the associated memory; it's no longer in use by any SPI
20   core or controller driver code.
21   </p><p>
22
23   Note that although all messages to a spi_device are handled in
24   FIFO order, messages may go to different devices in other orders.
25   Some device might be higher priority, or have various <span class="quote">&#8220;<span class="quote">hard</span>&#8221;</span> access
26   time requirements, for example.
27   </p><p>
28
29   On detection of any fault during the transfer, processing of
30   the entire message is aborted, and the device is deselected.
31   Until returning from the associated message completion callback,
32   no other spi_message queued to that device will be processed.
33   (This rule applies equally to all the synchronous transfer calls,
34   which are wrappers around this core asynchronous primitive.)
35</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-spi-setup.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="spi.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="API-spi-async-locked.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">spi_setup</span>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;<span class="phrase">spi_async_locked</span></td></tr></table></div></body></html>
36