]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
spi: microchip-core-qspi: stop checking viability of op->max_freq in supports_op...
authorConor Dooley <conor.dooley@microchip.com>
Mon, 25 Aug 2025 11:53:28 +0000 (12:53 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 29 Aug 2025 11:39:11 +0000 (13:39 +0200)
In commit 13529647743d9 ("spi: microchip-core-qspi: Support per spi-mem
operation frequency switches") the logic for checking the viability of
op->max_freq in mchp_coreqspi_setup_clock() was copied into
mchp_coreqspi_supports_op(). Unfortunately, op->max_freq is not valid
when this function is called during probe but is instead zero.
Accordingly, baud_rate_val is calculated to be INT_MAX due to division
by zero, causing probe of the attached memory device to fail.

Seemingly spi-microchip-core-qspi was the only driver that had such a
modification made to its supports_op callback when the per_op_freq
capability was added, so just remove it to restore prior functionality.

CC: stable@vger.kernel.org
Reported-by: Valentina Fernandez <valentina.fernandezalanis@microchip.com>
Fixes: 13529647743d9 ("spi: microchip-core-qspi: Support per spi-mem operation frequency switches")
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Message-ID: <20250825-during-ploy-939bdd068593@spud>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-microchip-core-qspi.c

index d13a9b755c7f8a0d3d51ef88f8851f831a4f0bdb..8dc98b17f77b587a7c7420534faf25d045120375 100644 (file)
@@ -531,10 +531,6 @@ error:
 
 static bool mchp_coreqspi_supports_op(struct spi_mem *mem, const struct spi_mem_op *op)
 {
-       struct mchp_coreqspi *qspi = spi_controller_get_devdata(mem->spi->controller);
-       unsigned long clk_hz;
-       u32 baud_rate_val;
-
        if (!spi_mem_default_supports_op(mem, op))
                return false;
 
@@ -557,14 +553,6 @@ static bool mchp_coreqspi_supports_op(struct spi_mem *mem, const struct spi_mem_
                        return false;
        }
 
-       clk_hz = clk_get_rate(qspi->clk);
-       if (!clk_hz)
-               return false;
-
-       baud_rate_val = DIV_ROUND_UP(clk_hz, 2 * op->max_freq);
-       if (baud_rate_val > MAX_DIVIDER || baud_rate_val < MIN_DIVIDER)
-               return false;
-
        return true;
 }