| From 26f02d1df85087af80830720cbc5792e009c76ee Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 20 Apr 2021 19:44:24 +0300 |
| Subject: spi: Allow to have all native CSs in use along with GPIOs |
| |
| From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
| |
| [ Upstream commit dbaca8e56ea3f23fa215f48c2d46dd03ede06e02 ] |
| |
| The commit 7d93aecdb58d ("spi: Add generic support for unused native cs |
| with cs-gpios") excludes the valid case for the controllers that doesn't |
| need to switch native CS in order to perform the transfer, i.e. when |
| |
| 0 native |
| ... ... |
| <n> - 1 native |
| <n> GPIO |
| <n> + 1 GPIO |
| ... ... |
| |
| where <n> defines maximum of native CSs supported by the controller. |
| |
| To allow this, bail out from spi_get_gpio_descs() conditionally for |
| the controllers which explicitly marked with SPI_MASTER_GPIO_SS. |
| |
| Fixes: 7d93aecdb58d ("spi: Add generic support for unused native cs with cs-gpios") |
| Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
| Link: https://lore.kernel.org/r/20210420164425.40287-1-andriy.shevchenko@linux.intel.com |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/spi/spi.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c |
| index bd8b1f79dce2..a1a85f0baf7c 100644 |
| --- a/drivers/spi/spi.c |
| +++ b/drivers/spi/spi.c |
| @@ -2615,8 +2615,9 @@ static int spi_get_gpio_descs(struct spi_controller *ctlr) |
| } |
| |
| ctlr->unused_native_cs = ffz(native_cs_mask); |
| - if (num_cs_gpios && ctlr->max_native_cs && |
| - ctlr->unused_native_cs >= ctlr->max_native_cs) { |
| + |
| + if ((ctlr->flags & SPI_MASTER_GPIO_SS) && num_cs_gpios && |
| + ctlr->max_native_cs && ctlr->unused_native_cs >= ctlr->max_native_cs) { |
| dev_err(dev, "No unused native chip select available\n"); |
| return -EINVAL; |
| } |
| -- |
| 2.30.2 |
| |