diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-4.19/950-0144-spi-Make-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-4.19/950-0144-spi-Make-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-4.19/950-0144-spi-Make-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch b/target/linux/bcm27xx/patches-4.19/950-0144-spi-Make-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch new file mode 100644 index 0000000000..727624086a --- /dev/null +++ b/target/linux/bcm27xx/patches-4.19/950-0144-spi-Make-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch @@ -0,0 +1,32 @@ +From d7aa9d52b7f9b2d600f9b2479767c24d438a2c68 Mon Sep 17 00:00:00 2001 +From: Phil Elwell <phil@raspberrypi.org> +Date: Tue, 3 Jul 2018 14:23:47 +0100 +Subject: [PATCH] spi: Make GPIO CSs honour the SPI_NO_CS flag + +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) |