All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
Cc: Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Dan Williams
	<dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Grant Likely
	<grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
	dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 2/3] dmaengine: sun6i: Add support for Allwinner A23 (sun8i) variant
Date: Tue, 16 Sep 2014 12:35:40 +0200	[thread overview]
Message-ID: <20140916103540.GF9948@lukather> (raw)
In-Reply-To: <1410616381-30226-3-git-send-email-wens-jdAy2FN1RRM@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 3729 bytes --]

On Sat, Sep 13, 2014 at 09:53:00PM +0800, Chen-Yu Tsai wrote:
> The A23 SoC has the same dma engine as the A31 (sun6i), with a
> reduced amount of endpoints and physical channels. Add the proper
> config data and compatible string to support it.
> 
> A slight difference in sun8i is an undocumented register needs
> to be toggled for dma to function.
> 
> Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
> ---
>  Documentation/devicetree/bindings/dma/sun6i-dma.txt |  2 +-
>  drivers/dma/Kconfig                                 |  4 ++--
>  drivers/dma/sun6i-dma.c                             | 20 ++++++++++++++++++++
>  3 files changed, 23 insertions(+), 3 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/dma/sun6i-dma.txt b/Documentation/devicetree/bindings/dma/sun6i-dma.txt
> index 3e145c1..9cdcba24d 100644
> --- a/Documentation/devicetree/bindings/dma/sun6i-dma.txt
> +++ b/Documentation/devicetree/bindings/dma/sun6i-dma.txt
> @@ -4,7 +4,7 @@ This driver follows the generic DMA bindings defined in dma.txt.
>  
>  Required properties:
>  
> -- compatible:	Must be "allwinner,sun6i-a31-dma"
> +- compatible:	Must be "allwinner,sun6i-a31-dma" or "allwinner,sun8i-a23-dma"
>  - reg:		Should contain the registers base address and length
>  - interrupts:	Should contain a reference to the interrupt used by this device
>  - clocks:	Should contain a reference to the parent AHB clock
> diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
> index 9b1ea0e..5361aa7 100644
> --- a/drivers/dma/Kconfig
> +++ b/drivers/dma/Kconfig
> @@ -395,12 +395,12 @@ config XILINX_VDMA
>  
>  config DMA_SUN6I
>  	tristate "Allwinner A31 SoCs DMA support"
> -	depends on MACH_SUN6I || COMPILE_TEST
> +	depends on MACH_SUN6I || MACH_SUN8I || COMPILE_TEST
>  	depends on RESET_CONTROLLER
>  	select DMA_ENGINE
>  	select DMA_VIRTUAL_CHANNELS
>  	help
> -	  Support for the DMA engine for Allwinner A31 SoCs.
> +	  Support for the DMA engine first found in Allwinner A31 SoCs.
>  
>  config NBPFAXI_DMA
>  	tristate "Renesas Type-AXI NBPF DMA support"
> diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c
> index 89ca0c4..29667dd 100644
> --- a/drivers/dma/sun6i-dma.c
> +++ b/drivers/dma/sun6i-dma.c
> @@ -878,8 +878,20 @@ static struct sun6i_dma_config sun6i_a31_dma_cfg = {
>  	.nr_max_vchans   = 53,
>  };
>  
> +/*
> + * The A23 only has 8 physical channels, a maximum DRQ port id of 24,
> + * and a total of 37 usable source and destination endpoints.
> + */
> +
> +static struct sun6i_dma_config sun8i_a23_dma_cfg = {
> +	.nr_max_channels = 8,
> +	.nr_max_requests = 24,
> +	.nr_max_vchans   = 37,
> +};
> +
>  static struct of_device_id sun6i_dma_match[] = {
>  	{ .compatible = "allwinner,sun6i-a31-dma", .data = &sun6i_a31_dma_cfg },
> +	{ .compatible = "allwinner,sun8i-a23-dma", .data = &sun8i_a23_dma_cfg },
>  	{ /* sentinel */ }
>  };
>  
> @@ -1008,6 +1020,14 @@ static int sun6i_dma_probe(struct platform_device *pdev)
>  		goto err_dma_unregister;
>  	}
>  
> +	/*
> +	 * sun8i variant requires us to toggle an undocumented register,
> +	 * as seen in Allwinner's SDK.

The BSP I have has this:

static void sunxi_dma_hw_init(struct sunxi_dmadev *dev)
{
        struct sunxi_dmadev *sunxi_dev = dev;

        clk_prepare_enable(sunxi_dev->ahb_clk);
#ifdef CONFIG_ARCH_SUN8IW3
        writel(0x04, sunxi_dev->base + DMA_GATE);
#endif
}

/* All is ok, and open the clock */
sunxi_dma_hw_init(sunxi_dev);

