From: Felix Fietkau Date: Sat, 9 Feb 2019 23:38:25 +0000 (+0100) Subject: spi: use gpio[d]_set_value_cansleep for setting chipselect GPIO X-Git-Tag: v5.4-rc1~382^2~63^2~35 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=28f7604f48c1cbb69e9c45bc53c84b6ad1f7fa77;p=platform%2Fkernel%2Flinux-rpi.git spi: use gpio[d]_set_value_cansleep for setting chipselect GPIO Sleeping is safe inside spi_transfer_one_message, and some GPIO chips are running on slow busses (such as I2C GPIO expanders) and need to sleep for setting values. Signed-off-by: Felix Fietkau Signed-off-by: Linus Walleij Signed-off-by: Mark Brown --- diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 2f7176f..93986f8 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -786,9 +786,10 @@ static void spi_set_cs(struct spi_device *spi, bool enable) */ if (!(spi->mode & SPI_NO_CS)) { if (spi->cs_gpiod) - gpiod_set_value(spi->cs_gpiod, !enable); + gpiod_set_value_cansleep(spi->cs_gpiod, + !enable); else - gpio_set_value(spi->cs_gpio, !enable); + gpio_set_value_cansleep(spi->cs_gpio, !enable); } /* Some SPI masters need both GPIO CS & slave_select */ if ((spi->controller->flags & SPI_MASTER_GPIO_SS) &&