mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-20 22:23:27 +00:00
a1383655cf
Tested on bcm2710 (Raspberry Pi 3B). Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
60 lines
1.8 KiB
Diff
60 lines
1.8 KiB
Diff
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
|
|
@@ -1279,43 +1279,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;
|
|
-
|
|
- /*
|
|
- * 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;
|
|
}
|
|
|