diff mbox

[v3,2/3] dmaengine: cppi41: Add support of DA8xx to CPPI 4.1

Message ID 20170119111334.14718-3-abailon@baylibre.com (mailing list archive)
State Superseded
Headers show

Commit Message

Alexandre Bailon Jan. 19, 2017, 11:13 a.m. UTC
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>
---
 drivers/dma/Kconfig  |  6 +++---
 drivers/dma/cppi41.c | 24 ++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 3 deletions(-)

Comments

Sergei Shtylyov Jan. 19, 2017, 6:15 p.m. UTC | #1
On 01/19/2017 02:13 PM, Alexandre Bailon wrote:

> 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>
> ---
>  drivers/dma/Kconfig  |  6 +++---
>  drivers/dma/cppi41.c | 24 ++++++++++++++++++++++++
>  2 files changed, 27 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
> index 0d6a96e..03ae2a1 100644
> --- a/drivers/dma/Kconfig
> +++ b/drivers/dma/Kconfig
> @@ -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 "CPPI41 DMA support"

    Grr... CPPI 4.1, please.

> +	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
> diff --git a/drivers/dma/cppi41.c b/drivers/dma/cppi41.c
> index 9767b97..f6f2d84 100644
> --- a/drivers/dma/cppi41.c
> +++ b/drivers/dma/cppi41.c
[...]
> @@ -951,8 +965,18 @@ static const struct cppi_glue_infos am335x_usb_infos = {
>  	.qmgr_num_pend = 5,
>  };
>
> +static const struct cppi_glue_infos da8xx_usb_infos = {
> +	.isr = cppi41_irq,

    Isn't the ISR the same for all glues now?

[...]

MBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexandre Bailon Jan. 23, 2017, 2:28 p.m. UTC | #2
On 01/19/2017 07:15 PM, Sergei Shtylyov wrote:
> On 01/19/2017 02:13 PM, Alexandre Bailon wrote:
>
> > 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>
> > ---
> >  drivers/dma/Kconfig  |  6 +++---
> >  drivers/dma/cppi41.c | 24 ++++++++++++++++++++++++
> >  2 files changed, 27 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
> > index 0d6a96e..03ae2a1 100644
> > --- a/drivers/dma/Kconfig
> > +++ b/drivers/dma/Kconfig
> > @@ -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 "CPPI41 DMA support"
>
>    Grr... CPPI 4.1, please.
>
> > +    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
> > diff --git a/drivers/dma/cppi41.c b/drivers/dma/cppi41.c
> > index 9767b97..f6f2d84 100644
> > --- a/drivers/dma/cppi41.c
> > +++ b/drivers/dma/cppi41.c
> [...]
> > @@ -951,8 +965,18 @@ static const struct cppi_glue_infos
> > am335x_usb_infos = {
> >      .qmgr_num_pend = 5,
> >  };
> >
> > +static const struct cppi_glue_infos da8xx_usb_infos = {
> > +    .isr = cppi41_irq,
>
>    Isn't the ISR the same for all glues now?
True. I should remove isr callback.
>
> [...]
>
> MBR, Sergei
>

--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index 0d6a96e..03ae2a1 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -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 "CPPI41 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
diff --git a/drivers/dma/cppi41.c b/drivers/dma/cppi41.c
index 9767b97..f6f2d84 100644
--- a/drivers/dma/cppi41.c
+++ b/drivers/dma/cppi41.c
@@ -221,6 +221,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 {
 	irqreturn_t (*isr)(int irq, void *data);
 	const struct chan_queues *queues_rx;
@@ -951,8 +965,18 @@  static const struct cppi_glue_infos am335x_usb_infos = {
 	.qmgr_num_pend = 5,
 };
 
+static const struct cppi_glue_infos da8xx_usb_infos = {
+	.isr = cppi41_irq,
+	.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);