summaryrefslogtreecommitdiff
path: root/static/netbsd/man9/spi.9
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man9/spi.9')
-rw-r--r--static/netbsd/man9/spi.9171
1 files changed, 171 insertions, 0 deletions
diff --git a/static/netbsd/man9/spi.9 b/static/netbsd/man9/spi.9
new file mode 100644
index 00000000..fe4a0bb4
--- /dev/null
+++ b/static/netbsd/man9/spi.9
@@ -0,0 +1,171 @@
+.\" $NetBSD: spi.9,v 1.3 2025/10/10 18:36:17 brad Exp $
+.\"
+.\" Copyright (c) 2019 The NetBSD Foundation
+.\" All rights reserved.
+.\"
+.\" Written by Michael van Elst
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd February 23, 2019
+.Dt SPI 9
+.Os
+.Sh NAME
+.Nm spi_configure ,
+.Nm spi_transfer ,
+.Nm spi_transfer_init ,
+.Nm spi_chunk_init ,
+.Nm spi_transfer_add ,
+.Nm spi_wait ,
+.Nm spi_done ,
+.Nm spi_send ,
+.Nm spi_sendv ,
+.Nm spi_recv ,
+.Nm spi_send_recv
+.Nd Serial Peripheral Interface (SPI) kernel interface
+.Sh SYNOPSIS
+.In dev/spi/spivar.h
+.Ft int
+.Fo spi_configure
+.Fa "struct spi_handle *sh"
+.Fa "int mode"
+.Fa "int speed"
+.Fc
+.Ft int
+.Fo spi_transfer
+.Fa "struct spi_handle *sh"
+.Fa "struct spi_transfer *st"
+.Fc
+.Ft void
+.Fo spi_transfer_init
+.Fa "struct spi_transfer *st"
+.Fc
+.Ft void
+.Fo spi_chunk_init
+.Fa "struct spi_chunk *chunk"
+.Fa "int cnt"
+.Fa "const uint8_t *wptr"
+.Fa "uint8_t *rptr"
+.Fc
+.Ft void
+.Fo spi_transfer_add
+.Fa "struct spi_transfer *st"
+.Fa "struct spi_chunk *chunk"
+.Fc
+.Ft void
+.Fo spi_wait
+.Fa "struct spi_transfer *st"
+.Fc
+.Ft void
+.Fo spi_done
+.Fa "struct spi_transfer *st"
+.Fa "int err"
+.Fc
+.Ft int
+.Fo spi_recv
+.Fa "struct spi_handle *sh"
+.Fa "int cnt"
+.Fa "uint8_t *data"
+.Fc
+.Ft int
+.Fo spi_send
+.Fa "struct spi_handle *sh"
+.Fa "int cnt"
+.Fa "const uint8_t *data"
+.Fc
+.Ft int
+.Fo spi_sendv
+.Fa "struct spi_handle *sh"
+.Fa "struct iovec *iov"
+.Fa "int iovcnt"
+.Fc
+.Ft int
+.Fo spi_send_recv
+.Fa "struct spi_handle *sh"
+.Fa "int scnt"
+.Fa "const uint8_t *snd"
+.Fa "int rcnt"
+.Fa "uint8_t *rcv"
+.Fc
+.Sh 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
+.Nm spi
+interface provides a means of communicating with SPI-connected devices.
+.Sh FUNCTIONS
+The following functions comprise the API provided to drivers of
+SPI-connected devices.
+.Pp
+The
+.Fa struct spi_handle
+corresponding to the device is passed in the driver attachment.
+.Bl -tag -width spi_transfer_init
+.It Fn spi_configure "sh" "mode" "speed"
+Sets mode and speed for subsequent communication with a SPI slave.
+.It Fn spi_transfer "sh" "st"
+Queue transfer to SPI controller.
+.Fn spi_transfer
+returns an errno value when the transfer couldn't be queued.
+.It Fn spi_transfer_init "st"
+Initialize a transfer structure.
+.It Fn 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.
+.It Fn spi_transfer_add "st" "chunk"
+Append a chunk to transfer structure.
+.It Fn spi_wait "st"
+Wait for a transfer to complete.
+When the transfer has failed for some reason, the field
+.Va st->st_errno
+is set to a non-zero value.
+.It Fn spi_done "st" "err"
+Called back machine-dependent backend to signal completion
+of a transfer.
+.El
+.Pp
+For simplicity there are convenience functions that combine
+common operations.
+These functions return an errno value when the transfer failed.
+.Bl -tag -width spi_transfer_init
+.It Fn spi_recv "sh" "cnt" "data"
+Prepares a chunk for receiving data, queues a transfer and
+waits for it to complete.
+.It Fn spi_send "sh" "cnt" "data"
+Prepares a chunk for sending data, queues a transfer and
+waits for it to complete.
+.It Fn spi_sendv "sh" "iov" "iovcnt"
+Prepare and queue a scatter of chunks and wait for them to complete.
+.It Fn 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.
+.El
+.Sh SEE ALSO
+.Xr spi 4
+.Sh HISTORY
+The
+.Nm spi
+API first appeared in
+.Nx 4.0 .