spi: stm32: qspi: Fix dual flash mode sanity test in stm32_qspi_setup()
authorPatrice Chotard <patrice.chotard@foss.st.com>
Tue, 18 Jun 2024 13:29:49 +0000 (15:29 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jun 2024 11:49:13 +0000 (13:49 +0200)
commit c2bd0791c5f02e964402624dfff45ca8995f5397 upstream.

Misplaced parenthesis make test of mode wrong in case mode is equal to
SPI_TX_OCTAL or SPI_RX_OCTAL.

Simplify this sanity test, if one of this bit is set, property
cs-gpio must be present in DT.

Fixes: a557fca630cc ("spi: stm32_qspi: Add transfer_one_message() spi callback")
Cc: stable@vger.kernel.org
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Link: https://msgid.link/r/20240618132951.2743935-2-patrice.chotard@foss.st.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/spi/spi-stm32-qspi.c

index def74ae9b5f641a401301bc64125c8c759f2cf42..8ee6b3e182be0fcb4d033857c5a0853542030ef4 100644 (file)
@@ -653,9 +653,7 @@ static int stm32_qspi_setup(struct spi_device *spi)
                return -EINVAL;
 
        mode = spi->mode & (SPI_TX_OCTAL | SPI_RX_OCTAL);
-       if ((mode == SPI_TX_OCTAL || mode == SPI_RX_OCTAL) ||
-           ((mode == (SPI_TX_OCTAL | SPI_RX_OCTAL)) &&
-           gpiod_count(qspi->dev, "cs") == -ENOENT)) {
+       if (mode && gpiod_count(qspi->dev, "cs") == -ENOENT) {
                dev_err(qspi->dev, "spi-rx-bus-width\\/spi-tx-bus-width\\/cs-gpios\n");
                dev_err(qspi->dev, "configuration not supported\n");
 
@@ -676,10 +674,10 @@ static int stm32_qspi_setup(struct spi_device *spi)
        qspi->cr_reg = CR_APMS | 3 << CR_FTHRES_SHIFT | CR_SSHIFT | CR_EN;
 
        /*
-        * Dual flash mode is only enable in case SPI_TX_OCTAL and SPI_TX_OCTAL
-        * are both set in spi->mode and "cs-gpios" properties is found in DT
+        * Dual flash mode is only enable in case SPI_TX_OCTAL or SPI_RX_OCTAL
+        * is set in spi->mode and "cs-gpios" properties is found in DT
         */
-       if (mode == (SPI_TX_OCTAL | SPI_RX_OCTAL)) {
+       if (mode) {
                qspi->cr_reg |= CR_DFM;
                dev_dbg(qspi->dev, "Dual flash mode enable");
        }