So I guess we can say that it's not that undocumented :)

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: maxime.ripard@free-electrons.com (Maxime Ripard)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/3] dmaengine: sun6i: Add support for Allwinner A23 (sun8i) variant
Date: Tue, 16 Sep 2014 12:35:40 +0200	[thread overview]
Message-ID: <20140916103540.GF9948@lukather> (raw)
In-Reply-To: <1410616381-30226-3-git-send-email-wens@csie.org>

On Sat, Sep 13, 2014 at 09:53:00PM +0800, Chen-Yu Tsai wrote:
> The A23 SoC has the same dma engine as the A31 (sun6i), with a
> reduced amount of endpoints and physical channels. Add the proper
> config data and compatible string to support it.
> 
> A slight difference in sun8i is an undocumented register needs
> to be toggled for dma to function.
> 
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> ---
>  Documentation/devicetree/bindings/dma/sun6i-dma.txt |  2 +-
>  drivers/dma/Kconfig                                 |  4 ++--
>  drivers/dma/sun6i-dma.c                             | 20 ++++++++++++++++++++
>  3 files changed, 23 insertions(+), 3 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/dma/sun6i-dma.txt b/Documentation/devicetree/bindings/dma/sun6i-dma.txt
> index 3e145c1..9cdcba24d 100644
> --- a/Documentation/devicetree/bindings/dma/sun6i-dma.txt
> +++ b/Documentation/devicetree/bindings/dma/sun6i-dma.txt
> @@ -4,7 +4,7 @@ This driver follows the generic DMA bindings defined in dma.txt.
>  
>  Required properties:
>  
> -- compatible:	Must be "allwinner,sun6i-a31-dma"
> +- compatible:	Must be "allwinner,sun6i-a31-dma" or "allwinner,sun8i-a23-dma"
>  - reg:		Should contain the registers base address and length
>  - interrupts:	Should contain a reference to the interrupt used by this device
>  - clocks:	Should contain a reference to the parent AHB clock
> diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
> index 9b1ea0e..5361aa7 100644
> --- a/drivers/dma/Kconfig
> +++ b/drivers/dma/Kconfig
> @@ -395,12 +395,12 @@ config XILINX_VDMA
>  
>  config DMA_SUN6I
>  	tristate "Allwinner A31 SoCs DMA support"
> -	depends on MACH_SUN6I || COMPILE_TEST
> +	depends on MACH_SUN6I || MACH_SUN8I || COMPILE_TEST
>  	depends on RESET_CONTROLLER
>  	select DMA_ENGINE
>  	select DMA_VIRTUAL_CHANNELS
>  	help
> -	  Support for the DMA engine for Allwinner A31 SoCs.
> +	  Support for the DMA engine first found in Allwinner A31 SoCs.
>  
>  config NBPFAXI_DMA
>  	tristate "Renesas Type-AXI NBPF DMA support"
> diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c
> index 89ca0c4..29667dd 100644
> --- a/drivers/dma/sun6i-dma.c
> +++ b/drivers/dma/sun6i-dma.c
> @@ -878,8 +878,20 @@ static struct sun6i_dma_config sun6i_a31_dma_cfg = {
>  	.nr_max_vchans   = 53,
>  };
>  
> +/*
> + * The A23 only has 8 physical channels, a maximum DRQ port id of 24,
> + * and a total of 37 usable source and destination endpoints.
> + */
> +
> +static struct sun6i_dma_config sun8i_a23_dma_cfg = {
> +	.nr_max_channels = 8,
> +	.nr_max_requests = 24,
> +	.nr_max_vchans   = 37,
> +};
> +
>  static struct of_device_id sun6i_dma_match[] = {
>  	{ .compatible = "allwinner,sun6i-a31-dma", .data = &sun6i_a31_dma_cfg },
> +	{ .compatible = "allwinner,sun8i-a23-dma", .data = &sun8i_a23_dma_cfg },
>  	{ /* sentinel */ }
>  };
>  
> @@ -1008,6 +1020,14 @@ static int sun6i_dma_probe(struct platform_device *pdev)
>  		goto err_dma_unregister;
>  	}
>  
> +	/*
> +	 * sun8i variant requires us to toggle an undocumented register,
> +	 * as seen in Allwinner's SDK.

The BSP I have has this:

static void sunxi_dma_hw_init(struct sunxi_dmadev *dev)
{
        struct sunxi_dmadev *sunxi_dev = dev;

        clk_prepare_enable(sunxi_dev->ahb_clk);
#ifdef CONFIG_ARCH_SUN8IW3
        writel(0x04, sunxi_dev->base + DMA_GATE);
#endif
}

/* All is ok, and open the clock */
sunxi_dma_hw_init(sunxi_dev);

