• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * This header was generated from the Linux kernel headers by update_headers.py,
3  * to provide necessary information from kernel to userspace, such as constants,
4  * structures, and macros, and thus, contains no copyrightable information.
5  */
6 #ifndef SPIDEV_H
7 #define SPIDEV_H
8 #include <linux/types.h>
9 #include <linux/ioctl.h>
10 #define SPI_CPHA		0x01
11 #define SPI_CPOL		0x02
12 #define SPI_MODE_0		(0|0)
13 #define SPI_MODE_1		(0|SPI_CPHA)
14 #define SPI_MODE_2		(SPI_CPOL|0)
15 #define SPI_MODE_3		(SPI_CPOL|SPI_CPHA)
16 #define SPI_CS_HIGH		0x04
17 #define SPI_LSB_FIRST		0x08
18 #define SPI_3WIRE		0x10
19 #define SPI_LOOP		0x20
20 #define SPI_NO_CS		0x40
21 #define SPI_READY		0x80
22 #define SPI_TX_DUAL		0x100
23 #define SPI_TX_QUAD		0x200
24 #define SPI_RX_DUAL		0x400
25 #define SPI_RX_QUAD		0x800
26 #define SPI_IOC_MAGIC			'k'
27 struct spi_ioc_transfer {
28 	__u64		tx_buf;
29 	__u64		rx_buf;
30 	__u32		len;
31 	__u32		speed_hz;
32 	__u16		delay_usecs;
33 	__u8		bits_per_word;
34 	__u8		cs_change;
35 	__u8		tx_nbits;
36 	__u8		rx_nbits;
37 	__u16		pad;
38 
39 };
40 #define SPI_MSGSIZE(N) \
41 	((((N)*(sizeof (struct spi_ioc_transfer))) < (1 << _IOC_SIZEBITS)) \
42 		? ((N)*(sizeof (struct spi_ioc_transfer))) : 0)
43 #define SPI_IOC_MESSAGE(N) _IOW(SPI_IOC_MAGIC, 0, char[SPI_MSGSIZE(N)])
44 #define SPI_IOC_RD_MODE			_IOR(SPI_IOC_MAGIC, 1, __u8)
45 #define SPI_IOC_WR_MODE			_IOW(SPI_IOC_MAGIC, 1, __u8)
46 #define SPI_IOC_RD_LSB_FIRST		_IOR(SPI_IOC_MAGIC, 2, __u8)
47 #define SPI_IOC_WR_LSB_FIRST		_IOW(SPI_IOC_MAGIC, 2, __u8)
48 #define SPI_IOC_RD_BITS_PER_WORD	_IOR(SPI_IOC_MAGIC, 3, __u8)
49 #define SPI_IOC_WR_BITS_PER_WORD	_IOW(SPI_IOC_MAGIC, 3, __u8)
50 #define SPI_IOC_RD_MAX_SPEED_HZ		_IOR(SPI_IOC_MAGIC, 4, __u32)
51 #define SPI_IOC_WR_MAX_SPEED_HZ		_IOW(SPI_IOC_MAGIC, 4, __u32)
52 #define SPI_IOC_RD_MODE32		_IOR(SPI_IOC_MAGIC, 5, __u32)
53 #define SPI_IOC_WR_MODE32		_IOW(SPI_IOC_MAGIC, 5, __u32)
54 #endif
55