dmaengine: axi-dmac: wrap channel parameter adjust into function
authorAlexandru Ardelean <alexandru.ardelean@analog.com>
Tue, 25 Aug 2020 15:19:49 +0000 (18:19 +0300)
committerVinod Koul <vkoul@kernel.org>
Tue, 25 Aug 2020 15:37:11 +0000 (21:07 +0530)
The channel parameters (which are read from the device-tree) are adjusted
for the DMAEngine framework in the axi_dmac_parse_chan_dt() function, after
they are read from the device-tree.

When we want to read these from registers, we will need to use the same
logic, so this change splits the logic into a separate function.

Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Link: https://lore.kernel.org/r/20200825151950.57605-6-alexandru.ardelean@analog.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/dma-axi-dmac.c

index 1a1e227..7ee56ae 100644 (file)
@@ -717,6 +717,20 @@ static const struct regmap_config axi_dmac_regmap_config = {
        .writeable_reg = axi_dmac_regmap_rdwr,
 };
 
+static void axi_dmac_adjust_chan_params(struct axi_dmac_chan *chan)
+{
+       chan->address_align_mask = max(chan->dest_width, chan->src_width) - 1;
+
+       if (axi_dmac_dest_is_mem(chan) && axi_dmac_src_is_mem(chan))
+               chan->direction = DMA_MEM_TO_MEM;
+       else if (!axi_dmac_dest_is_mem(chan) && axi_dmac_src_is_mem(chan))
+               chan->direction = DMA_MEM_TO_DEV;
+       else if (axi_dmac_dest_is_mem(chan) && !axi_dmac_src_is_mem(chan))
+               chan->direction = DMA_DEV_TO_MEM;
+       else
+               chan->direction = DMA_DEV_TO_DEV;
+}
+
 /*
  * The configuration stored in the devicetree matches the configuration
  * parameters of the peripheral instance and allows the driver to know which
@@ -760,16 +774,7 @@ static int axi_dmac_parse_chan_dt(struct device_node *of_chan,
                return ret;
        chan->dest_width = val / 8;
 
-       chan->address_align_mask = max(chan->dest_width, chan->src_width) - 1;
-
-       if (axi_dmac_dest_is_mem(chan) && axi_dmac_src_is_mem(chan))
-               chan->direction = DMA_MEM_TO_MEM;
-       else if (!axi_dmac_dest_is_mem(chan) && axi_dmac_src_is_mem(chan))
-               chan->direction = DMA_MEM_TO_DEV;
-       else if (axi_dmac_dest_is_mem(chan) && !axi_dmac_src_is_mem(chan))
-               chan->direction = DMA_DEV_TO_MEM;
-       else
-               chan->direction = DMA_DEV_TO_DEV;
+       axi_dmac_adjust_chan_params(chan);
 
        return 0;
 }