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

Commit d9dda5a1 authored by Ezequiel Garcia's avatar Ezequiel Garcia Committed by Mark Brown
Browse files

spi: spi-gpio: Use 'cansleep' variants to access GPIO



The GPIO chip in use could be of any kind, and therefore might sleep
when accesing the GPIO lines. Take account of this by using cansleep
instead, which is the most generic case.

Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 6ce4eac1
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -115,17 +115,17 @@ spi_to_pdata(const struct spi_device *spi)


static inline void setsck(const struct spi_device *spi, int is_on)
static inline void setsck(const struct spi_device *spi, int is_on)
{
{
	gpio_set_value(SPI_SCK_GPIO, is_on);
	gpio_set_value_cansleep(SPI_SCK_GPIO, is_on);
}
}


static inline void setmosi(const struct spi_device *spi, int is_on)
static inline void setmosi(const struct spi_device *spi, int is_on)
{
{
	gpio_set_value(SPI_MOSI_GPIO, is_on);
	gpio_set_value_cansleep(SPI_MOSI_GPIO, is_on);
}
}


static inline int getmiso(const struct spi_device *spi)
static inline int getmiso(const struct spi_device *spi)
{
{
	return !!gpio_get_value(SPI_MISO_GPIO);
	return !!gpio_get_value_cansleep(SPI_MISO_GPIO);
}
}


#undef pdata
#undef pdata
@@ -229,7 +229,7 @@ static void spi_gpio_chipselect(struct spi_device *spi, int is_active)


	if (cs != SPI_GPIO_NO_CHIPSELECT) {
	if (cs != SPI_GPIO_NO_CHIPSELECT) {
		/* SPI is normally active-low */
		/* SPI is normally active-low */
		gpio_set_value(cs, (spi->mode & SPI_CS_HIGH) ? is_active : !is_active);
		gpio_set_value_cansleep(cs, (spi->mode & SPI_CS_HIGH) ? is_active : !is_active);
	}
	}
}
}