linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
To: Vinod Koul <vinod.koul@intel.com>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>,
	linux-kernel@vger.kernel.org,
	"'Jassi Brar'" <jassisinghbrar@gmail.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Magnus Damm <magnus.damm@gmail.com>,
	Paul Mundt <lethal@linux-sh.org>
Subject: Re: [PATCH/RFC] dmaengine: add a slave parameter to __dma_request_channel()
Date: Mon, 19 Mar 2012 15:45:45 +0100 (CET)	[thread overview]
Message-ID: <Pine.LNX.4.64.1203191524200.11516@axis700.grange> (raw)
In-Reply-To: <1332166938.7180.38.camel@vkoul-udesk3>

On Mon, 19 Mar 2012, Vinod Koul wrote:

> On Mon, 2012-03-19 at 15:09 +0100, Guennadi Liakhovetski wrote:
> > YES! This is exactly what I am talking about! We need an additional 
> > parameter to dma_request_channel(). Whereas in the discussion, that you 
> > pointed me to, it still had the same 3 parameters, as now. (Maybe this has 
> > already been decided upon before - to add an additional parameter, not 
> > sure anymore, this thread has become too long and too slow... My apologies 
> > in this case) So, this can be a device pointer or some specialised slave 
> > ID. Device pointer is nice, I agree. And the next change, that I'd like to 
> > request is pass this parameter further on to DMA device driver's 
> > .device_alloc_chan_resources() method. 
> Sorry my bad. I confused your request for additional parameter as
> request for adding slave_config etc stuff into request API.
> 
> Yes this API would need to be modified for telling dmaengine about
> client. Now Given that this is more slave stuff, I have leaning to
> adding a slave specific request api, something like
> dmaengine_request_slave_channel() which is used for our purpose while
> keeping the original API intact for async_tx usages.
> 
> Btw why should .device_alloc_chan_resources() need this, I so no reason,
> unless we are working around some other issue.

The reason is the following: with the proposed modifications to the 
existing API we want to achieve:

1. client requests a channel
	dmaengine_request_slave_channel(dev)
2. the core looks through platform-specific mapping tables and finds a 
   suitable channel
3. the core calls device driver's .device_alloc_chan_resources() method 
   for that channel
4. the client uses
	dmaengine_slave_config(chan, config)
   to configure the channel

Now, that last channel configuration can have two aspects: (1) static: 
routing, multiplexing, peripheral address. This needs to be set only once 
per each such channel allocation to a specific client, (2) (potentially) 
dynamic: any burst sizes etc. We can pass both these configuration types 
together to the DMA device driver at step 4. For that the slave would have 
to embed struct dma_slave_config into another hardware-specific type with 
additional routing parameters. Otherwise we could pass static 
configuration, supplied by the platform, from the client to the DMA device 
driver already at step 1. This way we would avoid having to embed struct 
dma_slave_config and pass it around even if the driver doesn't actually 
use it. In some cases step 4 would be then dropped completely. But I can 
live with either solution.

Another reason is, that in the future it can happen, that we get further 
restrictions on channel selection, that will not fit into the standard 
mapping scheme. In this case, having access to slave's identification, the 
DMA device driver will have another chance to check, whether the proposed 
channel is indeed suitable.

