spi: spi-s3c64xx: Ensure cur_speed holds actual clock value
authorŁukasz Stelmach <l.stelmach@samsung.com>
Fri, 2 Oct 2020 12:22:41 +0000 (14:22 +0200)
committerMark Brown <broonie@kernel.org>
Fri, 2 Oct 2020 20:54:22 +0000 (21:54 +0100)
Make sure the cur_speed value used in s3c64xx_enable_datapath()
to configure DMA channel and in s3c64xx_wait_for_*() to calculate the
transfer timeout is set to the actual value of (half) the clock speed.

Don't change non-CMU case, because no frequency calculation errors have
been reported.

Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Suggested-by: Tomasz Figa <tomasz.figa@gmail.com>
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Link: https://lore.kernel.org/r/20201002122243.26849-8-l.stelmach@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-s3c64xx.c

index f85f40f..0bd3e23 100644 (file)
@@ -626,6 +626,7 @@ static int s3c64xx_spi_config(struct s3c64xx_spi_driver_data *sdd)
                ret = clk_set_rate(sdd->src_clk, sdd->cur_speed * 2);
                if (ret)
                        return ret;
+               sdd->cur_speed = clk_get_rate(sdd->src_clk) / 2;
        } else {
                /* Configure Clock */
                val = readl(regs + S3C64XX_SPI_CLK_CFG);