]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: talitos - move dma mapping code in talitos_submit() into a standalone dma_map...
authorPaul Louvel <paul.louvel@bootlin.com>
Thu, 7 May 2026 14:41:50 +0000 (16:41 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 15 May 2026 10:08:47 +0000 (18:08 +0800)
Previously added code to talitos_submit() in order to map an entire
descriptor chain.

Move that code into a standalone function to improve readability.

Cc: stable@vger.kernel.org
Signed-off-by: Paul Louvel <paul.louvel@bootlin.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/talitos.c

index cffd4a2bd5872959bc7e527307ded27b23d1420c..d8f838add0ffb57c30021df908b1053c7db34b0b 100644 (file)
@@ -255,6 +255,46 @@ static int init_device(struct device *dev)
        return 0;
 }
 
+static void dma_map_request(struct device *dev, struct talitos_request *request,
+                           struct talitos_desc *desc, bool is_sec1)
+{
+       struct talitos_edesc *edesc =
+               container_of(desc, struct talitos_edesc, desc);
+       dma_addr_t dma_desc, prev_dma_desc;
+       struct talitos_edesc *prev_edesc = NULL;
+
+       if (is_sec1) {
+               while (edesc) {
+                       edesc->desc.hdr1 = edesc->desc.hdr;
+
+                       dma_desc = dma_map_single(dev, &edesc->desc.hdr1,
+                                                 TALITOS_DESC_SIZE,
+                                                 DMA_BIDIRECTIONAL);
+
+                       if (!prev_edesc) {
+                               request->dma_desc = dma_desc;
+                               goto next;
+                       }
+
+                       /* Chain in any previous descriptors. */
+
+                       prev_edesc->desc.next_desc = cpu_to_be32(dma_desc);
+
+                       dma_sync_single_for_device(dev, prev_dma_desc,
+                                                  TALITOS_DESC_SIZE,
+                                                  DMA_TO_DEVICE);
+
+next:
+                       prev_edesc = edesc;
+                       prev_dma_desc = dma_desc;
+                       edesc = edesc->next_desc;
+               }
+       } else {
+               request->dma_desc = dma_map_single(dev, desc, TALITOS_DESC_SIZE,
+                                                  DMA_BIDIRECTIONAL);
+       }
+}
+
 /**
  * talitos_submit - submits a descriptor to the device for processing
  * @dev:       the SEC device to be used
@@ -273,10 +313,7 @@ static int talitos_submit(struct device *dev, int ch, struct talitos_desc *desc,
                                           void *context, int error),
                          void *context)
 {
-       struct talitos_edesc *edesc = container_of(desc, struct talitos_edesc, desc);
        struct talitos_private *priv = dev_get_drvdata(dev);
-       dma_addr_t dma_desc, prev_dma_desc;
-       struct talitos_edesc *prev_edesc = NULL;
        struct talitos_request *request;
        unsigned long flags;
        int head;
@@ -294,37 +331,7 @@ static int talitos_submit(struct device *dev, int ch, struct talitos_desc *desc,
        request = &priv->chan[ch].fifo[head];
 
        /* map descriptor and save caller data */
-       if (is_sec1) {
-               while (edesc) {
-                       edesc->desc.hdr1 = edesc->desc.hdr;
-
-                       dma_desc = dma_map_single(dev, &edesc->desc.hdr1,
-                                                 TALITOS_DESC_SIZE,
-                                                 DMA_BIDIRECTIONAL);
-
-                       if (!prev_edesc) {
-                               request->dma_desc = dma_desc;
-                               goto next;
-                       }
-
-                       /* Chain in any previous descriptors. */
-
-                       prev_edesc->desc.next_desc = cpu_to_be32(dma_desc);
-
-                       dma_sync_single_for_device(dev, prev_dma_desc,
-                                                  TALITOS_DESC_SIZE,
-                                                  DMA_TO_DEVICE);
-
-next:
-                       prev_edesc = edesc;
-                       prev_dma_desc = dma_desc;
-                       edesc = edesc->next_desc;
-               }
-       } else {
-               request->dma_desc = dma_map_single(dev, desc,
-                                                  TALITOS_DESC_SIZE,
-                                                  DMA_BIDIRECTIONAL);
-       }
+       dma_map_request(dev, request, desc, is_sec1);
        request->callback = callback;
        request->context = context;