BTW, if we only pass a device pointer and return to the client channels 
one-by-one, how will the client know, which channel it just has got back - 
Tx or Rx? Will it have to try to configure it for each role and see, which 
one succeeds?...

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

  reply	other threads:[~2012-03-19 14:46 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-01 15:26 [PATCH/RFC] dmaengine: add a slave parameter to __dma_request_channel() Guennadi Liakhovetski
2012-03-02 13:21 ` Guennadi Liakhovetski
2012-03-06  8:30   ` Vinod Koul
2012-03-06  8:53     ` Guennadi Liakhovetski
2012-03-06 12:08       ` Vinod Koul
2012-03-06 13:03         ` Guennadi Liakhovetski
2012-03-07  6:28           ` Vinod Koul
2012-03-07  9:18             ` Guennadi Liakhovetski
2012-03-07  9:30               ` Russell King - ARM Linux
2012-03-07  9:55                 ` Linus Walleij
2012-03-07 10:02                 ` Guennadi Liakhovetski
2012-03-07 10:31                   ` Russell King - ARM Linux
2012-03-07 12:30                     ` Guennadi Liakhovetski
2012-03-07 12:45                       ` Guennadi Liakhovetski
2012-03-07 12:46                       ` Russell King - ARM Linux
2012-03-07 13:49                         ` Guennadi Liakhovetski
2012-03-07 14:26                           ` Russell King - ARM Linux
2012-03-07 15:44                             ` Guennadi Liakhovetski
2012-03-07 16:27                               ` Russell King - ARM Linux
2012-03-07 18:21                                 ` Guennadi Liakhovetski
2012-03-08  6:30                                   ` Vinod Koul
2012-03-08 10:16                                     ` Guennadi Liakhovetski
2012-03-08 10:55                                       ` Vinod Koul
2012-03-08 11:22                                         ` Guennadi Liakhovetski
2012-03-08 11:34                                           ` Vinod Koul
2012-03-08 12:58                                             ` Vinod Koul
2012-03-08 13:18                                               ` Guennadi Liakhovetski
2012-03-09  9:21                                                 ` Vinod Koul
2012-03-09  9:24                                                   ` Guennadi Liakhovetski
2012-03-09  9:39                                                     ` Vinod Koul
2012-03-09 12:20                                                       ` Guennadi Liakhovetski
2012-03-09 14:07                                                         ` Russell King - ARM Linux
2012-03-09 14:15                                                           ` Guennadi Liakhovetski
2012-03-12  2:47                                                         ` Vinod Koul
2012-03-12 19:47                                                           ` Linus Walleij
2012-03-16  9:36                                                           ` Guennadi Liakhovetski
2012-03-16 10:16                                                             ` Linus Walleij
2012-03-16 10:31                                                               ` Russell King - ARM Linux
2012-03-16 11:09                                                               ` Guennadi Liakhovetski
2012-03-16 14:11                                                                 ` Linus Walleij
2012-03-16 14:28                                                                   ` Guennadi Liakhovetski
2012-03-30  5:44                                                                     ` Linus Walleij
2012-03-30  6:40                                                                       ` Guennadi Liakhovetski
2012-03-30 10:38                                                                       ` Russell King - ARM Linux
2012-04-03 20:36                                                                         ` Linus Walleij
2012-04-03 20:44                                                                         ` Linus Walleij
2012-04-12 21:33                                                                           ` Guennadi Liakhovetski
2012-04-12 23:48                                                                             ` Russell King - ARM Linux
2012-03-30 10:29                                                                     ` Russell King - ARM Linux
2012-03-30 10:40                                                                       ` Guennadi Liakhovetski
2012-03-30 10:43                                                                         ` Russell King - ARM Linux
2012-03-19 11:58                                                                   ` Vinod Koul
2012-03-30 10:25                                                                 ` Russell King - ARM Linux
2012-03-19 11:39                                                               ` Vinod Koul
2012-03-19 11:37                                                             ` Vinod Koul
2012-03-19 11:47                                                               ` Guennadi Liakhovetski
2012-03-19 13:34                                                                 ` Vinod Koul
2012-03-19 13:38                                                                   ` Guennadi Liakhovetski
2012-03-19 14:00                                                                     ` Vinod Koul
2012-03-19 14:09                                                                       ` Guennadi Liakhovetski
2012-03-19 14:22                                                                         ` Vinod Koul
2012-03-19 14:45                                                                           ` Guennadi Liakhovetski [this message]
2012-03-19 16:20                                                                             ` Vinod Koul
2012-03-19 16:32                                                                               ` Guennadi Liakhovetski
2012-03-20  7:11                                                                                 ` Vinod Koul
2012-03-08 11:46                                       ` Linus Walleij
2012-03-08 12:36                                         ` Guennadi Liakhovetski
2012-03-07 16:31                         ` Linus Walleij
2012-03-07 16:20                     ` Linus Walleij
2012-03-07  9:46               ` Linus Walleij

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=Pine.LNX.4.64.1203191524200.11516@axis700.grange \
    --to=g.liakhovetski@gmx.de \
    --cc=jassisinghbrar@gmail.com \
    --cc=lethal@linux-sh.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=magnus.damm@gmail.com \
    --cc=vinod.koul@intel.com \
    /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).