From: Lars-Peter Clausen <lars@metafoo.de>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: Linux-ALSA <alsa-devel@alsa-project.org>,
Vinod Koul <vinod.koul@linux.intel.com>,
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>,
Sascha Hauer <s.hauer@pengutronix.de>,
Wolfram Sang <w.sang@pengutronix.de>,
Ralf Baechle <ralf@linux-mips.org>,
H Hartley Sweeten <hsweeten@visionengravers.com>,
Kuninori Morimoto <kuninori.morimoto.gx@gmail.com>,
Liam Girdwood <lrg@slimlogic.co.uk>
Subject: Re: [PATCH 19/19] ASoC: fsi: Add DMAEngine support
Date: Fri, 03 Feb 2012 15:05:12 +0100 [thread overview]
Message-ID: <4F2BE998.4020903@metafoo.de> (raw)
In-Reply-To: <20120203134850.GM3151@opensource.wolfsonmicro.com>
On 02/03/2012 02:48 PM, Mark Brown wrote:
> So, we're getting more and more drivers converted over to dmaengine
> (I've CCed a random selection of people working on relevant drivers and
> Vinod). This means we're getting a bunch of drivers that talk to the
> ALSA API on the top and the dmaengine API on the bottom and seem to need
> to implement very similar code patterns (like this tasklet to push the
> DMA through). This feels like we need some sort of abstraction to
> factor out some code here, either library code or perhaps a framework
> driver with callbacks that fill in the platform specifics - if the APIs
> are providing useful abstractions then presumably a large part of this
> is just translating between them.
>
> If that's not doable then what are the problems?
Yes, I was faced with the task of writing yet another dmaengine based ASoC
PCM driver last week. At first I thought it might be a good idea to come up
with a common ASoC PCM driver which could be used by all platforms using DMA
engine. Unfortunately this turned out to be not feasible due to how
dmaengine works. Each dmaengine driver has it's custom API for configuring
the DMA controller. :/
So what I have come up with so far is a set of helper functions which can be
used to implement a dmaengine based ASoC PCM driver. Right now I'm in the
process of converting imx, mxs and ep93xx to this set of functions.
These platforms have in common that their dmaengine driver implements
device_prep_dma_cyclic function, which prepares a continuous transfer for
cyclic buffer.
The other ASoC platforms using dmaengine for their PCM driver (including the
one in this patch series) don't have this function implemented and so the
PCM drivers manually have to setup the cyclic SG lists. So while we could
add a common set up functions for this to ASoC or ALSA I think the better
place for this is in the dmaengine framework and implement
device_prep_dma_cyclic for those drivers which don't do yet.
I'll try to send patches and some further explanations next week.
- Lars
next prev parent reply other threads:[~2012-02-03 14:04 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-03 8:48 ASoC: fsi: Add FSI DMAEngine support Kuninori Morimoto
2012-02-03 8:50 ` [PATCH 01/19] ASoC: fsi: reduce runtime calculation by using pre-setting Kuninori Morimoto
2012-02-03 8:50 ` [PATCH 02/19] ASoC: fsi: tidyup: fsi_stream_xx() functions were gathered Kuninori Morimoto
2012-02-03 11:42 ` Mark Brown
2012-02-03 8:50 ` [PATCH 03/19] ASoC: fsi: data push/pop calculation part was divided Kuninori Morimoto
2012-02-03 8:51 ` [PATCH 04/19] ASoC: fsi: rename fsi_dma_soft_xxx() to fsi_pio_xxx() Kuninori Morimoto
2012-02-03 8:51 ` [PATCH 05/19] ASoC: fsi: tidyup: move fsi_fifo_init() onto fsi_hw_startup() Kuninori Morimoto
2012-02-03 8:51 ` [PATCH 06/19] ASoC: fsi: remove unnecessary parameter from fsi_hw_shutdown() Kuninori Morimoto
2012-02-03 8:52 ` [PATCH 07/19] ASoC: fsi: rename fsi_stream_push/pop() to fsi_stream_init/quit() Kuninori Morimoto
2012-02-03 8:52 ` [PATCH 08/19] ASoC: fsi: modify fsi_pio_get_area() parameter and using position Kuninori Morimoto
2012-02-03 8:54 ` [PATCH 09/19] ASoC: fsi: re-define fsi_is_play() and fsi_stream_is_play() Kuninori Morimoto
2012-02-03 11:46 ` Mark Brown
2012-02-03 8:55 ` [PATCH 10/19] ASoC: fsi: use fsi_stream in fsi_get_current_fifo_samples() parameter Kuninori Morimoto
2012-02-03 8:55 ` [PATCH 11/19] ASoC: fsi: add fsi_stream_handler and PIO handler Kuninori Morimoto
2012-02-03 8:56 ` [PATCH 12/19] ASoC: fsi: tidyup: fsi_pio_xxx() are gathered Kuninori Morimoto
2012-02-03 8:56 ` [PATCH 13/19] ASoC: fsi: don't use is_play as a parameter of fsi functions Kuninori Morimoto
2012-02-03 8:57 ` [PATCH 14/19] ASoC: fsi: add .start_stop handler to fsi_stream_handler Kuninori Morimoto
2012-02-03 8:57 ` [PATCH 15/19] ASoC: fsi: fsi_stream_is_working() care substream->runtime Kuninori Morimoto
2012-02-03 8:58 ` [PATCH 16/19] ASoC: fsi: PortA/B information was controlled by sh_fsi_port_info Kuninori Morimoto
2012-02-03 8:59 ` [PATCH 17/19] ASoC: fsi: add .init/.quit handler support Kuninori Morimoto
2012-02-03 8:59 ` [PATCH 18/19] ASoC: fsi: fixup fsi_pointer() calculation method Kuninori Morimoto
2012-02-03 11:55 ` Mark Brown
2012-02-06 0:36 ` Kuninori Morimoto
2012-02-06 16:46 ` Mark Brown
2012-02-07 0:13 ` Kuninori Morimoto
2012-02-07 11:29 ` Mark Brown
2012-02-08 0:08 ` Kuninori Morimoto
2012-02-08 11:50 ` Mark Brown
2012-02-09 0:57 ` [PATCH 18/19 v2] " Kuninori Morimoto
2012-02-09 10:56 ` Mark Brown
2012-02-03 8:59 ` [PATCH 19/19] ASoC: fsi: Add DMAEngine support Kuninori Morimoto
2012-02-03 13:48 ` Mark Brown
2012-02-03 14:05 ` Lars-Peter Clausen [this message]
2012-02-03 14:14 ` Mark Brown
2012-02-04 16:31 ` Vinod Koul
2012-02-04 17:00 ` Lars-Peter Clausen
2012-02-04 18:01 ` Vinod Koul
2012-02-04 18:06 ` Vinod Koul
2012-02-04 18:25 ` Lars-Peter Clausen
2012-02-04 18:40 ` Vinod Koul
2012-02-06 8:47 ` Lars-Peter Clausen
2012-02-06 14:46 ` Vinod Koul
2012-02-06 14:50 ` Lars-Peter Clausen
2012-02-04 17:12 ` Mark Brown
2012-02-20 2:40 ` Mark Brown
2012-02-20 6:58 ` Kuninori Morimoto
2012-02-03 11:56 ` ASoC: fsi: Add FSI " Mark Brown
2012-02-06 0:40 ` Kuninori Morimoto
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=4F2BE998.4020903@metafoo.de \
--to=lars@metafoo.de \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=hsweeten@visionengravers.com \
--cc=kuninori.morimoto.gx@gmail.com \
--cc=kuninori.morimoto.gx@renesas.com \
--cc=lrg@slimlogic.co.uk \
--cc=ralf@linux-mips.org \
--cc=s.hauer@pengutronix.de \
--cc=vinod.koul@linux.intel.com \
--cc=w.sang@pengutronix.de \
/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).