dmaengine: cppi41: Add support of DA8xx to CPPI 4.1
authorAlexandre Bailon <abailon@baylibre.com>
Mon, 30 Jan 2017 17:49:20 +0000 (18:49 +0100)
committerVinod Koul <vinod.koul@intel.com>
Tue, 7 Mar 2017 08:12:27 +0000 (13:42 +0530)
The DA8xx has a CPPI 4.1 DMA controller.
This is add the glue layer required to make it work on DA8xx.

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/Kconfig
drivers/dma/cppi41.c

index d01d598..fc3435c 100644 (file)
@@ -514,12 +514,12 @@ config TIMB_DMA
          Enable support for the Timberdale FPGA DMA engine.
 
 config TI_CPPI41
-       tristate "AM33xx CPPI41 DMA support"
-       depends on ARCH_OMAP
+       tristate "CPPI 4.1 DMA support"
+       depends on (ARCH_OMAP || ARCH_DAVINCI_DA8XX)
        select DMA_ENGINE
        help
          The Communications Port Programming Interface (CPPI) 4.1 DMA engine
-         is currently used by the USB driver on AM335x platforms.
+         is currently used by the USB driver on AM335x and DA8xx platforms.
 
 config TI_DMA_CROSSBAR
        bool
index 4573080..135fb45 100644 (file)
@@ -223,6 +223,20 @@ static const struct chan_queues am335x_usb_queues_rx[] = {
        [29] = { .submit = 30, .complete = 155},
 };
 
+static const struct chan_queues da8xx_usb_queues_tx[] = {
+       [0] = { .submit =  16, .complete = 24},
+       [1] = { .submit =  18, .complete = 24},
+       [2] = { .submit =  20, .complete = 24},
+       [3] = { .submit =  22, .complete = 24},
+};
+
+static const struct chan_queues da8xx_usb_queues_rx[] = {
+       [0] = { .submit =  1, .complete = 26},
+       [1] = { .submit =  3, .complete = 26},
+       [2] = { .submit =  5, .complete = 26},
+       [3] = { .submit =  7, .complete = 26},
+};
+
 struct cppi_glue_infos {
        const struct chan_queues *queues_rx;
        const struct chan_queues *queues_tx;
@@ -971,8 +985,17 @@ static const struct cppi_glue_infos am335x_usb_infos = {
        .qmgr_num_pend = 5,
 };
 
+static const struct cppi_glue_infos da8xx_usb_infos = {
+       .queues_rx = da8xx_usb_queues_rx,
+       .queues_tx = da8xx_usb_queues_tx,
+       .td_queue = { .submit = 31, .complete = 0 },
+       .first_completion_queue = 24,
+       .qmgr_num_pend = 2,
+};
+
 static const struct of_device_id cppi41_dma_ids[] = {
        { .compatible = "ti,am3359-cppi41", .data = &am335x_usb_infos},
+       { .compatible = "ti,da830-cppi41", .data = &da8xx_usb_infos},
        {},
 };
 MODULE_DEVICE_TABLE(of, cppi41_dma_ids);