Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73e1ac16 authored by Michael Hennerich's avatar Michael Hennerich Committed by Grant Likely
Browse files

spi/bfin_spi: only request GPIO on first load



The gpiolib code does not allow people to do gpio_request() on a GPIO
once it has already been requested.  So make sure we only request the
pin on the first setup of a SPI device.  Otherwise, if you attempts to
reconfigure a SPI device on the fly (like change bit sizes), the setup
function incorrectly fails.

Signed-off-by: default avatarMichael Hennerich <michael.hennerich@analog.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
parent 782a8956
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -1108,6 +1108,8 @@ static int bfin_spi_setup(struct spi_device *spi)
	}

	if (chip->chip_select_num >= MAX_CTRL_CS) {
		/* Only request on first setup */
		if (spi_get_ctldata(spi) == NULL) {
			ret = gpio_request(chip->cs_gpio, spi->modalias);
			if (ret) {
				dev_err(&spi->dev, "gpio_request() error\n");
@@ -1115,6 +1117,7 @@ static int bfin_spi_setup(struct spi_device *spi)
			}
			gpio_direction_output(chip->cs_gpio, 1);
		}
	}

	dev_dbg(&spi->dev, "setup spi chip %s, width is %d, dma is %d\n",
			spi->modalias, spi->bits_per_word, chip->enable_dma);