linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: lars@metafoo.de (Lars-Peter Clausen)
To: linux-arm-kernel@lists.infradead.org
Subject: [alsa-devel] [PATCH 0/2] ASoC: dmaengine_pcm: support generic DMA binding users
Date: Thu, 21 Mar 2013 17:26:19 +0100	[thread overview]
Message-ID: <514B34AB.1080107@metafoo.de> (raw)
In-Reply-To: <20130321152206.GA14768@opensource.wolfsonmicro.com>

On 03/21/2013 04:22 PM, Mark Brown wrote:
> On Thu, Mar 21, 2013 at 04:06:27PM +0100, Lars-Peter Clausen wrote:
> 
>> Hm, I only saw this series today would have been good to be on Cc. I've been
>> working on something very similar. My series goes a bit further though, it
>> implements an (almost generic) dmaengine based PCM driver using the of
>> bindings. So you need almost no platform code. The only things that are
>> platform specific at the moment is the pcm_hardware struct, but I'd like to
>> replace that in the future with something that queries the pcm hardware
>> parameter like max_period from the DMA engine driver. And another bit that is
>> still driver specific is a callback that fills the dma_slave_config struct.
> 
> FWIW it might be worth looking at the one rmk wrote but has never wanted
> to submit for whatever reason.

Ideally I'd like to eventually move this 'fill in slave config' callback to the
DAI driver, since this is almost always DAI specific data, like for example the
FIFO address, the burst length, the bus width, etc. But I'd like to do that in
a second step. The first step should already help us to get rid of a large
portion of redundant code we see in PCM drivers today.

> 
>> In my series the channels are requested at probe time, so it is possible to
>> handle -EPROBE_DEFER properly and also we can allocate the audio buffers with
>> the dma device instead of the sound device, so stupid hacks like
> 
>>     card->dev->dma_mask = &dma_mask;
>>     card->dev->coherent_dma_mask = DMA_BIT_MASK(32);
> 
>> anymore. I'll try to post the series tomorrow.
> 
> This is the main thing his code has got that the library hasn't, it's
> certainly the only issue he keeps mentioning.

Yes, he definitely deserves credit for this, I probably wouldn't have
implemented it, if he hadn't point this out.

The problem with the current library is that we don't know yet which dmaengine
device is going to be used by the time we pre-allocate the audio buffers, since
the DMA filter parameters often are provided by the DAI driver. When using
devicetree on the other hand the handle to the dmaengine comes from the
devicetree itself and so it is available at the time we probe the PCM driver.

There are some other drivers which don't really depend on runtime filter
parameters, e.g. tegra, which doesn't use a filter function. So tegra can also
easily make use of this new generic dmaengine based PCM driver.

- Lars

  reply	other threads:[~2013-03-21 16:26 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-15  3:36 [PATCH 0/2] ASoC: dmaengine_pcm: support generic DMA binding users Shawn Guo
2013-03-15  3:36 ` [PATCH 1/2] dmaengine: add const for name parameter Shawn Guo
2013-03-15  8:53   ` Markus Pargmann
2013-03-21  9:47     ` Vinod Koul
2013-03-21 13:10       ` Markus Pargmann
2013-03-21 12:54         ` Vinod Koul
2013-03-21 14:45           ` [PATCH] DMA: of: const name fixup Markus Pargmann
2013-03-21 14:57       ` [PATCH 1/2] dmaengine: add const for name parameter Shawn Guo
2013-04-02 17:51         ` Vinod Koul
2013-04-02 19:47           ` Mark Brown
2013-03-15  3:36 ` [PATCH 2/2] ASoC: dmaengine_pcm: add snd_dmaengine_generic_pcm_open() Shawn Guo
2013-03-15 10:00   ` Sebastien Guiriec
2013-03-21  9:57   ` Vinod Koul
2013-03-21 14:53     ` Shawn Guo
2013-03-22  8:07       ` Sebastien Guiriec
2013-03-22  8:39         ` Shawn Guo
2013-03-21  2:39 ` [PATCH 0/2] ASoC: dmaengine_pcm: support generic DMA binding users Shawn Guo
2013-03-21 15:06   ` [alsa-devel] " Lars-Peter Clausen
2013-03-21 15:22     ` Mark Brown
2013-03-21 16:26       ` Lars-Peter Clausen [this message]
2013-03-21 16:47         ` Mark Brown
2013-03-22 11:30         ` Russell King - ARM Linux
2013-03-22 11:39           ` Lars-Peter Clausen
2013-03-22 11:17       ` Russell King - ARM Linux
2013-03-22 11:28         ` Mark Brown
2013-03-22 11:42           ` Lars-Peter Clausen
2013-03-22 11:48             ` Mark Brown

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=514B34AB.1080107@metafoo.de \
    --to=lars@metafoo.de \
    --cc=linux-arm-kernel@lists.infradead.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).