]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
spi: rzv2h-rspi: split out PIO transfer
authorCosmin Tanislav <cosmin-gabriel.tanislav.xa@renesas.com>
Mon, 1 Dec 2025 13:42:25 +0000 (15:42 +0200)
committerMark Brown <broonie@kernel.org>
Sun, 14 Dec 2025 10:38:35 +0000 (19:38 +0900)
In preparation for implementing DMA support, split out the PIO transfer
code into its own function.

Signed-off-by: Cosmin Tanislav <cosmin-gabriel.tanislav.xa@renesas.com>
Link: https://patch.msgid.link/20251201134229.600817-10-cosmin-gabriel.tanislav.xa@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-rzv2h-rspi.c

index b31ef2f31f1b415b70b46b6a42d601835d6db6cb..9f5bc047b485788d7b65320c5cfeb60a937c7e81 100644 (file)
@@ -219,17 +219,14 @@ static int rzv2h_rspi_receive(struct rzv2h_rspi_priv *rspi, void *rxbuf,
        return 0;
 }
 
-static int rzv2h_rspi_transfer_one(struct spi_controller *controller,
+static int rzv2h_rspi_transfer_pio(struct rzv2h_rspi_priv *rspi,
                                   struct spi_device *spi,
-                                  struct spi_transfer *transfer)
+                                  struct spi_transfer *transfer,
+                                  unsigned int words_to_transfer)
 {
-       struct rzv2h_rspi_priv *rspi = spi_controller_get_devdata(controller);
-       unsigned int words_to_transfer, i;
+       unsigned int i;
        int ret = 0;
 
-       transfer->effective_speed_hz = rspi->freq;
-       words_to_transfer = transfer->len / rspi->bytes_per_word;
-
        for (i = 0; i < words_to_transfer; i++) {
                rzv2h_rspi_clear_all_irqs(rspi);
 
@@ -240,6 +237,22 @@ static int rzv2h_rspi_transfer_one(struct spi_controller *controller,
                        break;
        }
 
+       return ret;
+}
+
+static int rzv2h_rspi_transfer_one(struct spi_controller *controller,
+                                  struct spi_device *spi,
+                                  struct spi_transfer *transfer)
+{
+       struct rzv2h_rspi_priv *rspi = spi_controller_get_devdata(controller);
+       unsigned int words_to_transfer;
+       int ret;
+
+       transfer->effective_speed_hz = rspi->freq;
+       words_to_transfer = transfer->len / rspi->bytes_per_word;
+
+       ret = rzv2h_rspi_transfer_pio(rspi, spi, transfer, words_to_transfer);
+
        rzv2h_rspi_clear_all_irqs(rspi);
 
        return ret;