From 73c8d727c2bc423aaa2c187bbe5ff75148e7d285 Mon Sep 17 00:00:00 2001 From: Phil Elwell 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 --- drivers/spi/spi-bcm2835.c | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c index 0eb7486..e5c5146 100644 --- a/drivers/spi/spi-bcm2835.c +++ b/drivers/spi/spi-bcm2835.c @@ -1279,43 +1279,6 @@ static int bcm2835_spi_setup(struct spi_device *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; } -- 2.7.4