Messages in this thread | | | From | Trent Piepho <> | Subject | Re: [PATCH] spi: Make GPIO CSs honour the SPI_NO_CS flag | Date | Mon, 15 Oct 2018 18:34:18 +0000 |
| |
On Fri, 2018-10-12 at 10:23 +0100, Phil Elwell wrote: > The SPI configuration state includes an SPI_NO_CS flag that disables > all CS line manipulation, for applications that want to manage their > own chip selects. However, this flag is ignored by the GPIO CS code > in the SPI framework.
> @@ -729,7 +729,9 @@ static void spi_set_cs(struct spi_device *spi, bool enable) > enable = !enable; > > if (gpio_is_valid(spi->cs_gpio)) { > - gpio_set_value(spi->cs_gpio, !enable); > + /* Honour the SPI_NO_CS flag */ > + if (!(spi->mode & SPI_NO_CS)) > + gpio_set_value(spi->cs_gpio, !enable); > /* Some SPI masters need both GPIO CS & slave_select */ > if ((spi->controller->flags & SPI_MASTER_GPIO_SS) && > spi->controller->set_cs)
What about the calls to spi->controller->set_cs() after this? Should a driver provided set_cs method be responsible for checking SPI_NO_CS? Or should it not be called in the first place?
I imagine it depends on what set_cs needs to do, which might not be solely related to changing the CS line. | |