History

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.

Alexandru Ardelean committed 5 years ago

Commit f7005141 parent 22a6d413 files · +34 −50Browse files

Showing the changes to include/uapi (2 of 3 files). Show all

Unified · Split

2 files
  1. include/uapi/linux/spi/spi.h +31 −0
  2. include/uapi/linux/spi/spidev.h +1 −29
include/uapi/linux/spi/spi.h+31−0
@@ -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 */
include/uapi/linux/spi/spidev.h+1−29
@@ -25,35 +25,7 @@ · 24 unmodified lines
2525
2626 #include <linux/types.h>
2727 #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>
5729
5830 /* IOCTL commands */
5931