dmaengine: xilinx_dma: Extend dma_config structure to store max channel count
authorRadhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
Thu, 30 Jan 2020 12:54:24 +0000 (18:24 +0530)
committerVinod Koul <vkoul@kernel.org>
Tue, 25 Feb 2020 05:47:53 +0000 (11:17 +0530)
Extend dma_config structure to store the max channel count. This input is
used to populate dma device channel nodes at the fixed offset. It serves
as a preparatory patch for removing dma channel DT node order dependency,
added in the subsequent commit.

Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
Link: https://lore.kernel.org/r/1580388865-9960-2-git-send-email-radhey.shyam.pandey@xilinx.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/xilinx/xilinx_dma.c

index 6f1539cad1eede581550d9e2a6e5c49dbe368d76..2281af30beeb3fee9f18c6fe86059c36df007118 100644 (file)
 #define XILINX_VDMA_ENABLE_VERTICAL_FLIP       BIT(0)
 
 /* HW specific definitions */
-#define XILINX_DMA_MAX_CHANS_PER_DEVICE        0x20
+#define XILINX_MCDMA_MAX_CHANS_PER_DEVICE      0x20
+#define XILINX_DMA_MAX_CHANS_PER_DEVICE                0x2
+#define XILINX_CDMA_MAX_CHANS_PER_DEVICE       0x1
 
 #define XILINX_DMA_DMAXR_ALL_IRQ_MASK  \
                (XILINX_DMA_DMASR_FRM_CNT_IRQ | \
@@ -468,6 +470,7 @@ struct xilinx_dma_config {
                        struct clk **tx_clk, struct clk **txs_clk,
                        struct clk **rx_clk, struct clk **rxs_clk);
        irqreturn_t (*irq_handler)(int irq, void *data);
+       const int max_channels;
 };
 
 /**
@@ -2939,23 +2942,27 @@ static const struct xilinx_dma_config axidma_config = {
        .dmatype = XDMA_TYPE_AXIDMA,
        .clk_init = axidma_clk_init,
        .irq_handler = xilinx_dma_irq_handler,
+       .max_channels = XILINX_DMA_MAX_CHANS_PER_DEVICE,
 };
 
 static const struct xilinx_dma_config aximcdma_config = {
        .dmatype = XDMA_TYPE_AXIMCDMA,
        .clk_init = axidma_clk_init,
        .irq_handler = xilinx_mcdma_irq_handler,
+       .max_channels = XILINX_MCDMA_MAX_CHANS_PER_DEVICE,
 };
 static const struct xilinx_dma_config axicdma_config = {
        .dmatype = XDMA_TYPE_CDMA,
        .clk_init = axicdma_clk_init,
        .irq_handler = xilinx_dma_irq_handler,
+       .max_channels = XILINX_CDMA_MAX_CHANS_PER_DEVICE,
 };
 
 static const struct xilinx_dma_config axivdma_config = {
        .dmatype = XDMA_TYPE_VDMA,
        .clk_init = axivdma_clk_init,
        .irq_handler = xilinx_dma_irq_handler,
+       .max_channels = XILINX_DMA_MAX_CHANS_PER_DEVICE,
 };
 
 static const struct of_device_id xilinx_dma_of_ids[] = {