spi: spi-fsl-lpspi: Fix off-by-one in prescale max
authorStefan Wahren <wahrenst@gmx.net>
Thu, 5 Sep 2024 11:15:37 +0000 (13:15 +0200)
committerMark Brown <broonie@kernel.org>
Thu, 5 Sep 2024 11:55:59 +0000 (12:55 +0100)
The commit 783bf5d09f86 ("spi: spi-fsl-lpspi: limit PRESCALE bit in
TCR register") doesn't implement the prescaler maximum as intended.
The maximum allowed value for i.MX93 should be 1 and for i.MX7ULP
it should be 7. So this needs also a adjustment of the comparison
in the scldiv calculation.

Fixes: 783bf5d09f86 ("spi: spi-fsl-lpspi: limit PRESCALE bit in TCR register")
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Link: https://patch.msgid.link/20240905111537.90389-1-wahrenst@gmx.net
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-fsl-lpspi.c

index 350c5d91d869f63ce75332e8295b128e9ed7f72e..8ecb426be45c75e1337451f4a34d83fc3bdb6f78 100644 (file)
@@ -136,7 +136,7 @@ static struct fsl_lpspi_devtype_data imx93_lpspi_devtype_data = {
 };
 
 static struct fsl_lpspi_devtype_data imx7ulp_lpspi_devtype_data = {
-       .prescale_max = 8,
+       .prescale_max = 7,
 };
 
 static const struct of_device_id fsl_lpspi_dt_ids[] = {
@@ -336,7 +336,7 @@ static int fsl_lpspi_set_bitrate(struct fsl_lpspi_data *fsl_lpspi)
 
        div = DIV_ROUND_UP(perclk_rate, config.speed_hz);
 
-       for (prescale = 0; prescale < prescale_max; prescale++) {
+       for (prescale = 0; prescale <= prescale_max; prescale++) {
                scldiv = div / (1 << prescale) - 2;
                if (scldiv < 256) {
                        fsl_lpspi->config.prescale = prescale;