| From 80df4b7c27a1b26d31ddb7987bb92ee2b5fdb1e0 Mon Sep 17 00:00:00 2001 |
| From: Gregory CLEMENT <gregory.clement@bootlin.com> |
| Date: Thu, 17 Oct 2019 16:18:41 +0200 |
| Subject: [PATCH] spi: atmel: Fix CS high support |
| |
| commit 7cbb16b2122c09f2ae393a1542fed628505b9da6 upstream. |
| |
| Until a few years ago, this driver was only used with CS GPIO. The |
| only exception is CS0 on AT91RM9200 which has to use internal CS. A |
| limitation of the internal CS is that they don't support CS High. |
| |
| So by using the CS GPIO the CS high configuration was available except |
| for the particular case CS0 on RM9200. |
| |
| When the support for the internal chip-select was added, the check of |
| the CS high support was not updated. Due to this the driver accepts |
| this configuration for all the SPI controller v2 (used by all SoCs |
| excepting the AT91RM9200) whereas the hardware doesn't support it for |
| infernal CS. |
| |
| This patch fixes the test to match the hardware capabilities. |
| |
| Fixes: 4820303480a1 ("spi: atmel: add support for the internal chip-select of the spi controller") |
| Cc: <stable@vger.kernel.org> |
| Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com> |
| Link: https://lore.kernel.org/r/20191017141846.7523-3-gregory.clement@bootlin.com |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c |
| index f00b367523cd..6a4540ba65ba 100644 |
| --- a/drivers/spi/spi-atmel.c |
| +++ b/drivers/spi/spi-atmel.c |
| @@ -1182,10 +1182,8 @@ static int atmel_spi_setup(struct spi_device *spi) |
| as = spi_master_get_devdata(spi->master); |
| |
| /* see notes above re chipselect */ |
| - if (!atmel_spi_is_v2(as) |
| - && spi->chip_select == 0 |
| - && (spi->mode & SPI_CS_HIGH)) { |
| - dev_dbg(&spi->dev, "setup: can't be active-high\n"); |
| + if (!as->use_cs_gpios && (spi->mode & SPI_CS_HIGH)) { |
| + dev_warn(&spi->dev, "setup: non GPIO CS can't be active-high\n"); |
| return -EINVAL; |
| } |
| |
| -- |
| 2.7.4 |
| |