From: Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: Barry Song <21cnbao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
pawel.moll-5wv7dgnIgG8@public.gmane.org,
mark.rutland-5wv7dgnIgG8@public.gmane.org,
ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org,
galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
workgroup.linux-kQvG35nSl+M@public.gmane.org,
Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>,
Barry Song <Baohua.Song-kQvG35nSl+M@public.gmane.org>
Subject: Re: [PATCH v5] dmaengine: sirf: enable generic dt binding for dma channels
Date: Wed, 19 Mar 2014 20:13:59 +0530 [thread overview]
Message-ID: <20140319144359.GI1976@intel.com> (raw)
In-Reply-To: <1389190369-2012-1-git-send-email-21cnbao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
On Sun, Jan 26, 2014 at 10:08:45AM +0800, Barry Song wrote:
> From: Barry Song <Baohua.Song-kQvG35nSl+M@public.gmane.org>
>
> move to support of_dma_request_slave_channel() and dma_request_slave_channel.
> we add a xlate() to let dma clients be able to find right dma_chan by generic
> "dmas" properties in dts.
>
> Cc: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>
> Cc: Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>
> Signed-off-by: Barry Song <Baohua.Song-kQvG35nSl+M@public.gmane.org>
I tried applying this but it failed to apply.
Can you pls rebase quickly and resend. While at it pls add the Acks recived!
--
~Vinod
> ---
> -v5:
> add Acked-by: vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org;
> cc devicetree guys as Acked from dt was required
>
> .../devicetree/bindings/dma/sirfsoc-dma.txt | 43 ++++++++++++++++++++
> arch/arm/boot/dts/atlas6.dtsi | 2 +
> arch/arm/boot/dts/prima2.dtsi | 2 +
> drivers/dma/sirf-dma.c | 23 ++++++++++
> 4 files changed, 70 insertions(+), 0 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/dma/sirfsoc-dma.txt
>
> diff --git a/Documentation/devicetree/bindings/dma/sirfsoc-dma.txt b/Documentation/devicetree/bindings/dma/sirfsoc-dma.txt
> new file mode 100644
> index 0000000..ecbc96a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/dma/sirfsoc-dma.txt
> @@ -0,0 +1,43 @@
> +* CSR SiRFSoC DMA controller
> +
> +See dma.txt first
> +
> +Required properties:
> +- compatible: Should be "sirf,prima2-dmac" or "sirf,marco-dmac"
> +- reg: Should contain DMA registers location and length.
> +- interrupts: Should contain one interrupt shared by all channel
> +- #dma-cells: must be <1>. used to represent the number of integer
> + cells in the dmas property of client device.
> +- clocks: clock required
> +
> +Example:
> +
> +Controller:
> +dmac0: dma-controller@b00b0000 {
> + compatible = "sirf,prima2-dmac";
> + reg = <0xb00b0000 0x10000>;
> + interrupts = <12>;
> + clocks = <&clks 24>;
> + #dma-cells = <1>;
> +};
> +
> +
> +Client:
> +Fill the specific dma request line in dmas. In the below example, spi0 read
> +channel request line is 9 of the 2nd dma controller, while write channel uses
> +4 of the 2nd dma controller; spi1 read channel request line is 12 of the 1st
> +dma controller, while write channel uses 13 of the 1st dma controller:
> +
> +spi0: spi@b00d0000 {
> + compatible = "sirf,prima2-spi";
> + dmas = <&dmac1 9>,
> + <&dmac1 4>;
> + dma-names = "rx", "tx";
> +};
> +
> +spi1: spi@b0170000 {
> + compatible = "sirf,prima2-spi";
> + dmas = <&dmac0 12>,
> + <&dmac0 13>;
> + dma-names = "rx", "tx";
> +};
> diff --git a/arch/arm/boot/dts/atlas6.dtsi b/arch/arm/boot/dts/atlas6.dtsi
> index b63cfef..4f41f0a 100644
> --- a/arch/arm/boot/dts/atlas6.dtsi
> +++ b/arch/arm/boot/dts/atlas6.dtsi
> @@ -260,6 +260,7 @@
> reg = <0xb00b0000 0x10000>;
> interrupts = <12>;
> clocks = <&clks 24>;
> + #dma-cells = <1>;
> };
>
> dmac1: dma-controller@b0160000 {
> @@ -268,6 +269,7 @@
> reg = <0xb0160000 0x10000>;
> interrupts = <13>;
> clocks = <&clks 25>;
> + #dma-cells = <1>;
> };
>
> vip@b00C0000 {
> diff --git a/arch/arm/boot/dts/prima2.dtsi b/arch/arm/boot/dts/prima2.dtsi
> index b292a5c..19e4e22 100644
> --- a/arch/arm/boot/dts/prima2.dtsi
> +++ b/arch/arm/boot/dts/prima2.dtsi
> @@ -277,6 +277,7 @@
> reg = <0xb00b0000 0x10000>;
> interrupts = <12>;
> clocks = <&clks 24>;
> + #dma-cells = <1>;
> };
>
> dmac1: dma-controller@b0160000 {
> @@ -285,6 +286,7 @@
> reg = <0xb0160000 0x10000>;
> interrupts = <13>;
> clocks = <&clks 25>;
> + #dma-cells = <1>;
> };
>
> vip@b00C0000 {
> diff --git a/drivers/dma/sirf-dma.c b/drivers/dma/sirf-dma.c
> index 6aec3ad..8b74c0d 100644
> --- a/drivers/dma/sirf-dma.c
> +++ b/drivers/dma/sirf-dma.c
> @@ -18,6 +18,7 @@
> #include <linux/of_device.h>
> #include <linux/of_platform.h>
> #include <linux/clk.h>
> +#include <linux/of_dma.h>
> #include <linux/sirfsoc_dma.h>
>
> #include "dmaengine.h"
> @@ -640,6 +641,18 @@ bool sirfsoc_dma_filter_id(struct dma_chan *chan, void *chan_id)
> }
> EXPORT_SYMBOL(sirfsoc_dma_filter_id);
>
> +static struct dma_chan *of_dma_sirfsoc_xlate(struct of_phandle_args *dma_spec,
> + struct of_dma *ofdma)
> +{
> + struct sirfsoc_dma *sdma = ofdma->of_dma_data;
> + unsigned int request = dma_spec->args[0];
> +
> + if (request > SIRFSOC_DMA_CHANNELS)
> + return NULL;
> +
> + return dma_get_slave_channel(&sdma->channels[request].chan);
> +}
> +
> static int sirfsoc_dma_probe(struct platform_device *op)
> {
> struct device_node *dn = op->dev.of_node;
> @@ -744,11 +757,20 @@ static int sirfsoc_dma_probe(struct platform_device *op)
> if (ret)
> goto free_irq;
>
> + /* Device-tree DMA controller registration */
> + ret = of_dma_controller_register(dn, of_dma_sirfsoc_xlate, sdma);
> + if (ret) {
> + dev_err(dev, "failed to register DMA controller\n");
> + goto unreg_dma_dev;
> + }
> +
> pm_runtime_enable(&op->dev);
> dev_info(dev, "initialized SIRFSOC DMAC driver\n");
>
> return 0;
>
> +unreg_dma_dev:
> + dma_async_device_unregister(dma);
> free_irq:
> free_irq(sdma->irq, sdma);
> irq_dispose:
> @@ -761,6 +783,7 @@ static int sirfsoc_dma_remove(struct platform_device *op)
> struct device *dev = &op->dev;
> struct sirfsoc_dma *sdma = dev_get_drvdata(dev);
>
> + of_dma_controller_free(op->dev.of_node);
> dma_async_device_unregister(&sdma->dma);
> free_irq(sdma->irq, sdma);
> irq_dispose_mapping(sdma->irq);
> --
> 1.7.5.4
>
>
--
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-03-19 14:43 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-26 2:08 [PATCH v5] dmaengine: sirf: enable generic dt binding for dma channels Barry Song
[not found] ` <20140120074857.GJ26823@intel.com>
[not found] ` <CAGsJ_4zcwCx0RNMNx8YaDBFtGE=02-B79+WKDGeky80X5agcuw@mail.gmail.com>
[not found] ` <CAGsJ_4zcwCx0RNMNx8YaDBFtGE=02-B79+WKDGeky80X5agcuw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-03-01 2:49 ` [PATCH v4] " Barry Song
[not found] ` <CAGsJ_4zMYGTS4CyCsTAH_5PMK3v4Pr+e88YjXL=d3A=EjPf9rQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-03-17 4:51 ` Vinod Koul
[not found] ` <20140317045105.GB1976-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-03-18 2:02 ` Barry Song
2014-03-18 12:20 ` Arnd Bergmann
[not found] ` <1389190369-2012-1-git-send-email-21cnbao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-03-19 14:43 ` Vinod Koul [this message]
[not found] ` <20140319144359.GI1976-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-03-27 8:03 ` [PATCH v5] " Barry Song
[not found] ` <CAGsJ_4yVXN2pT-QCjWLx7bCM7rau=UAnkCY8k9QqEPOkMAcrXA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-03-29 13:51 ` Vinod Koul
-- strict thread matches above, loose matches on Subject: below --
2014-01-26 2:08 Barry Song
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=20140319144359.GI1976@intel.com \
--to=vinod.koul-ral2jqcrhueavxtiumwx3w@public.gmane.org \
--cc=21cnbao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=Baohua.Song-kQvG35nSl+M@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
--cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
--cc=lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org \
--cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
--cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=workgroup.linux-kQvG35nSl+M@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).