diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0789-Revert-spi-spi-bcm2835-Disable-forced-software-CS.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0789-Revert-spi-spi-bcm2835-Disable-forced-software-CS.patch | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0789-Revert-spi-spi-bcm2835-Disable-forced-software-CS.patch b/target/linux/bcm27xx/patches-5.4/950-0789-Revert-spi-spi-bcm2835-Disable-forced-software-CS.patch deleted file mode 100644 index ac0684be86..0000000000 --- a/target/linux/bcm27xx/patches-5.4/950-0789-Revert-spi-spi-bcm2835-Disable-forced-software-CS.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 1d78f72cb5a387922870e2a54228be25f84f95f6 Mon Sep 17 00:00:00 2001 -From: Phil Elwell <phil@raspberrypi.com> -Date: Tue, 16 Jun 2020 10:23:29 +0100 -Subject: [PATCH] Revert "spi: spi-bcm2835: Disable forced software - CS" - -This reverts commit 2697f0186db346176832b8eb79adaf5c874681e8. - -See: https://github.com/raspberrypi/linux/pull/3687 ---- - drivers/spi/spi-bcm2835.c | 37 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 37 insertions(+) - ---- a/drivers/spi/spi-bcm2835.c -+++ b/drivers/spi/spi-bcm2835.c -@@ -1241,6 +1241,43 @@ 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; -+ -+ /* -+ * Retrieve the corresponding GPIO line used for CS. -+ * The inversion semantics will be handled by the GPIO core -+ * code, so we pass GPIOS_OUT_LOW for "unasserted" and -+ * the correct flag for inversion semantics. The SPI_CS_HIGH -+ * on spi->mode cannot be checked for polarity in this case -+ * as the flag use_gpio_descriptors enforces SPI_CS_HIGH. -+ */ -+ if (of_property_read_bool(spi->dev.of_node, "spi-cs-high")) -+ lflags = GPIO_ACTIVE_HIGH; -+ else -+ lflags = GPIO_ACTIVE_LOW; -+ spi->cs_gpiod = gpiochip_request_own_desc(chip, 8 - spi->chip_select, -+ DRV_NAME, -+ lflags, -+ 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; - } - |