Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

spi: uapi: unify SPI modes into a single spi.h header

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.

Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Link: https://lore.kernel.org/r/20201221152936.53873-1-alexandru.ardelean@analog.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Alexandru Ardelean and committed by
Mark Brown
f7005142 22a6d41c

+34 -50
+2 -21
include/linux/spi/spi.h
··· 15 15 #include <linux/gpio/consumer.h> 16 16 #include <linux/ptp_clock_kernel.h> 17 17 18 + #include <uapi/linux/spi/spi.h> 19 + 18 20 struct dma_chan; 19 21 struct property_entry; 20 22 struct spi_controller; ··· 167 165 u8 bits_per_word; 168 166 bool rt; 169 167 u32 mode; 170 - #define SPI_CPHA 0x01 /* clock phase */ 171 - #define SPI_CPOL 0x02 /* clock polarity */ 172 - #define SPI_MODE_0 (0|0) /* (original MicroWire) */ 173 - #define SPI_MODE_1 (0|SPI_CPHA) 174 - #define SPI_MODE_2 (SPI_CPOL|0) 175 - #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA) 176 - #define SPI_MODE_X_MASK (SPI_CPOL|SPI_CPHA) 177 - #define SPI_CS_HIGH 0x04 /* chipselect active high? */ 178 - #define SPI_LSB_FIRST 0x08 /* per-word bits-on-wire */ 179 - #define SPI_3WIRE 0x10 /* SI/SO signals shared */ 180 - #define SPI_LOOP 0x20 /* loopback mode */ 181 - #define SPI_NO_CS 0x40 /* 1 dev/bus, no chipselect */ 182 - #define SPI_READY 0x80 /* slave pulls low to pause */ 183 - #define SPI_TX_DUAL 0x100 /* transmit with 2 wires */ 184 - #define SPI_TX_QUAD 0x200 /* transmit with 4 wires */ 185 - #define SPI_RX_DUAL 0x400 /* receive with 2 wires */ 186 - #define SPI_RX_QUAD 0x800 /* receive with 4 wires */ 187 - #define SPI_CS_WORD 0x1000 /* toggle cs after each word */ 188 - #define SPI_TX_OCTAL 0x2000 /* transmit with 8 wires */ 189 - #define SPI_RX_OCTAL 0x4000 /* receive with 8 wires */ 190 - #define SPI_3WIRE_HIZ 0x8000 /* high impedance turnaround */ 191 168 int irq; 192 169 void *controller_state; 193 170 void *controller_data;
+31
include/uapi/linux/spi/spi.h
··· 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 */
+1 -29
include/uapi/linux/spi/spidev.h
··· 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