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: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>

authored by Michael Hennerich and committed by Grant Likely 73e1ac16 782a8956

+8 -5
+8 -5
drivers/spi/spi_bfin5xx.c
··· 1108 } 1109 1110 if (chip->chip_select_num >= MAX_CTRL_CS) { 1111 - ret = gpio_request(chip->cs_gpio, spi->modalias); 1112 - if (ret) { 1113 - dev_err(&spi->dev, "gpio_request() error\n"); 1114 - goto pin_error; 1115 } 1116 - gpio_direction_output(chip->cs_gpio, 1); 1117 } 1118 1119 dev_dbg(&spi->dev, "setup spi chip %s, width is %d, dma is %d\n",
··· 1108 } 1109 1110 if (chip->chip_select_num >= MAX_CTRL_CS) { 1111 + /* Only request on first setup */ 1112 + if (spi_get_ctldata(spi) == NULL) { 1113 + ret = gpio_request(chip->cs_gpio, spi->modalias); 1114 + if (ret) { 1115 + dev_err(&spi->dev, "gpio_request() error\n"); 1116 + goto pin_error; 1117 + } 1118 + gpio_direction_output(chip->cs_gpio, 1); 1119 } 1120 } 1121 1122 dev_dbg(&spi->dev, "setup spi chip %s, width is %d, dma is %d\n",