2019-09-19 14:43:19 +00:00
|
|
|
From d7aa9d52b7f9b2d600f9b2479767c24d438a2c68 Mon Sep 17 00:00:00 2001
|
2019-07-09 18:32:28 +00:00
|
|
|
From: Phil Elwell <phil@raspberrypi.org>
|
|
|
|
Date: Tue, 3 Jul 2018 14:23:47 +0100
|
2019-12-23 12:42:55 +00:00
|
|
|
Subject: [PATCH] spi: Make GPIO CSs honour the SPI_NO_CS flag
|
2019-07-09 18:32:28 +00:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
Correct this omission with a trivial patch.
|
|
|
|
|
|
|
|
See: https://github.com/raspberrypi/linux/issues/2169
|
|
|
|
|
|
|
|
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|
|
|
---
|
|
|
|
drivers/spi/spi.c | 4 +++-
|
|
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
|
|
|
|
--- a/drivers/spi/spi.c
|
|
|
|
+++ b/drivers/spi/spi.c
|
|
|
|
@@ -733,7 +733,9 @@ static void spi_set_cs(struct spi_device
|
|
|
|
enable = !enable;
|
|
|
|
|
|
|
|
if (gpio_is_valid(spi->cs_gpio)) {
|
|
|
|
- gpio_set_value_cansleep(spi->cs_gpio, !enable);
|
|
|
|
+ /* Honour the SPI_NO_CS flag */
|
|
|
|
+ if (!(spi->mode & SPI_NO_CS))
|
|
|
|
+ gpio_set_value_cansleep(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)
|