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
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