From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
To: Viresh Kumar <viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Vinod Koul <vinod.koul-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
spear-devel <spear-devel-nkJGhpqTU55BDgjK7y7TUQ@public.gmane.org>,
Andy Shevchenko
<andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH 1/5] dmaengine: dw_dmac: move to generic DMA binding
Date: Tue, 29 Jan 2013 10:35:30 +0000 [thread overview]
Message-ID: <201301291035.30265.arnd@arndb.de> (raw)
In-Reply-To: <CAKohpomO6tYNYLdMOaJYgqGecXj5KMQprdb=gExi+QuGrtLTzw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On Tuesday 29 January 2013, Viresh Kumar wrote:
> > diff --git a/Documentation/devicetree/bindings/dma/snps-dma.txt b/Documentation/devicetree/bindings/dma/snps-dma.txt
> > index 5bb3dfb..212d387 100644
> > --- a/Documentation/devicetree/bindings/dma/snps-dma.txt
> > +++ b/Documentation/devicetree/bindings/dma/snps-dma.txt
> > @@ -3,59 +3,62 @@
> > Required properties:
> > - compatible: "snps,dma-spear1340"
> > - reg: Address range of the DMAC registers
> > -- interrupt-parent: Should be the phandle for the interrupt controller
> > - that services interrupts for this device
> > - interrupt: Should contain the DMAC interrupt number
> > -- nr_channels: Number of channels supported by hardware
> > -- is_private: The device channels should be marked as private and not for by the
> > - general purpose DMA channel allocator. False if not passed.
> > +- dma-channels: Number of channels supported by hardware
> > +- dma-requests: Number of DMA request lines supported
> > +- dma-masters: Number of AHB masters supported by the controller
> > +- #dma-cells: must be <3>
>
> Shouldn't this be 4? Would be better to mention what fields are these,
> right here. I have seen them below though.
Correct. I changed these a couple of times while trying to understand
what the fields are, and I missed this instance. I'm still not sure
whether we actually need all four fields, or what the simplest format
for them would be. This just mirrors what you had in your binding.
> > -bool dw_dma_generic_filter(struct dma_chan *chan, void *param)
> > +/* forward declaration used in filter */
> > +static struct platform_driver dw_driver;
>
> extern? This is not a declaration but definition.
No. You can have multiple declarations for a static symbol like this,
but only one of them with an initilizer. I usually recommend against
doing this myself, because it's confusing and somewhat bad style, but
it is correct C.
> > - /*
> > - * dmaengine framework calls this routine for all channels of all dma
> > - * controller, until true is returned. If 'param' bus_id is not
> > - * registered with a dma controller (dw), then there is no need of
> > - * running below function for all channels of dw.
> > - *
> > - * This block of code does this by saving the parameters of last
> > - * failure. If dw and param are same, i.e. trying on same dw with
> > - * different channel, return false.
> > - */
> > - if ((last_dw == dw) && (last_bus_id == param))
> > + /* both the driver and the device must match */
> > + if (chan->device->dev->driver != &dw_driver.driver)
> > + return false;
>
> Can this ever happen? Isn't it the case that this routine would be called
> only for dw_dmac?
I think not. AFAIK the filter function will be called for each channel
on each DMA engine until one of them matches.
> > - while (++i < dw->sd_count) {
> > - if (!strcmp(dw->sd[i].bus_id, param)) {
> > - chan->private = &dw->sd[i];
> > - last_dw = NULL;
> > - last_bus_id = NULL;
> > + /* FIXME: memory leak! could we put this into dw_dma_chan? */
> > + sd = devm_kzalloc(dw->dma.dev, sizeof (*sd), GFP_KERNEL);
>
> Yes.
Yes it can be in dw_dma_chan or yes it is a memory leak?
> > +static struct dma_chan *dw_dma_xlate(struct of_phandle_args *dma_spec,
> > + struct of_dma *ofdma)
> > +{
> > + struct dw_dma *dw = ofdma->of_dma_data;
> > + struct dw_dma_filter_args fargs = {
> > + .dw = dw,
> > + };
> > + dma_cap_mask_t cap;
> > +
> > + if (dma_spec->args_count != 4)
>
> args_count contains count of all params leaving the phandle?
That was my interpretation from reading the code, but I have not tried it.
> > + /* FIXME: This binding is rather clumsy. Can't we use the
> > + request line numbers here instead? */
>
> yes.
Ok, Very good. What is the encoding of the registers then?
> > + fargs.cfg_lo = be32_to_cpup(dma_spec->args+0);
> > + fargs.cfg_hi = be32_to_cpup(dma_spec->args+1);
> > + fargs.src = be32_to_cpup(dma_spec->args+2);
> > + fargs.dst = be32_to_cpup(dma_spec->args+3);
> > +
> > + dma_cap_zero(cap);
> > + dma_cap_set(DMA_SLAVE, cap);
> > + /* FIXME: there should be a simpler way to do this */
> > + return dma_request_channel(cap, dw_dma_generic_filter, &dma_spec->args[0]);
>
> don't you need to send &fargs as the last argument?
Right, my mistake.
Thanks a lot for the input. When I fix the above, are actually able
to test the changes, or have you lost access to the hardware when
leaving ST?
Arnd
next prev parent reply other threads:[~2013-01-29 10:35 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-28 17:57 [PATCH 0/5] dmaengine: convert dw_dmac/spear13xx to generic binding Arnd Bergmann
[not found] ` <1359395857-1235-1-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-01-28 17:57 ` [PATCH 1/5] dmaengine: dw_dmac: move to generic DMA binding Arnd Bergmann
2013-01-28 17:57 ` [PATCH 2/5] spi: pl022: use generic DMA slave configuration if possible Arnd Bergmann
[not found] ` <1359395857-1235-3-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-02-05 14:22 ` Grant Likely
2013-02-07 18:27 ` Linus Walleij
2013-01-28 17:57 ` [PATCH 3/5] serial: pl011: " Arnd Bergmann
[not found] ` <1359395857-1235-4-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-02-05 14:22 ` Grant Likely
2013-01-28 17:57 ` [PATCH 4/5] ata: arasan: remove the need for platform_data Arnd Bergmann
2013-01-28 17:57 ` [PATCH 5/5] ARM: SPEAr13xx: Pass generic DW DMAC platform data from DT Arnd Bergmann
2013-01-28 21:58 ` [PATCH v2 0/5] dmaengine: convert dw_dmac/spear13xx to generic binding Arnd Bergmann
[not found] ` <1359410300-26113-1-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-01-28 21:58 ` [PATCH 1/5] dmaengine: dw_dmac: move to generic DMA binding Arnd Bergmann
[not found] ` <1359410300-26113-2-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-01-29 7:24 ` Viresh Kumar
[not found] ` <CAKohpomO6tYNYLdMOaJYgqGecXj5KMQprdb=gExi+QuGrtLTzw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-29 10:35 ` Arnd Bergmann [this message]
[not found] ` <201301291035.30265.arnd-r2nGTMty4D4@public.gmane.org>
2013-01-29 10:49 ` Viresh Kumar
[not found] ` <CAKohpo=rD9=dEaPkKYcj55K4_ebdnU7qjv2TZBUwqHAB+Kk+aw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-29 10:54 ` Andy Shevchenko
2013-01-29 10:57 ` Viresh Kumar
[not found] ` <CAKohpokZfQZ17PmQjS2ntN9js7=SxNkiwWpX2aD8cZcM9L0ydw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-29 11:14 ` Andy Shevchenko
2013-01-29 13:31 ` Arnd Bergmann
[not found] ` <201301291331.48427.arnd-r2nGTMty4D4@public.gmane.org>
2013-01-29 13:45 ` Andy Shevchenko
2013-01-29 14:26 ` Russell King - ARM Linux
2013-01-29 15:28 ` Arnd Bergmann
2013-01-29 15:17 ` Viresh Kumar
[not found] ` <CAKohpoms+WC_XJnH2b6uoycRKkF-yxZUg2J+8NrYJP8fnDNLtg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-29 16:21 ` Arnd Bergmann
[not found] ` <201301291621.59425.arnd-r2nGTMty4D4@public.gmane.org>
2013-01-30 2:04 ` Viresh Kumar
[not found] ` <CAKohpon30hB9S+MUyXwZpefAGQE4hvF36d-6jXNRk_XoK5dwww-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-30 9:41 ` Arnd Bergmann
[not found] ` <201301300941.35886.arnd-r2nGTMty4D4@public.gmane.org>
2013-01-30 9:48 ` Viresh Kumar
[not found] ` <CAOh2x==WZePgfTWwL0vPdE693n44vW05OS=DSqbnDCs2xzHXuw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-30 10:08 ` Arnd Bergmann
[not found] ` <201301301008.31196.arnd-r2nGTMty4D4@public.gmane.org>
2013-01-30 10:32 ` Viresh Kumar
2013-02-15 8:50 ` Andy Shevchenko
2013-02-15 11:17 ` Arnd Bergmann
[not found] ` <1359445171.31148.30.camel@smile>
2013-01-29 10:50 ` Arnd Bergmann
[not found] ` <201301291050.23743.arnd-r2nGTMty4D4@public.gmane.org>
2013-01-29 11:18 ` Russell King - ARM Linux
[not found] ` <20130129111850.GR23505-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-01-29 13:44 ` Arnd Bergmann
[not found] ` <201301291344.11066.arnd-r2nGTMty4D4@public.gmane.org>
2013-01-29 14:24 ` Russell King - ARM Linux
[not found] ` <20130129142434.GW23505-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-01-29 14:55 ` Arnd Bergmann
[not found] ` <201301291455.49347.arnd-r2nGTMty4D4@public.gmane.org>
2013-01-29 15:44 ` Russell King - ARM Linux
[not found] ` <20130129154409.GA23505-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-01-29 16:36 ` Arnd Bergmann
[not found] ` <201301291636.38773.arnd-r2nGTMty4D4@public.gmane.org>
2013-01-29 17:45 ` Russell King - ARM Linux
[not found] ` <20130129174546.GE23505-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-01-29 20:40 ` Arnd Bergmann
2013-01-29 21:59 ` Linus Walleij
2013-01-28 21:58 ` [PATCH 2/5] spi: pl022: use generic DMA slave configuration if possible Arnd Bergmann
[not found] ` <1359410300-26113-3-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-01-29 2:41 ` Mark Brown
2013-01-29 7:49 ` Andy Shevchenko
2013-01-29 13:13 ` Arnd Bergmann
[not found] ` <201301291313.03511.arnd-r2nGTMty4D4@public.gmane.org>
2013-02-07 18:29 ` Linus Walleij
[not found] ` <CACRpkdZNpCJwp-uaH6feTcaPesNouwpHt-hO-M9v52G=Ux+Hqw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-02-07 19:42 ` Arnd Bergmann
[not found] ` <201302071942.54642.arnd-r2nGTMty4D4@public.gmane.org>
2013-02-07 20:19 ` Linus Walleij
[not found] ` <CACRpkdbunPGtR4p_kY4q8WEb8iwkEbdo_icDyrLZwKrCe0wXqw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-02-07 21:15 ` Arnd Bergmann
2013-02-08 16:22 ` Russell King - ARM Linux
2013-02-08 16:28 ` Arnd Bergmann
2013-02-08 22:10 ` Linus Walleij
2013-02-08 16:20 ` Russell King - ARM Linux
2013-01-28 21:58 ` [PATCH 3/5] serial: pl011: " Arnd Bergmann
[not found] ` <1359410300-26113-4-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-01-30 4:38 ` Greg Kroah-Hartman
2013-01-28 21:58 ` [PATCH 4/5] ata: arasan: remove the need for platform_data Arnd Bergmann
[not found] ` <1359410300-26113-5-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-01-29 8:18 ` Viresh Kumar
2013-01-28 21:58 ` [PATCH 5/5] ARM: SPEAr13xx: Pass generic DW DMAC platform data from DT Arnd Bergmann
[not found] ` <1359410300-26113-6-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-01-29 8:16 ` Viresh Kumar
[not found] ` <CAKohpokrvYDaMgB-5HV+bJh01YNU4H5UrSUnzxa_NpvE1qQqiA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-29 13:21 ` Arnd Bergmann
2013-04-19 20:38 ` [PATCH 0/5] dmaengine: convert dw_dmac/spear13xx to generic binding Arnd Bergmann
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=201301291035.30265.arnd@arndb.de \
--to=arnd-r2ngtmty4d4@public.gmane.org \
--cc=andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=spear-devel-nkJGhpqTU55BDgjK7y7TUQ@public.gmane.org \
--cc=vinod.koul-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
--cc=viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@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).