Re: [PATCH v1] spi: fix client driver breakages when using GPIO descriptors

From: Linus Walleij
Date: Tue Nov 10 2020 - 20:08:39 EST


On Fri, Nov 6, 2020 at 4:07 PM Sven Van Asbroeck <thesven73@xxxxxxxxx> wrote:

> From: Sven Van Asbroeck <thesven73@xxxxxxxxx>
>
> Commit f3186dd87669 ("spi: Optionally use GPIO descriptors for CS GPIOs")
> introduced the optional use of GPIO descriptors for chip selects.
>
> A side-effect of this change: when a SPI bus uses GPIO descriptors,
> all its client devices have SPI_CS_HIGH set in spi->mode. This flag is
> required for the SPI bus to operate correctly.
>
> This unfortunately breaks many client drivers, which use the following
> pattern to configure their underlying SPI bus:
>
> static int client_device_probe(struct spi_device *spi)
> {
> ...
> spi->mode = SPI_MODE_0;
> spi->bits_per_word = 8;
> err = spi_setup(spi);

I feel torn about it, there are so many weird corners of semantics
in this code. The patch makes the code easier to understand
too.

If it provedly fixes more than it breaks:
Acked-by: Linus Walleij <linus.walleij@xxxxxxxxxx>

Yours,
Linus Walleij