|
@@ -813,6 +813,9 @@ static void spi_imx_chipselect(struct spi_device *spi, int is_active)
|
|
|
int active = is_active != BITBANG_CS_INACTIVE;
|
|
int active = is_active != BITBANG_CS_INACTIVE;
|
|
|
int dev_is_lowactive = !(spi->mode & SPI_CS_HIGH);
|
|
int dev_is_lowactive = !(spi->mode & SPI_CS_HIGH);
|
|
|
|
|
|
|
|
|
|
+ if (spi->mode & SPI_NO_CS)
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
if (!gpio_is_valid(spi->cs_gpio))
|
|
if (!gpio_is_valid(spi->cs_gpio))
|
|
|
return;
|
|
return;
|
|
|
|
|
|
|
@@ -1139,6 +1142,9 @@ static int spi_imx_setup(struct spi_device *spi)
|
|
|
dev_dbg(&spi->dev, "%s: mode %d, %u bpw, %d hz\n", __func__,
|
|
dev_dbg(&spi->dev, "%s: mode %d, %u bpw, %d hz\n", __func__,
|
|
|
spi->mode, spi->bits_per_word, spi->max_speed_hz);
|
|
spi->mode, spi->bits_per_word, spi->max_speed_hz);
|
|
|
|
|
|
|
|
|
|
+ if (spi->mode & SPI_NO_CS)
|
|
|
|
|
+ return 0;
|
|
|
|
|
+
|
|
|
if (gpio_is_valid(spi->cs_gpio))
|
|
if (gpio_is_valid(spi->cs_gpio))
|
|
|
gpio_direction_output(spi->cs_gpio,
|
|
gpio_direction_output(spi->cs_gpio,
|
|
|
spi->mode & SPI_CS_HIGH ? 0 : 1);
|
|
spi->mode & SPI_CS_HIGH ? 0 : 1);
|
|
@@ -1238,7 +1244,8 @@ static int spi_imx_probe(struct platform_device *pdev)
|
|
|
spi_imx->bitbang.master->cleanup = spi_imx_cleanup;
|
|
spi_imx->bitbang.master->cleanup = spi_imx_cleanup;
|
|
|
spi_imx->bitbang.master->prepare_message = spi_imx_prepare_message;
|
|
spi_imx->bitbang.master->prepare_message = spi_imx_prepare_message;
|
|
|
spi_imx->bitbang.master->unprepare_message = spi_imx_unprepare_message;
|
|
spi_imx->bitbang.master->unprepare_message = spi_imx_unprepare_message;
|
|
|
- spi_imx->bitbang.master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH;
|
|
|
|
|
|
|
+ spi_imx->bitbang.master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH \
|
|
|
|
|
+ | SPI_NO_CS;
|
|
|
if (is_imx35_cspi(spi_imx) || is_imx51_ecspi(spi_imx) ||
|
|
if (is_imx35_cspi(spi_imx) || is_imx51_ecspi(spi_imx) ||
|
|
|
is_imx53_ecspi(spi_imx))
|
|
is_imx53_ecspi(spi_imx))
|
|
|
spi_imx->bitbang.master->mode_bits |= SPI_LOOP | SPI_READY;
|
|
spi_imx->bitbang.master->mode_bits |= SPI_LOOP | SPI_READY;
|