All of lore.kernel.org
 help / color / mirror / Atom feed
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

      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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.