RTEMS: cpukit/include/linux/spi/spidev.h Source File

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
spidev.h
Go to the documentation of this file.
1
9/*
10 * Copyright (c) 2016 embedded brains GmbH. All rights reserved.
11 *
12 * embedded brains GmbH
13 * Dornierstr. 4
14 * 82178 Puchheim
15 * Germany
16 * <rtems@embedded-brains.de>
17 *
18 * The license and distribution terms for this file may be
19 * found in the file LICENSE in this distribution or at
20 * http://www.rtems.org/license/LICENSE.
21 */
22
23#ifndef _UAPI_LINUX_SPI_H
24#define _UAPI_LINUX_SPI_H
25
26#include <sys/ioccom.h>
27#include <stddef.h>
28#include <stdint.h>
29
53#define SPI_CPHA 0x01
54
58#define SPI_CPOL 0x02
59
64#define SPI_MODE_0 0
65
70#define SPI_MODE_1 SPI_CPHA
71
76#define SPI_MODE_2 SPI_CPOL
77
82#define SPI_MODE_3 (SPI_CPOL | SPI_CPHA)
83
88#define SPI_CS_HIGH 0x04
89
94#define SPI_LSB_FIRST 0x08
95
100#define SPI_3WIRE 0x10
101
105#define SPI_LOOP 0x20
106
111#define SPI_NO_CS 0x40
112
116#define SPI_READY 0x80
117
121#define SPI_TX_DUAL 0x100
122
126#define SPI_TX_QUAD 0x200
127
131#define SPI_RX_DUAL 0x400
132
136#define SPI_RX_QUAD 0x800
137
140#define SPI_IOC_MAGIC 's'
141
145 struct spi_ioc_transfer {
149 void *rx_buf;
150
154 const void *tx_buf;
155
159 size_t len;
160
164 uint32_t speed_hz;
165
170 uint16_t delay_usecs;
171
175 uint8_t bits_per_word;
176
181 uint8_t cs_change;
182
186 uint8_t rx_nbits;
187
191 uint8_t tx_nbits;
192
197 uint32_t mode;
198
202 uint8_t cs;
203};
204
208#define SPI_MSGSIZE(n) \
209 (((n) * sizeof(struct spi_ioc_transfer) < IOCPARM_MAX) ? \
210 (n) * sizeof(struct spi_ioc_transfer) : 0)
211
215#define SPI_IOC_MESSAGE(n) _IOW(SPI_IOC_MAGIC, 0, char[SPI_MSGSIZE(n)])
216
220#define SPI_IOC_RD_MODE _IOR(SPI_IOC_MAGIC, 1, uint8_t)
221
226#define SPI_IOC_WR_MODE _IOW(SPI_IOC_MAGIC, 1, uint8_t)
227
231#define SPI_IOC_RD_LSB_FIRST _IOR(SPI_IOC_MAGIC, 2, uint8_t)
232
236#define SPI_IOC_WR_LSB_FIRST _IOW(SPI_IOC_MAGIC, 2, uint8_t)
237
241#define SPI_IOC_RD_BITS_PER_WORD _IOR(SPI_IOC_MAGIC, 3, uint8_t)
242
246#define SPI_IOC_WR_BITS_PER_WORD _IOW(SPI_IOC_MAGIC, 3, uint8_t)
247
251#define SPI_IOC_RD_MAX_SPEED_HZ _IOR(SPI_IOC_MAGIC, 4, uint32_t)
252
256#define SPI_IOC_WR_MAX_SPEED_HZ _IOW(SPI_IOC_MAGIC, 4, uint32_t)
257
261#define SPI_IOC_RD_MODE32 _IOR(SPI_IOC_MAGIC, 5, uint32_t)
262
266#define SPI_IOC_WR_MODE32 _IOW(SPI_IOC_MAGIC, 5, uint32_t)
267
268#endif /* _UAPI_LINUX_SPI_H */
spi_ioc_transfer::cs_change
uint8_t cs_change
If true, device is deselected after transfer ended and before a new transfer is started.
Definition: spidev.h:181
spi_ioc_transfer::speed_hz
uint32_t speed_hz
Sets the bit-rate of the device.
Definition: spidev.h:164
spi_ioc_transfer::rx_buf
void * rx_buf
Buffer for receive data.
Definition: spidev.h:149
spi_ioc_transfer::rx_nbits
uint8_t rx_nbits
Amount of bits that are used for reading.
Definition: spidev.h:186
spi_ioc_transfer::bits_per_word
uint8_t bits_per_word
Sets the device wordsize.
Definition: spidev.h:175
spi_ioc_transfer::delay_usecs
uint16_t delay_usecs
Sets the delay after a transfer before the chip select status is changed and the next transfer is tri...
Definition: spidev.h:170
spi_ioc_transfer::tx_nbits
uint8_t tx_nbits
Amount of bits that are used for writing.
Definition: spidev.h:191
spi_ioc_transfer::cs
uint8_t cs
Indicates which device is currently used.
Definition: spidev.h:202
spi_ioc_transfer::len
size_t len
Length of receive and transmit buffers in bytes.
Definition: spidev.h:159
spi_ioc_transfer::tx_buf
const void * tx_buf
Buffer for transmit data.
Definition: spidev.h:154
spi_ioc_transfer::mode
uint32_t mode
Sets one of the possible modes that can be used for SPI transfers (dependent on clock phase and polar...
Definition: spidev.h:197
spi_ioc_transfer
SPI transfer message.
Definition: spidev.h:145