aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.4/950-0134-spi-spi-bcm2835-Disable-forced-software-CS.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0134-spi-spi-bcm2835-Disable-forced-software-CS.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.4/950-0134-spi-spi-bcm2835-Disable-forced-software-CS.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0134-spi-spi-bcm2835-Disable-forced-software-CS.patch b/target/linux/bcm27xx/patches-5.4/950-0134-spi-spi-bcm2835-Disable-forced-software-CS.patch
new file mode 100644
index 0000000000..0abe5059c0
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.4/950-0134-spi-spi-bcm2835-Disable-forced-software-CS.patch
@@ -0,0 +1,47 @@
+From dc1e3fefce7abd7532fbc74e26df61a8ced1dcd6 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Tue, 15 Jan 2019 12:41:15 +0000
+Subject: [PATCH] spi: spi-bcm2835: Disable forced software CS
+
+With GPIO CS used by the DTBs, allow hardware CS to be selected by an
+overlay.
+
+Signed-off-by: Phil Elwell <phil@raspberrypi.org>
+---
+ drivers/spi/spi-bcm2835.c | 37 -------------------------------------
+ 1 file changed, 37 deletions(-)
+
+--- a/drivers/spi/spi-bcm2835.c
++++ b/drivers/spi/spi-bcm2835.c
+@@ -1230,31 +1230,6 @@ static int bcm2835_spi_setup(struct spi_
+ return -EINVAL;
+ }
+
+- /*
+- * Translate native CS to GPIO
+- *
+- * FIXME: poking around in the gpiolib internals like this is
+- * not very good practice. Find a way to locate the real problem
+- * and fix it. Why is the GPIO descriptor in spi->cs_gpiod
+- * sometimes not assigned correctly? Erroneous device trees?
+- */
+-
+- /* get the gpio chip for the base */
+- chip = gpiochip_find("pinctrl-bcm2835", chip_match_name);
+- if (!chip)
+- return 0;
+-
+- spi->cs_gpiod = gpiochip_request_own_desc(chip, 8 - spi->chip_select,
+- DRV_NAME,
+- GPIO_LOOKUP_FLAGS_DEFAULT,
+- GPIOD_OUT_LOW);
+- if (IS_ERR(spi->cs_gpiod))
+- return PTR_ERR(spi->cs_gpiod);
+-
+- /* and set up the "mode" and level */
+- dev_info(&spi->dev, "setting up native-CS%i to use GPIO\n",
+- spi->chip_select);
+-
+ return 0;
+ }
+