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 | 26 | #include <linux/types.h> |
| 27 | 27 | #include <linux/ioctl.h> |
| 28 | − | |
| 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 | −/*---------------------------------------------------------------------------*/ | |
| 28 | +#include <linux/spi/spi.h> | |
| 57 | 29 | |
| 58 | 30 | /* IOCTL commands */ |
| 59 | 31 | |