From: Andy Shevchenko <andy.shevchenko@gmail.com>
To: Alexandru Ardelean <alexandru.ardelean@analog.com>
Cc: linux-spi <linux-spi@vger.kernel.org>,
devicetree <devicetree@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Mark Brown <broonie@kernel.org>, Rob Herring <robh+dt@kernel.org>,
"Bogdan, Dragos" <dragos.bogdan@analog.com>
Subject: Re: [PATCH v4 1/3] spi: uapi: unify SPI modes into a single spi.h header
Date: Thu, 3 Dec 2020 16:14:06 +0200 [thread overview]
Message-ID: <CAHp75VcFPC6_=+AbWOGyFJ5t+ZXwWJUBdHYUe++DemdbcxRfWQ@mail.gmail.com> (raw)
In-Reply-To: <20201203140531.74470-1-alexandru.ardelean@analog.com>
On Thu, Dec 3, 2020 at 4:00 PM Alexandru Ardelean
<alexandru.ardelean@analog.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@gmail.com>
> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.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
prev parent reply other threads:[~2020-12-03 14:14 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-03 14:05 [PATCH v4 1/3] spi: uapi: unify SPI modes into a single spi.h header Alexandru Ardelean
2020-12-03 14:05 ` [PATCH v4 2/3] spi: Add SPI_NO_TX/RX support Alexandru Ardelean
2020-12-03 14:10 ` Andy Shevchenko
2020-12-03 14:27 ` Andy Shevchenko
2020-12-03 14:24 ` Andy Shevchenko
2020-12-03 14:05 ` [PATCH v4 3/3] spi: dt-bindings: document zero value for spi-{rx,tx}-bus-width properties Alexandru Ardelean
2020-12-09 20:13 ` Rob Herring
2020-12-03 14:14 ` Andy Shevchenko [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAHp75VcFPC6_=+AbWOGyFJ5t+ZXwWJUBdHYUe++DemdbcxRfWQ@mail.gmail.com' \
--to=andy.shevchenko@gmail.com \
--cc=alexandru.ardelean@analog.com \
--cc=broonie@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dragos.bogdan@analog.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).