spi-rockchip: Fix register out of bounds access
authorLuis de Arquer <luis.dearquer@inertim.com>
Fri, 21 Mar 2025 12:57:53 +0000 (13:57 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 26 Mar 2025 13:31:00 +0000 (13:31 +0000)
Do not write native chip select stuff for GPIO chip selects.
GPIOs can be numbered much higher than native CS.
Also, it makes no sense.

Signed-off-by: Luis de Arquer <luis.dearquer@inertim.com>
Link: https://patch.msgid.link/365ccddfba110549202b3520f4401a6a936e82a8.camel@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-rockchip.c

index 1bc012fce7cb8de6411f3788d04f3a3f28ba559f..1a6381de6f33d7018eb00842fa9ee8cd8f1f01f7 100644 (file)
@@ -547,7 +547,7 @@ static int rockchip_spi_config(struct rockchip_spi *rs,
        cr0 |= (spi->mode & 0x3U) << CR0_SCPH_OFFSET;
        if (spi->mode & SPI_LSB_FIRST)
                cr0 |= CR0_FBM_LSB << CR0_FBM_OFFSET;
-       if (spi->mode & SPI_CS_HIGH)
+       if ((spi->mode & SPI_CS_HIGH) && !(spi_get_csgpiod(spi, 0)))
                cr0 |= BIT(spi_get_chipselect(spi, 0)) << CR0_SOI_OFFSET;
 
        if (xfer->rx_buf && xfer->tx_buf)