So I guess we can say that it's not that undocumented :)

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140916/c7ec9596/attachment.sig>

  parent reply	other threads:[~2014-09-16 10:35 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-13 13:52 [PATCH 0/3] ARM: sun8i: Add DMA controller support Chen-Yu Tsai
2014-09-13 13:52 ` Chen-Yu Tsai
     [not found] ` <1410616381-30226-1-git-send-email-wens-jdAy2FN1RRM@public.gmane.org>
2014-09-13 13:52   ` [PATCH 1/3] dmaengine: sun6i: support parameterized compatible strings Chen-Yu Tsai
2014-09-13 13:52     ` Chen-Yu Tsai
     [not found]     ` <1410616381-30226-2-git-send-email-wens-jdAy2FN1RRM@public.gmane.org>
2014-09-16 10:33       ` Maxime Ripard
2014-09-16 10:33         ` Maxime Ripard
2014-09-13 13:53   ` [PATCH 2/3] dmaengine: sun6i: Add support for Allwinner A23 (sun8i) variant Chen-Yu Tsai
2014-09-13 13:53     ` Chen-Yu Tsai
     [not found]     ` <1410616381-30226-3-git-send-email-wens-jdAy2FN1RRM@public.gmane.org>
2014-09-16 10:35       ` Maxime Ripard [this message]
2014-09-16 10:35         ` Maxime Ripard
2014-09-16 14:13         ` Chen-Yu Tsai
2014-09-16 14:13           ` Chen-Yu Tsai
     [not found]           ` <CAGb2v67jokpXHxR26YoCEB2Y_v07oQZXZfPuGJC_wO=r-SRZhg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-09-17 15:55             ` Maxime Ripard
2014-09-17 15:55               ` Maxime Ripard
2014-09-18  1:57               ` Chen-Yu Tsai
2014-09-18  1:57                 ` Chen-Yu Tsai
2014-09-13 13:53   ` [PATCH 3/3] ARM: dts: sun8i: Add DMA controller node Chen-Yu Tsai
2014-09-13 13:53     ` Chen-Yu Tsai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140916103540.GF9948@lukather \
    --to=maxime.ripard-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@public.gmane.org \
    --cc=dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=wens-jdAy2FN1RRM@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.