diff options
author | David Lechner <david@lechnology.com> | 2018-09-12 20:39:20 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2018-09-17 17:19:00 -0400 |
commit | a3762b13a596642586051d877efc80ff043bc42a (patch) | |
tree | 211825783b982d4ce886140b299cc8697e25a33c | |
parent | 926369667732577cd7ca85f28ced8ef8d0964285 (diff) |
spi: spi-davinci: Add support for SPI_CS_WORD
This adds support for the SPI_CS_WORD flag to the TI DaVinci SPI
driver. This mode can be used as long as we are using the hardware
chip select and not a GPIO chip select.
Signed-off-by: David Lechner <david@lechnology.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | drivers/spi/spi-davinci.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/spi/spi-davinci.c b/drivers/spi/spi-davinci.c index ce0e67d4bfb9..205f763c7383 100644 --- a/drivers/spi/spi-davinci.c +++ b/drivers/spi/spi-davinci.c | |||
@@ -230,7 +230,8 @@ static void davinci_spi_chipselect(struct spi_device *spi, int value) | |||
230 | !(spi->mode & SPI_CS_HIGH)); | 230 | !(spi->mode & SPI_CS_HIGH)); |
231 | } else { | 231 | } else { |
232 | if (value == BITBANG_CS_ACTIVE) { | 232 | if (value == BITBANG_CS_ACTIVE) { |
233 | spidat1 |= SPIDAT1_CSHOLD_MASK; | 233 | if (!(spi->mode & SPI_CS_WORD)) |
234 | spidat1 |= SPIDAT1_CSHOLD_MASK; | ||
234 | spidat1 &= ~(0x1 << chip_sel); | 235 | spidat1 &= ~(0x1 << chip_sel); |
235 | } | 236 | } |
236 | } | 237 | } |
@@ -438,8 +439,12 @@ static int davinci_spi_setup(struct spi_device *spi) | |||
438 | return retval; | 439 | return retval; |
439 | } | 440 | } |
440 | 441 | ||
441 | if (internal_cs) | 442 | if (internal_cs) { |
442 | set_io_bits(dspi->base + SPIPC0, 1 << spi->chip_select); | 443 | set_io_bits(dspi->base + SPIPC0, 1 << spi->chip_select); |
444 | } else if (spi->mode & SPI_CS_WORD) { | ||
445 | dev_err(&spi->dev, "SPI_CS_WORD can't be use with GPIO CS\n"); | ||
446 | return -EINVAL; | ||
447 | } | ||
443 | } | 448 | } |
444 | 449 | ||
445 | if (spi->mode & SPI_READY) | 450 | if (spi->mode & SPI_READY) |
@@ -974,7 +979,7 @@ static int davinci_spi_probe(struct platform_device *pdev) | |||
974 | dspi->prescaler_limit = pdata->prescaler_limit; | 979 | dspi->prescaler_limit = pdata->prescaler_limit; |
975 | dspi->version = pdata->version; | 980 | dspi->version = pdata->version; |
976 | 981 | ||
977 | dspi->bitbang.flags = SPI_NO_CS | SPI_LSB_FIRST | SPI_LOOP; | 982 | dspi->bitbang.flags = SPI_NO_CS | SPI_LSB_FIRST | SPI_LOOP | SPI_CS_WORD; |
978 | if (dspi->version == SPI_VERSION_2) | 983 | if (dspi->version == SPI_VERSION_2) |
979 | dspi->bitbang.flags |= SPI_READY; | 984 | dspi->bitbang.flags |= SPI_READY; |
980 | 985 | ||