This change moves all the SPI mode bits into a separate 'spi.h' header in uAPI. This is meant to re-use these definitions inside the kernel as well as export them to userspace (via uAPI). The SPI mode definitions have usually been duplicated between between 'include/linux/spi/spi.h' and 'include/uapi/linux/spi/spidev.h', so whenever adding a new entry, this would need to be put in both headers. They've been moved from 'include/linux/spi/spi.h', since that seems a bit more complete; the bits have descriptions and there is the SPI_MODE_X_MASK. This change also does a conversion of these bitfields to _BITUL() macro.
Showing the changes to include/uapi (2 of 3 files). Show all
Unified · Split
| @@ -0,0 +1,31 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ | ||
| 2 | #ifndef _UAPI_SPI_H | ||
| 3 | #define _UAPI_SPI_H | ||
| 4 | |||
| 5 | #include <linux/const.h> | ||
| 6 | |||
| 7 | #define SPI_CPHA _BITUL(0) /* clock phase */ | ||
| 8 | #define SPI_CPOL _BITUL(1) /* clock polarity */ | ||
| 9 | |||
| 10 | #define SPI_MODE_0 (0|0) /* (original MicroWire) */ | ||
| 11 | #define SPI_MODE_1 (0|SPI_CPHA) | ||
| 12 | #define SPI_MODE_2 (SPI_CPOL|0) | ||
| 13 | #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA) | ||
| 14 | #define SPI_MODE_X_MASK (SPI_CPOL|SPI_CPHA) | ||
| 15 | |||
| 16 | #define SPI_CS_HIGH _BITUL(2) /* chipselect active high? */ | ||
| 17 | #define SPI_LSB_FIRST _BITUL(3) /* per-word bits-on-wire */ | ||
| 18 | #define SPI_3WIRE _BITUL(4) /* SI/SO signals shared */ | ||
| 19 | #define SPI_LOOP _BITUL(5) /* loopback mode */ | ||
| 20 | #define SPI_NO_CS _BITUL(6) /* 1 dev/bus, no chipselect */ | ||
| 21 | #define SPI_READY _BITUL(7) /* slave pulls low to pause */ | ||
| 22 | #define SPI_TX_DUAL _BITUL(8) /* transmit with 2 wires */ | ||
| 23 | #define SPI_TX_QUAD _BITUL(9) /* transmit with 4 wires */ | ||
| 24 | #define SPI_RX_DUAL _BITUL(10) /* receive with 2 wires */ | ||
| 25 | #define SPI_RX_QUAD _BITUL(11) /* receive with 4 wires */ | ||
| 26 | #define SPI_CS_WORD _BITUL(12) /* toggle cs after each word */ | ||
| 27 | #define SPI_TX_OCTAL _BITUL(13) /* transmit with 8 wires */ | ||
| 28 | #define SPI_RX_OCTAL _BITUL(14) /* receive with 8 wires */ | ||
| 29 | #define SPI_3WIRE_HIZ _BITUL(15) /* high impedance turnaround */ | ||
| 30 | |||
| 31 | #endif /* _UAPI_SPI_H */ | ||
| @@ -25,35 +25,7 @@ · 24 unmodified lines | |||
| 25 | 25 | ||
| 26 | #include <linux/types.h> | 26 | #include <linux/types.h> |
| 27 | #include <linux/ioctl.h> | 27 | #include <linux/ioctl.h> |
| 28 | 28 | #include <linux/spi/spi.h> | |
| 29 | /* User space versions of kernel symbols for SPI clocking modes, | ||
| 30 | * matching <linux/spi/spi.h> | ||
| 31 | */ | ||
| 32 | |||
| 33 | #define SPI_CPHA 0x01 | ||
| 34 | #define SPI_CPOL 0x02 | ||
| 35 | |||
| 36 | #define SPI_MODE_0 (0|0) | ||
| 37 | #define SPI_MODE_1 (0|SPI_CPHA) | ||
| 38 | #define SPI_MODE_2 (SPI_CPOL|0) | ||
| 39 | #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA) | ||
| 40 | |||
| 41 | #define SPI_CS_HIGH 0x04 | ||
| 42 | #define SPI_LSB_FIRST 0x08 | ||
| 43 | #define SPI_3WIRE 0x10 | ||
| 44 | #define SPI_LOOP 0x20 | ||
| 45 | #define SPI_NO_CS 0x40 | ||
| 46 | #define SPI_READY 0x80 | ||
| 47 | #define SPI_TX_DUAL 0x100 | ||
| 48 | #define SPI_TX_QUAD 0x200 | ||
| 49 | #define SPI_RX_DUAL 0x400 | ||
| 50 | #define SPI_RX_QUAD 0x800 | ||
| 51 | #define SPI_CS_WORD 0x1000 | ||
| 52 | #define SPI_TX_OCTAL 0x2000 | ||
| 53 | #define SPI_RX_OCTAL 0x4000 | ||
| 54 | #define SPI_3WIRE_HIZ 0x8000 | ||
| 55 | |||
| 56 | /*---------------------------------------------------------------------------*/ | ||
| 57 | 29 | ||
| 58 | /* IOCTL commands */ | 30 | /* IOCTL commands */ |
| 59 | 31 | ||