[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHp75VcFPC6_=+AbWOGyFJ5t+ZXwWJUBdHYUe++DemdbcxRfWQ@mail.gmail.com>
Date: Thu, 3 Dec 2020 16:14:06 +0200
From: Andy Shevchenko <andy.shevchenko@...il.com>
To: Alexandru Ardelean <alexandru.ardelean@...log.com>
Cc: linux-spi <linux-spi@...r.kernel.org>,
devicetree <devicetree@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Mark Brown <broonie@...nel.org>,
Rob Herring <robh+dt@...nel.org>,
"Bogdan, Dragos" <dragos.bogdan@...log.com>
Subject: Re: [PATCH v4 1/3] spi: uapi: unify SPI modes into a single spi.h header
On Thu, Dec 3, 2020 at 4:00 PM Alexandru Ardelean
<alexandru.ardelean@...log.com> wrote:
>
> 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.
Looks nice to me now, FWIW,
Reviewed-by: Andy Shevchenko <andy.shevchenko@...il.com>
> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@...log.com>
> ---
>
> Changelog v3 -> v4:
> * https://lore.kernel.org/linux-spi/20201127130834.136348-1-alexandru.ardelean@analog.com/
> * uapi -> uAPI in comment
> * removed extra license text in 'uapi/linux/spi/spi.h'
> * using _BITUL() macro
>
> include/linux/spi/spi.h | 23 ++---------------------
> include/uapi/linux/spi/spi.h | 31 +++++++++++++++++++++++++++++++
> include/uapi/linux/spi/spidev.h | 30 +-----------------------------
> 3 files changed, 34 insertions(+), 50 deletions(-)
> create mode 100644 include/uapi/linux/spi/spi.h
>
> diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h
> index aa09fdc8042d..a08c3f37e202 100644
> --- a/include/linux/spi/spi.h
> +++ b/include/linux/spi/spi.h
> @@ -15,6 +15,8 @@
> #include <linux/gpio/consumer.h>
> #include <linux/ptp_clock_kernel.h>
>
> +#include <uapi/linux/spi/spi.h>
> +
> struct dma_chan;
> struct property_entry;
> struct spi_controller;
> @@ -165,27 +167,6 @@ struct spi_device {
> u8 bits_per_word;
> bool rt;
> u32 mode;
> -#define SPI_CPHA 0x01 /* clock phase */
> -#define SPI_CPOL 0x02 /* clock polarity */
> -#define SPI_MODE_0 (0|0) /* (original MicroWire) */
> -#define SPI_MODE_1 (0|SPI_CPHA)
> -#define SPI_MODE_2 (SPI_CPOL|0)
> -#define SPI_MODE_3 (SPI_CPOL|SPI_CPHA)
> -#define SPI_MODE_X_MASK (SPI_CPOL|SPI_CPHA)
> -#define SPI_CS_HIGH 0x04 /* chipselect active high? */
> -#define SPI_LSB_FIRST 0x08 /* per-word bits-on-wire */
> -#define SPI_3WIRE 0x10 /* SI/SO signals shared */
> -#define SPI_LOOP 0x20 /* loopback mode */
> -#define SPI_NO_CS 0x40 /* 1 dev/bus, no chipselect */
> -#define SPI_READY 0x80 /* slave pulls low to pause */
> -#define SPI_TX_DUAL 0x100 /* transmit with 2 wires */
> -#define SPI_TX_QUAD 0x200 /* transmit with 4 wires */
> -#define SPI_RX_DUAL 0x400 /* receive with 2 wires */
> -#define SPI_RX_QUAD 0x800 /* receive with 4 wires */
> -#define SPI_CS_WORD 0x1000 /* toggle cs after each word */
> -#define SPI_TX_OCTAL 0x2000 /* transmit with 8 wires */
> -#define SPI_RX_OCTAL 0x4000 /* receive with 8 wires */
> -#define SPI_3WIRE_HIZ 0x8000 /* high impedance turnaround */
> int irq;
> void *controller_state;
> void *controller_data;
> diff --git a/include/uapi/linux/spi/spi.h b/include/uapi/linux/spi/spi.h
> new file mode 100644
> index 000000000000..703b586f35df
> --- /dev/null
> +++ b/include/uapi/linux/spi/spi.h
> @@ -0,0 +1,31 @@
> +/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
> +#ifndef _UAPI_SPI_H
> +#define _UAPI_SPI_H
> +
> +#include <linux/const.h>
> +
> +#define SPI_CPHA _BITUL(0) /* clock phase */
> +#define SPI_CPOL _BITUL(1) /* clock polarity */
> +
> +#define SPI_MODE_0 (0|0) /* (original MicroWire) */
> +#define SPI_MODE_1 (0|SPI_CPHA)
> +#define SPI_MODE_2 (SPI_CPOL|0)
> +#define SPI_MODE_3 (SPI_CPOL|SPI_CPHA)
> +#define SPI_MODE_X_MASK (SPI_CPOL|SPI_CPHA)
> +
> +#define SPI_CS_HIGH _BITUL(2) /* chipselect active high? */
> +#define SPI_LSB_FIRST _BITUL(3) /* per-word bits-on-wire */
> +#define SPI_3WIRE _BITUL(4) /* SI/SO signals shared */
> +#define SPI_LOOP _BITUL(5) /* loopback mode */
> +#define SPI_NO_CS _BITUL(6) /* 1 dev/bus, no chipselect */
> +#define SPI_READY _BITUL(7) /* slave pulls low to pause */
> +#define SPI_TX_DUAL _BITUL(8) /* transmit with 2 wires */
> +#define SPI_TX_QUAD _BITUL(9) /* transmit with 4 wires */
> +#define SPI_RX_DUAL _BITUL(10) /* receive with 2 wires */
> +#define SPI_RX_QUAD _BITUL(11) /* receive with 4 wires */
> +#define SPI_CS_WORD _BITUL(12) /* toggle cs after each word */
> +#define SPI_TX_OCTAL _BITUL(13) /* transmit with 8 wires */
> +#define SPI_RX_OCTAL _BITUL(14) /* receive with 8 wires */
> +#define SPI_3WIRE_HIZ _BITUL(15) /* high impedance turnaround */
> +
> +#endif /* _UAPI_SPI_H */
> diff --git a/include/uapi/linux/spi/spidev.h b/include/uapi/linux/spi/spidev.h
> index d56427c0b3e0..0c3da08f2aff 100644
> --- a/include/uapi/linux/spi/spidev.h
> +++ b/include/uapi/linux/spi/spidev.h
> @@ -25,35 +25,7 @@
>
> #include <linux/types.h>
> #include <linux/ioctl.h>
> -
> -/* User space versions of kernel symbols for SPI clocking modes,
> - * matching <linux/spi/spi.h>
> - */
> -
> -#define SPI_CPHA 0x01
> -#define SPI_CPOL 0x02
> -
> -#define SPI_MODE_0 (0|0)
> -#define SPI_MODE_1 (0|SPI_CPHA)
> -#define SPI_MODE_2 (SPI_CPOL|0)
> -#define SPI_MODE_3 (SPI_CPOL|SPI_CPHA)
> -
> -#define SPI_CS_HIGH 0x04
> -#define SPI_LSB_FIRST 0x08
> -#define SPI_3WIRE 0x10
> -#define SPI_LOOP 0x20
> -#define SPI_NO_CS 0x40
> -#define SPI_READY 0x80
> -#define SPI_TX_DUAL 0x100
> -#define SPI_TX_QUAD 0x200
> -#define SPI_RX_DUAL 0x400
> -#define SPI_RX_QUAD 0x800
> -#define SPI_CS_WORD 0x1000
> -#define SPI_TX_OCTAL 0x2000
> -#define SPI_RX_OCTAL 0x4000
> -#define SPI_3WIRE_HIZ 0x8000
> -
> -/*---------------------------------------------------------------------------*/
> +#include <linux/spi/spi.h>
>
> /* IOCTL commands */
>
> --
> 2.17.1
>
--
With Best Regards,
Andy Shevchenko
Powered by blists - more mailing lists