spi(9)
- NetBSD Manual Pages
SPI(9) NetBSD Kernel Developer's Manual SPI(9)
NAME
spi_configure, spi_transfer, spi_transfer_init, spi_chunk_init,
spi_transfer_add, spi_wait, spi_done, spi_send, spi_recv, spi_send_recv
-- Serial Peripheral Interface (SPI) kernel interface
SYNOPSIS
#include <dev/spi/spivar.h>
int
spi_configure(struct spi_handle *sh, int mode, int speed);
int
spi_transfer(struct spi_handle *sh, struct spi_transfer *st);
void
spi_transfer_init(struct spi_transfer *st);
void
spi_chunk_init(struct spi_chunk *chunk, int cnt, const uint8_t *wptr,
uint8_t *rptr);
void
spi_transfer_add(struct spi_transfer *st, struct spi_chunk *chunk);
void
spi_wait(struct spi_transfer *st);
void
spi_done(struct spi_transfer *st, int err);
int
spi_recv(struct spi_handle *sh, int cnt, uint8_t *data);
int
spi_send(struct spi_handle *sh, int cnt, const uint8_t *data);
int
spi_send_recv(struct spi_handle *sh, int scnt, const uint8_t *snd,
int rcnt, const uint8_t *rcv);
DESCRIPTION
SPI is a 4-wire synchronous full-duplex serial bus. It is commonly used
for connecting devices such as EEPROMs, displays, and other types of
integrated circuits. The spi interface provides a means of communicating
with SPI-connected devices.
FUNCTIONS
The following functions comprise the API provided to drivers of SPI-con-
nected devices.
The struct spi_handle corresponding to the device is passed in the driver
attachment.
spi_configure(sh, mode, speed)
Sets mode and speed for subsequent communication with
a SPI slave.
spi_transfer(sh, st)
Queue transfer to SPI controller. spi_transfer()
returns an errno value when the transfer couldn't be
queued.
spi_transfer_init(st)
Initialize a transfer structure.
spi_chunk_init(chunk, cnt, wptr, rptr")
Initialize a chunk structure, each chunk corresponds
to a possibly bi-directional transfer where the same
amount of bytes is shifted in and out.
spi_transfer_add(st, chunk)
Append a chunk to transfer structure.
spi_wait(st) Wait for a transfer to complete. When the transfer
has failed for some reason, the field st->st_errno is
set to a non-zero value.
spi_done(st, err) Called back machine-dependent backend to signal com-
pletion of a transfer.
For simplicity there are convenience functions that combine common opera-
tions. These functions return an errno value when the transfer failed.
spi_recv(sh, cnt, data)
Prepares a chunk for receiving data, queues a transfer
and waits for it to complete.
spi_send(sh, cnt, data)
Prepares a chunk for sending data, queues a transfer
and waits for it to complete.
spi_send_recv(sh, scnt, snd, rcnt, rcv)
Prepares two chunks for sending data first and then
receiving an answer, queues a transfer and waits for
it to complete. This is not a full-duplex operation.
SEE ALSO
spi(4)
HISTORY
The spi API first appeared in NetBSD 4.0.
NetBSD 9.3 February 23, 2019 NetBSD 9.3
Powered by man-cgi (2021-06-01).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.