Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Fields
spi_ioc_transfer Struct Reference

#include <spidev.h>

Data Fields

__u64 tx_buf
 
__u64 rx_buf
 
__u32 len
 
__u32 speed_hz
 
__u16 delay_usecs
 
__u8 bits_per_word
 
__u8 cs_change
 
__u32 pad
 

Detailed Description

struct spi_ioc_transfer - describes a single SPI transfer : Holds pointer to userspace buffer with transmit data, or null. If no data is provided, zeroes are shifted out. : Holds pointer to userspace buffer for receive data, or null. : Length of tx and rx buffers, in bytes. : Temporary override of the device's bitrate. : Temporary override of the device's wordsize. : If nonzero, how long to delay after the last bit transfer before optionally deselecting the device before the next transfer. : True to deselect device before starting the next transfer.

This structure is mapped directly to the kernel spi_transfer structure; the fields have the same meanings, except of course that the pointers are in a different address space (and may be of different sizes in some cases, such as 32-bit i386 userspace over a 64-bit x86_64 kernel). Zero-initialize the structure, including currently unused fields, to accommodate potential future updates.

SPI_IOC_MESSAGE gives userspace the equivalent of kernel spi_sync(). Pass it an array of related transfers, they'll execute together. Each transfer may be half duplex (either direction) or full duplex.

struct spi_ioc_transfer mesg[4]; ... status = ioctl(fd, SPI_IOC_MESSAGE(4), mesg);

So for example one transfer might send a nine bit command (right aligned in a 16-bit word), the next could read a block of 8-bit data before terminating that command by temporarily deselecting the chip; the next could send a different nine bit command (re-selecting the chip), and the last transfer might write some register values.

Definition at line 85 of file spidev.h.

Field Documentation

__u8 bits_per_word

Definition at line 93 of file spidev.h.

__u8 cs_change

Definition at line 94 of file spidev.h.

__u16 delay_usecs

Definition at line 92 of file spidev.h.

__u32 len

Definition at line 89 of file spidev.h.

__u32 pad

Definition at line 95 of file spidev.h.

__u64 rx_buf

Definition at line 87 of file spidev.h.

__u32 speed_hz

Definition at line 90 of file spidev.h.

Definition at line 86 of file spidev.h.


The documentation for this struct was generated from the following file: