spi: intel: Check number of chip selects after reading the descriptor
authorMika Westerberg <mika.westerberg@linux.intel.com>
Wed, 15 Feb 2023 11:00:40 +0000 (13:00 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 15 Feb 2023 13:10:42 +0000 (13:10 +0000)
The flash decriptor contains the number of flash components that we use
to figure out how many flash chips there are connected. Therefore we
need to read it first before deciding how many chip selects the
controller has.

Reported-by: Marcin Witkowski <marcin.witkowski@intel.com>
Fixes: 3f03c618bebb ("spi: intel: Add support for second flash chip")
Cc: stable@vger.kernel.org
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Link: https://lore.kernel.org/r/20230215110040.42186-1-mika.westerberg@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-intel.c

index f619212b0d5c377f706d14052a4224dd11f4198c..627287925fedbab4a6897722e810a89526b4a690 100644 (file)
@@ -1368,14 +1368,14 @@ static int intel_spi_populate_chip(struct intel_spi *ispi)
        if (!spi_new_device(ispi->master, &chip))
                return -ENODEV;
 
-       /* Add the second chip if present */
-       if (ispi->master->num_chipselect < 2)
-               return 0;
-
        ret = intel_spi_read_desc(ispi);
        if (ret)
                return ret;
 
+       /* Add the second chip if present */
+       if (ispi->master->num_chipselect < 2)
+               return 0;
+
        chip.platform_data = NULL;
        chip.chip_select = 1;