From: Peter Ujfalusi <peter.ujfalusi@ti.com>
To: Lars-Peter Clausen <lars@metafoo.de>
Cc: Ola Lilja <ola.o.lilja@stericsson.com>,
alsa-devel@alsa-project.org,
Rajeev Kumar <rajeev-dlh.kumar@st.com>,
Russell King <linux@arm.linux.org.uk>,
Ryan Mallon <rmallon@gmail.com>,
Stephen Warren <swarren@wwwdotorg.org>,
Vinod Koul <vinod.koul@intel.com>,
Liam Girdwood <lgirdwood@gmail.com>,
Hartley Sweeten <hsweeten@visionengravers.com>,
Mark Brown <broonie@kernel.org>,
Laxman Dewangan <ldewangan@nvidia.com>,
Sebastien Guiriec <s-guiriec@ti.com>,
Markus Pargmann <mpa@pengutronix.de>,
Shawn Guo <shawn.guo@linaro.org>,
Lee Jones <lee.jones@linaro.org>,
Jarkko Nikula <jarkko.nikula@bitmer.com>
Subject: Re: [PATCH 03/17] ASoC: Add a generic dmaengine_pcm driver
Date: Wed, 17 Apr 2013 11:48:08 +0200 [thread overview]
Message-ID: <516E6FD8.5040400@ti.com> (raw)
In-Reply-To: <1366046404-8759-4-git-send-email-lars@metafoo.de>
On 04/15/2013 07:19 PM, Lars-Peter Clausen wrote:
> This patch adds a generic dmaengine PCM driver. It builds on top of the
> dmaengine PCM library and adds the missing pieces like DMA channel management,
> buffer management and channel configuration. It will be able to replace the
> majority of the existing platform specific dmaengine based PCM drivers.
> Devicetree is used to map the DMA channels to the PCM device.
>
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> ---
> +static const char * const dmaengine_pcm_dma_channel_names[] = {
> + [SNDRV_PCM_STREAM_PLAYBACK] = "tx",
> + [SNDRV_PCM_STREAM_CAPTURE] = "rx",
> +};
> +
> +/**
> + * snd_dmaengine_pcm_register - Register a dmaengine based PCM device
> + * @dev: The parent device for the PCM device
> + * @config: Platform specific PCM configuration
> + * @flags: Platform specific quirks
> + */
> +int snd_dmaengine_pcm_register(struct device *dev,
> + const struct snd_dmaengine_pcm_config *config, unsigned int flags)
> +{
> + struct dmaengine_pcm *pcm;
> + unsigned int i;
> +
> + if (!dev->of_node)
> + return -EINVAL;
> +
> + pcm = kzalloc(sizeof(*pcm), GFP_KERNEL);
> + if (!pcm)
> + return -ENOMEM;
> +
> + pcm->config = config;
> +
> + for (i = SNDRV_PCM_STREAM_PLAYBACK; i <= SNDRV_PCM_STREAM_CAPTURE; i++) {
> + pcm->chan[i] = of_dma_request_slave_channel(dev->of_node,
> + dmaengine_pcm_dma_channel_names[i]);
Here we should have flexibility to provide custom DMA channel names. For OMAP4
AESS support (which I'm cleaning up right now for upstream) will need such a
flexibility since we will have 8 DMA channels and none of them is dedicated tx
or rx.
> + }
> +
> + return snd_soc_add_platform(dev, &pcm->platform,
> + &dmaengine_pcm_platform);
> +}
> +EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_register);
> +
> +/**
> + * snd_dmaengine_pcm_unregister - Removes a dmaengine based PCM device
> + * @dev: Parent device the PCM was register with
> + *
> + * Removes a dmaengine based PCM device previously registered with
> + * snd_dmaengine_pcm_register.
> + */
> +void snd_dmaengine_pcm_unregister(struct device *dev)
> +{
> + struct snd_soc_platform *platform;
> + struct dmaengine_pcm *pcm;
> + unsigned int i;
> +
> + platform = snd_soc_lookup_platform(dev);
> + if (!platform)
> + return;
> +
> + pcm = soc_platform_to_pcm(platform);
> +
> + for (i = SNDRV_PCM_STREAM_PLAYBACK; i <= SNDRV_PCM_STREAM_CAPTURE; i++) {
> + if (pcm->chan[i])
> + dma_release_channel(pcm->chan[i]);
> + }
> +
> + snd_soc_remove_platform(platform);
> + kfree(pcm);
> +}
> +EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_unregister);
> +
> +MODULE_LICENSE("GPL");
>
--
Péter
next prev parent reply other threads:[~2013-04-17 9:48 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-15 17:19 [PATCH 00/17] ASoC: Towards a generic dmaengine PCM driver Lars-Peter Clausen
2013-04-15 17:19 ` [PATCH 01/17] ASoC: dmaengine-pcm: Make requesting the DMA channel at PCM open optional Lars-Peter Clausen
[not found] ` <516C8D1B.3070901@gmail.com>
2013-04-16 5:33 ` Lars-Peter Clausen
2013-04-17 13:19 ` Mark Brown
2013-04-15 17:19 ` [PATCH 02/17] ASoC: Add snd_soc_{add, remove}_platform Lars-Peter Clausen
2013-04-17 13:18 ` Mark Brown
2013-04-17 13:20 ` Mark Brown
2013-04-15 17:19 ` [PATCH 03/17] ASoC: Add a generic dmaengine_pcm driver Lars-Peter Clausen
2013-04-15 23:15 ` Stephen Warren
2013-04-16 5:31 ` Lars-Peter Clausen
2013-04-16 20:02 ` Stephen Warren
2013-04-16 14:11 ` Markus Pargmann
2013-04-16 14:35 ` Lee Jones
2013-04-16 14:42 ` Markus Pargmann
2013-04-16 14:55 ` Lee Jones
2013-04-16 15:46 ` Lars-Peter Clausen
2013-04-17 9:48 ` Peter Ujfalusi [this message]
2013-04-17 10:48 ` Lars-Peter Clausen
2013-04-17 13:06 ` Peter Ujfalusi
2013-04-17 18:45 ` Lars-Peter Clausen
2013-04-18 7:30 ` Peter Ujfalusi
2013-04-17 13:21 ` Mark Brown
2013-04-15 17:19 ` [PATCH 04/17] ASoC: dmaengine_pcm: Add support for compat platforms Lars-Peter Clausen
2013-04-17 13:21 ` Mark Brown
2013-04-15 17:19 ` [PATCH 05/17] ASoC: tegra: Use generic dmaengine PCM Lars-Peter Clausen
2013-04-17 13:25 ` Mark Brown
2013-04-15 17:19 ` [PATCH 06/17] ASoC: spear: Setup dma data in DAI probe Lars-Peter Clausen
2013-04-15 17:19 ` [PATCH 07/17] ASoC: spear: Use generic dmaengine PCM Lars-Peter Clausen
2013-04-15 17:19 ` [PATCH 08/17] ASoC: dmaengine-pcm: Add support for platforms which can't report residue Lars-Peter Clausen
2013-04-15 17:19 ` [PATCH 09/17] ASoC: mxs: Setup dma data in DAI probe Lars-Peter Clausen
2013-04-15 17:19 ` [PATCH 10/17] ASoC: mxs: Use generic dmaengine PCM Lars-Peter Clausen
2013-04-17 8:43 ` Shawn Guo
2013-04-17 9:28 ` Lars-Peter Clausen
2013-04-17 13:50 ` Shawn Guo
2013-04-18 9:04 ` Lars-Peter Clausen
2013-04-18 15:00 ` Shawn Guo
2013-04-18 15:04 ` Lars-Peter Clausen
2013-04-18 17:46 ` Lars-Peter Clausen
2013-04-18 2:44 ` Shawn Guo
2013-04-15 17:19 ` [PATCH 11/17] ASoC: imx: Setup dma data in DAI probe Lars-Peter Clausen
2013-04-15 17:19 ` [PATCH 12/17] ASoC: imx: Use generic dmaengine PCM Lars-Peter Clausen
2013-04-15 17:20 ` [PATCH 13/17] ASoC: omap: Setup dma data in DAI probe Lars-Peter Clausen
2013-04-15 17:20 ` [PATCH 14/17] ASoC: omap: Use generic dmaengine PCM Lars-Peter Clausen
2013-04-15 17:20 ` [PATCH 15/17] ASoC: ep93xx: Setup dma data in DAI probe Lars-Peter Clausen
2013-04-15 17:20 ` [PATCH 16/17] ASoC: ep93xx: Use generic dmaengine PCM Lars-Peter Clausen
[not found] ` <516C91E5.9080309@gmail.com>
2013-04-16 5:32 ` Lars-Peter Clausen
2013-04-15 17:20 ` [PATCH 17/17] ASoC: ux500: " Lars-Peter Clausen
2013-04-18 13:50 ` Lee Jones
2013-04-18 14:05 ` Mark Brown
2013-04-16 15:33 ` [PATCH 00/17] ASoC: Towards a generic dmaengine PCM driver Mark Brown
2013-04-17 8:14 ` Shawn Guo
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=516E6FD8.5040400@ti.com \
--to=peter.ujfalusi@ti.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=hsweeten@visionengravers.com \
--cc=jarkko.nikula@bitmer.com \
--cc=lars@metafoo.de \
--cc=ldewangan@nvidia.com \
--cc=lee.jones@linaro.org \
--cc=lgirdwood@gmail.com \
--cc=linux@arm.linux.org.uk \
--cc=mpa@pengutronix.de \
--cc=ola.o.lilja@stericsson.com \
--cc=rajeev-dlh.kumar@st.com \
--cc=rmallon@gmail.com \
--cc=s-guiriec@ti.com \
--cc=shawn.guo@linaro.org \
--cc=swarren@wwwdotorg.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.