]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
spi: imx: add SPI_NO_CS support
authorOleksij Rempel <o.rempel@pengutronix.de>
Tue, 25 Jul 2017 07:57:09 +0000 (09:57 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 26 Jul 2017 12:10:01 +0000 (13:10 +0100)
To run spi-loopback-tests on HW without modifications, we need to
disable Chip Select. This should avoid surprising side effects for SPI devices
by testing patterns.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-imx.c

index 424dd013451e3ea0ba762d5bbdc50cefeef2c140..930e47597db34962fe23073243a418c72d160010 100644 (file)
@@ -813,6 +813,9 @@ static void spi_imx_chipselect(struct spi_device *spi, int is_active)
        int active = is_active != BITBANG_CS_INACTIVE;
        int dev_is_lowactive = !(spi->mode & SPI_CS_HIGH);
 
+       if (spi->mode & SPI_NO_CS)
+               return;
+
        if (!gpio_is_valid(spi->cs_gpio))
                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__,
                 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))
                gpio_direction_output(spi->cs_gpio,
                                      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->prepare_message = spi_imx_prepare_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) ||
            is_imx53_ecspi(spi_imx))
                spi_imx->bitbang.master->mode_bits |= SPI_LOOP | SPI_READY;