Thread (7 messages) 7 messages, 3 authors, 2024-02-08

Re: [PATCH v2 2/4] spi: s3c64xx: prepare for a different flavor of iowrite rep

From: Sam Protsenko <semen.protsenko@linaro.org>
Date: 2024-02-07 15:44:38
Also in: linux-devicetree, linux-samsung-soc, linux-spi, lkml

On Wed, Feb 7, 2024 at 5:15 AM Tudor Ambarus [off-list ref] wrote:
There are SoCs (gs101) that allow only 32 bit register accesses. As the
requirement is rare enough, for those SoCs we'll open code in the driver
some s3c64xx_iowrite{8,16}_32_rep() accessors. Prepare for such addition.

Suggested-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
quoted hunk ↗ jump to hunk
 drivers/spi/spi-s3c64xx.c | 35 +++++++++++++++++++++--------------
 1 file changed, 21 insertions(+), 14 deletions(-)
diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index 7f7eb8f742e4..eb79c6e4f509 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -414,6 +414,26 @@ static bool s3c64xx_spi_can_dma(struct spi_controller *host,

 }

+static void s3c64xx_iowrite_rep(const struct s3c64xx_spi_driver_data *sdd,
+                               struct spi_transfer *xfer)
+{
+       void __iomem *addr = sdd->regs + S3C64XX_SPI_TX_DATA;
+       const void *buf = xfer->tx_buf;
+       unsigned int len = xfer->len;
+
+       switch (sdd->cur_bpw) {
+       case 32:
+               iowrite32_rep(addr, buf, len / 4);
+               break;
+       case 16:
+               iowrite16_rep(addr, buf, len / 2);
+               break;
+       default:
+               iowrite8_rep(addr, buf, len);
+               break;
+       }
+}
+
 static int s3c64xx_enable_datapath(struct s3c64xx_spi_driver_data *sdd,
                                    struct spi_transfer *xfer, int dma_mode)
 {
@@ -447,20 +467,7 @@ static int s3c64xx_enable_datapath(struct s3c64xx_spi_driver_data *sdd,
                        modecfg |= S3C64XX_SPI_MODE_TXDMA_ON;
                        ret = prepare_dma(&sdd->tx_dma, &xfer->tx_sg);
                } else {
-                       switch (sdd->cur_bpw) {
-                       case 32:
-                               iowrite32_rep(regs + S3C64XX_SPI_TX_DATA,
-                                       xfer->tx_buf, xfer->len / 4);
-                               break;
-                       case 16:
-                               iowrite16_rep(regs + S3C64XX_SPI_TX_DATA,
-                                       xfer->tx_buf, xfer->len / 2);
-                               break;
-                       default:
-                               iowrite8_rep(regs + S3C64XX_SPI_TX_DATA,
-                                       xfer->tx_buf, xfer->len);
-                               break;
-                       }
+                       s3c64xx_iowrite_rep(sdd, xfer);
                }
        }

--
2.43.0.687.g38aa6559b0-goog
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help