[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHp75Vcd4t=RqC31S-b1PXMtd=8sypSLhTrSgRD9hbpSqOphoQ@mail.gmail.com>
Date: Fri, 27 Nov 2020 16:22:51 +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>,
Rob Herring <robh+dt@...nel.org>,
Mark Brown <broonie@...nel.org>,
"Bogdan, Dragos" <dragos.bogdan@...log.com>
Subject: Re: [PATCH v3 2/3] spi: Add SPI_NO_TX/RX support
On Fri, Nov 27, 2020 at 3:08 PM Alexandru Ardelean
<alexandru.ardelean@...log.com> wrote:
> Transmit/receive only is a valid SPI mode. For example, the MOSI/TX line
> might be missing from an ADC while for a DAC the MISO/RX line may be
> optional. This patch adds these two new modes: SPI_NO_TX and
> SPI_NO_RX. This way, the drivers will be able to identify if any of
> these two lines is missing and to adjust the transfers accordingly.
...
> + /*
> + * check mode to prevent that any two of DUAL, QUAD and NO_MOSI/MISO
> + * are set at the same time
> */
Since you are here,
check -> Check
time -> time.
...
> + if ((hweight_long(spi->mode &
> + (SPI_TX_DUAL | SPI_TX_QUAD | SPI_NO_TX)) > 1) ||
> + (hweight_long(spi->mode &
> + (SPI_RX_DUAL | SPI_RX_QUAD | SPI_NO_RX)) > 1)) {
> dev_err(&spi->dev,
> - "setup: can not select dual and quad at the same time\n");
> + "setup: can not select any two of dual, quad and no-rx/tx "
> + "at the same time\n");
Don't split literals, and probably rephrase (If I can't set 2, can I set 3?)
"setup: can't select more than one out of dual, quad, and no-Rx /
no-Tx at the same time\n");
> --- a/include/uapi/linux/spi/spi.h
> +++ b/include/uapi/linux/spi/spi.h
> @@ -43,5 +43,7 @@
> #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 */
> +#define SPI_NO_TX 0x10000 /* no transmit wire */
> +#define SPI_NO_RX 0x20000 /* no receive wire */
Is it really material for uAPI?
Perhaps we may have something like
SPI_MODE_USER_MASK in uAPI and
in internal headers
SPI_MODE_KERNEL_MASK with
static_assert(_USER_MASK & _KERNEL_MASK); // check conditional
?
--
With Best Regards,
Andy Shevchenko
Powered by blists - more mailing lists