public inbox for linux-sound@vger.kernel.org
 help / color / mirror / Atom feed
* [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork
@ 2013-07-03  8:37 Bo Shen
  2013-07-03  8:37 ` [v2 1/5] ASoC: atmel_ssc_dai: move set dma data to startup callback Bo Shen
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Bo Shen @ 2013-07-03  8:37 UTC (permalink / raw)
  To: Mark Brown
  Cc: alsa-devel, lars, richard.genoud, Nicolas Ferre, linux-sound,
	Bo Shen, linux-arm-kernel

This patch set is based on linux next-20130701

mainly implement
  - move set dma data from hw_params to startup callback to avoid memory leak
  - align atmel pcm with generic dmaenigne framwork

Bo Shen (5):
  ASoC: atmel_ssc_dai: move set dma data to startup callback
  ASoC: atmel_ssc_dai: add error mask define
  ASoC: atmel-pcm-dma: move prepare for dma to dai prepare
  ARM: atmel-ssc: change phybase type to dma_addr_t
  ASoC: atmel-pcm: use generic dmaengine framework

 include/linux/atmel-ssc.h       |    2 +-
 sound/soc/atmel/Kconfig         |    1 +
 sound/soc/atmel/atmel-pcm-dma.c |  118 ++++++---------------------------------
 sound/soc/atmel/atmel_ssc_dai.c |   36 ++++++------
 4 files changed, 37 insertions(+), 120 deletions(-)

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [v2 1/5] ASoC: atmel_ssc_dai: move set dma data to startup callback
  2013-07-03  8:37 [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork Bo Shen
@ 2013-07-03  8:37 ` Bo Shen
  2013-07-03  8:37 ` [v2 2/5] ASoC: atmel_ssc_dai: add error mask define Bo Shen
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Bo Shen @ 2013-07-03  8:37 UTC (permalink / raw)
  To: Mark Brown
  Cc: alsa-devel, lars, richard.genoud, Nicolas Ferre, linux-sound,
	Bo Shen, linux-arm-kernel

move set dma data to startup callback function, if the set dma
data exist in hw_params callback, so the dma data only usable when
call hw_params, if want use it before hw_params callback, it will
cause NULL pointer access oops

Signed-off-by: Bo Shen <voice.shen@atmel.com>
---
Change in v2:
  - no change
---
 sound/soc/atmel/atmel_ssc_dai.c |   33 ++++++++++++++++-----------------
 1 file changed, 16 insertions(+), 17 deletions(-)

diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c
index f3fdfa0..6cf9cf1 100644
--- a/sound/soc/atmel/atmel_ssc_dai.c
+++ b/sound/soc/atmel/atmel_ssc_dai.c
@@ -196,15 +196,27 @@ static int atmel_ssc_startup(struct snd_pcm_substream *substream,
 			     struct snd_soc_dai *dai)
 {
 	struct atmel_ssc_info *ssc_p = &ssc_info[dai->id];
-	int dir_mask;
+	struct atmel_pcm_dma_params *dma_params;
+	int dir, dir_mask;
 
 	pr_debug("atmel_ssc_startup: SSC_SR=0x%u\n",
 		ssc_readl(ssc_p->ssc->regs, SR));
 
-	if (substream->stream = SNDRV_PCM_STREAM_PLAYBACK)
+	if (substream->stream = SNDRV_PCM_STREAM_PLAYBACK) {
+		dir = 0;
 		dir_mask = SSC_DIR_MASK_PLAYBACK;
-	else
+	} else {
+		dir = 1;
 		dir_mask = SSC_DIR_MASK_CAPTURE;
+	}
+
+	dma_params = &ssc_dma_params[dai->id][dir];
+	dma_params->ssc = ssc_p->ssc;
+	dma_params->substream = substream;
+
+	ssc_p->dma_params[dir] = dma_params;
+
+	snd_soc_dai_set_dma_data(dai, substream, dma_params);
 
 	spin_lock_irq(&ssc_p->lock);
 	if (ssc_p->dir_mask & dir_mask) {
@@ -325,7 +337,6 @@ static int atmel_ssc_hw_params(struct snd_pcm_substream *substream,
 	struct snd_pcm_hw_params *params,
 	struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
 	int id = dai->id;
 	struct atmel_ssc_info *ssc_p = &ssc_info[id];
 	struct atmel_pcm_dma_params *dma_params;
@@ -344,19 +355,7 @@ static int atmel_ssc_hw_params(struct snd_pcm_substream *substream,
 	else
 		dir = 1;
 
-	dma_params = &ssc_dma_params[id][dir];
-	dma_params->ssc = ssc_p->ssc;
-	dma_params->substream = substream;
-
-	ssc_p->dma_params[dir] = dma_params;
-
-	/*
-	 * The snd_soc_pcm_stream->dma_data field is only used to communicate
-	 * the appropriate DMA parameters to the pcm driver hw_params()
-	 * function.  It should not be used for other purposes
-	 * as it is common to all substreams.
-	 */
-	snd_soc_dai_set_dma_data(rtd->cpu_dai, substream, dma_params);
+	dma_params = ssc_p->dma_params[dir];
 
 	channels = params_channels(params);
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [v2 2/5] ASoC: atmel_ssc_dai: add error mask define
  2013-07-03  8:37 [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork Bo Shen
  2013-07-03  8:37 ` [v2 1/5] ASoC: atmel_ssc_dai: move set dma data to startup callback Bo Shen
@ 2013-07-03  8:37 ` Bo Shen
  2013-07-03  8:37 ` [v2 3/5] ASoC: atmel-pcm-dma: move prepare for dma to dai prepare Bo Shen
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Bo Shen @ 2013-07-03  8:37 UTC (permalink / raw)
  To: Mark Brown
  Cc: alsa-devel, lars, richard.genoud, Nicolas Ferre, linux-sound,
	Bo Shen, linux-arm-kernel

add error mask define, which will be used when execute DMA transfer

Signed-off-by: Bo Shen <voice.shen@atmel.com>
---
Change in v2:
  - new patch
---
 sound/soc/atmel/atmel_ssc_dai.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c
index 6cf9cf1..1ab4763 100644
--- a/sound/soc/atmel/atmel_ssc_dai.c
+++ b/sound/soc/atmel/atmel_ssc_dai.c
@@ -73,6 +73,7 @@ static struct atmel_ssc_mask ssc_tx_mask = {
 	.ssc_disable	= SSC_BIT(CR_TXDIS),
 	.ssc_endx	= SSC_BIT(SR_ENDTX),
 	.ssc_endbuf	= SSC_BIT(SR_TXBUFE),
+	.ssc_error	= SSC_BIT(SR_OVRUN),
 	.pdc_enable	= ATMEL_PDC_TXTEN,
 	.pdc_disable	= ATMEL_PDC_TXTDIS,
 };
@@ -82,6 +83,7 @@ static struct atmel_ssc_mask ssc_rx_mask = {
 	.ssc_disable	= SSC_BIT(CR_RXDIS),
 	.ssc_endx	= SSC_BIT(SR_ENDRX),
 	.ssc_endbuf	= SSC_BIT(SR_RXBUFF),
+	.ssc_error	= SSC_BIT(SR_OVRUN),
 	.pdc_enable	= ATMEL_PDC_RXTEN,
 	.pdc_disable	= ATMEL_PDC_RXTDIS,
 };
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [v2 3/5] ASoC: atmel-pcm-dma: move prepare for dma to dai prepare
  2013-07-03  8:37 [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork Bo Shen
  2013-07-03  8:37 ` [v2 1/5] ASoC: atmel_ssc_dai: move set dma data to startup callback Bo Shen
  2013-07-03  8:37 ` [v2 2/5] ASoC: atmel_ssc_dai: add error mask define Bo Shen
@ 2013-07-03  8:37 ` Bo Shen
  2013-07-03  8:37 ` [v2 4/5] ARM: atmel-ssc: change phybase type to dma_addr_t Bo Shen
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Bo Shen @ 2013-07-03  8:37 UTC (permalink / raw)
  To: Mark Brown
  Cc: Nicolas Ferre, lars, richard.genoud, linux-arm-kernel, alsa-devel,
	linux-sound, Bo Shen

as prepare callback for dma is acctually access ssc register
which better done in dai driver, so move it to dai prepare
callback function

Signed-off-by: Bo Shen <voice.shen@atmel.com>
---
Change in v2:
  - split as a new patch
---
 sound/soc/atmel/atmel-pcm-dma.c |   14 --------------
 sound/soc/atmel/atmel_ssc_dai.c |    1 +
 2 files changed, 1 insertion(+), 14 deletions(-)

diff --git a/sound/soc/atmel/atmel-pcm-dma.c b/sound/soc/atmel/atmel-pcm-dma.c
index 1d38fd0..5a57803 100644
--- a/sound/soc/atmel/atmel-pcm-dma.c
+++ b/sound/soc/atmel/atmel-pcm-dma.c
@@ -175,19 +175,6 @@ err:
 	return ret;
 }
 
-static int atmel_pcm_dma_prepare(struct snd_pcm_substream *substream)
-{
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct atmel_pcm_dma_params *prtd;
-
-	prtd = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
-
-	ssc_writex(prtd->ssc->regs, SSC_IER, prtd->mask->ssc_error);
-	ssc_writex(prtd->ssc->regs, SSC_CR, prtd->mask->ssc_enable);
-
-	return 0;
-}
-
 static int atmel_pcm_open(struct snd_pcm_substream *substream)
 {
 	snd_soc_set_runtime_hwparams(substream, &atmel_pcm_dma_hardware);
@@ -200,7 +187,6 @@ static struct snd_pcm_ops atmel_pcm_ops = {
 	.close		= snd_dmaengine_pcm_close_release_chan,
 	.ioctl		= snd_pcm_lib_ioctl,
 	.hw_params	= atmel_pcm_hw_params,
-	.prepare	= atmel_pcm_dma_prepare,
 	.trigger	= snd_dmaengine_pcm_trigger,
 	.pointer	= snd_dmaengine_pcm_pointer_no_residue,
 	.mmap		= atmel_pcm_mmap,
diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c
index 1ab4763..0ecf356 100644
--- a/sound/soc/atmel/atmel_ssc_dai.c
+++ b/sound/soc/atmel/atmel_ssc_dai.c
@@ -649,6 +649,7 @@ static int atmel_ssc_prepare(struct snd_pcm_substream *substream,
 	dma_params = ssc_p->dma_params[dir];
 
 	ssc_writel(ssc_p->ssc->regs, CR, dma_params->mask->ssc_enable);
+	ssc_writel(ssc_p->ssc->regs, IER, dma_params->mask->ssc_error);
 
 	pr_debug("%s enabled SSC_SR=0x%08x\n",
 			dir ? "receive" : "transmit",
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [v2 4/5] ARM: atmel-ssc: change phybase type to dma_addr_t
  2013-07-03  8:37 [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork Bo Shen
                   ` (2 preceding siblings ...)
  2013-07-03  8:37 ` [v2 3/5] ASoC: atmel-pcm-dma: move prepare for dma to dai prepare Bo Shen
@ 2013-07-03  8:37 ` Bo Shen
  2013-07-03  8:38 ` [v2 5/5] ASoC: atmel-pcm: use generic dmaengine framework Bo Shen
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Bo Shen @ 2013-07-03  8:37 UTC (permalink / raw)
  To: Mark Brown
  Cc: Nicolas Ferre, lars, richard.genoud, linux-arm-kernel, alsa-devel,
	linux-sound, Bo Shen

as the phybase paramter only used for DMA operation, change
it's type from resource_size_t to dma_addr_t

Signed-off-by: Bo Shen <voice.shen@atmel.com>
---
Change in v2:
  - new patch
---
 include/linux/atmel-ssc.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/atmel-ssc.h b/include/linux/atmel-ssc.h
index deb0ae5..66a0e53 100644
--- a/include/linux/atmel-ssc.h
+++ b/include/linux/atmel-ssc.h
@@ -11,7 +11,7 @@ struct atmel_ssc_platform_data {
 
 struct ssc_device {
 	struct list_head	list;
-	resource_size_t		phybase;
+	dma_addr_t		phybase;
 	void __iomem		*regs;
 	struct platform_device	*pdev;
 	struct atmel_ssc_platform_data *pdata;
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [v2 5/5] ASoC: atmel-pcm: use generic dmaengine framework
  2013-07-03  8:37 [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork Bo Shen
                   ` (3 preceding siblings ...)
  2013-07-03  8:37 ` [v2 4/5] ARM: atmel-ssc: change phybase type to dma_addr_t Bo Shen
@ 2013-07-03  8:38 ` Bo Shen
  2013-07-03  9:01 ` [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork Lars-Peter Clausen
  2013-07-03  9:52 ` Mark Brown
  6 siblings, 0 replies; 8+ messages in thread
From: Bo Shen @ 2013-07-03  8:38 UTC (permalink / raw)
  To: Mark Brown
  Cc: Nicolas Ferre, lars, richard.genoud, linux-arm-kernel, alsa-devel,
	linux-sound, Bo Shen

Align atmel pcm to use ASoC generic dmaengine framework

DMA is fully device tree based

Signed-off-by: Bo Shen <voice.shen@atmel.com>
---
Change in v2:
  - slipt the prepare function as a seperate patch
  - remove phybase convert as the type change to dma_addr_t
---
 sound/soc/atmel/Kconfig         |    1 +
 sound/soc/atmel/atmel-pcm-dma.c |  104 ++++++---------------------------------
 2 files changed, 17 insertions(+), 88 deletions(-)

diff --git a/sound/soc/atmel/Kconfig b/sound/soc/atmel/Kconfig
index 022853f..0cdb097 100644
--- a/sound/soc/atmel/Kconfig
+++ b/sound/soc/atmel/Kconfig
@@ -13,6 +13,7 @@ config SND_ATMEL_SOC_PDC
 config SND_ATMEL_SOC_DMA
 	tristate
 	depends on SND_ATMEL_SOC
+	select SND_SOC_GENERIC_DMAENGINE_PCM
 
 config SND_ATMEL_SOC_SSC
 	tristate
diff --git a/sound/soc/atmel/atmel-pcm-dma.c b/sound/soc/atmel/atmel-pcm-dma.c
index 5a57803..3ff5601 100644
--- a/sound/soc/atmel/atmel-pcm-dma.c
+++ b/sound/soc/atmel/atmel-pcm-dma.c
@@ -89,124 +89,52 @@ static void atmel_pcm_dma_irq(u32 ssc_sr,
 	}
 }
 
-/*--------------------------------------------------------------------------*\
- * DMAENGINE operations
-\*--------------------------------------------------------------------------*/
-static bool filter(struct dma_chan *chan, void *slave)
-{
-	struct at_dma_slave *sl = slave;
-
-	if (sl->dma_dev = chan->device->dev) {
-		chan->private = sl;
-		return true;
-	} else {
-		return false;
-	}
-}
-
 static int atmel_pcm_configure_dma(struct snd_pcm_substream *substream,
-	struct snd_pcm_hw_params *params, struct atmel_pcm_dma_params *prtd)
+	struct snd_pcm_hw_params *params, struct dma_slave_config *slave_config)
 {
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct atmel_pcm_dma_params *prtd;
 	struct ssc_device *ssc;
-	struct dma_chan *dma_chan;
-	struct dma_slave_config slave_config;
 	int ret;
 
+	prtd = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 	ssc = prtd->ssc;
 
-	ret = snd_hwparams_to_dma_slave_config(substream, params,
-			&slave_config);
+	ret = snd_hwparams_to_dma_slave_config(substream, params, slave_config);
 	if (ret) {
 		pr_err("atmel-pcm: hwparams to dma slave configure failed\n");
 		return ret;
 	}
 
 	if (substream->stream = SNDRV_PCM_STREAM_PLAYBACK) {
-		slave_config.dst_addr = (dma_addr_t)ssc->phybase + SSC_THR;
-		slave_config.dst_maxburst = 1;
+		slave_config->dst_addr = ssc->phybase + SSC_THR;
+		slave_config->dst_maxburst = 1;
 	} else {
-		slave_config.src_addr = (dma_addr_t)ssc->phybase + SSC_RHR;
-		slave_config.src_maxburst = 1;
-	}
-
-	dma_chan = snd_dmaengine_pcm_get_chan(substream);
-	if (dmaengine_slave_config(dma_chan, &slave_config)) {
-		pr_err("atmel-pcm: failed to configure dma channel\n");
-		ret = -EBUSY;
-		return ret;
-	}
-
-	return 0;
-}
-
-static int atmel_pcm_hw_params(struct snd_pcm_substream *substream,
-	struct snd_pcm_hw_params *params)
-{
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct atmel_pcm_dma_params *prtd;
-	struct ssc_device *ssc;
-	struct at_dma_slave *sdata = NULL;
-	int ret;
-
-	snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
-
-	prtd = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
-	ssc = prtd->ssc;
-	if (ssc->pdev)
-		sdata = ssc->pdev->dev.platform_data;
-
-	ret = snd_dmaengine_pcm_open_request_chan(substream, filter, sdata);
-	if (ret) {
-		pr_err("atmel-pcm: dmaengine pcm open failed\n");
-		return -EINVAL;
-	}
-
-	ret = atmel_pcm_configure_dma(substream, params, prtd);
-	if (ret) {
-		pr_err("atmel-pcm: failed to configure dmai\n");
-		goto err;
+		slave_config->src_addr = ssc->phybase + SSC_RHR;
+		slave_config->src_maxburst = 1;
 	}
 
 	prtd->dma_intr_handler = atmel_pcm_dma_irq;
 
 	return 0;
-err:
-	snd_dmaengine_pcm_close_release_chan(substream);
-	return ret;
-}
-
-static int atmel_pcm_open(struct snd_pcm_substream *substream)
-{
-	snd_soc_set_runtime_hwparams(substream, &atmel_pcm_dma_hardware);
-
-	return 0;
 }
 
-static struct snd_pcm_ops atmel_pcm_ops = {
-	.open		= atmel_pcm_open,
-	.close		= snd_dmaengine_pcm_close_release_chan,
-	.ioctl		= snd_pcm_lib_ioctl,
-	.hw_params	= atmel_pcm_hw_params,
-	.trigger	= snd_dmaengine_pcm_trigger,
-	.pointer	= snd_dmaengine_pcm_pointer_no_residue,
-	.mmap		= atmel_pcm_mmap,
-};
-
-static struct snd_soc_platform_driver atmel_soc_platform = {
-	.ops		= &atmel_pcm_ops,
-	.pcm_new	= atmel_pcm_new,
-	.pcm_free	= atmel_pcm_free,
+static const struct snd_dmaengine_pcm_config atmel_dmaengine_pcm_config = {
+	.prepare_slave_config = atmel_pcm_configure_dma,
+	.pcm_hardware = &atmel_pcm_dma_hardware,
+	.prealloc_buffer_size = ATMEL_SSC_DMABUF_SIZE,
 };
 
 int atmel_pcm_dma_platform_register(struct device *dev)
 {
-	return snd_soc_register_platform(dev, &atmel_soc_platform);
+	return snd_dmaengine_pcm_register(dev, &atmel_dmaengine_pcm_config,
+			SND_DMAENGINE_PCM_FLAG_NO_RESIDUE);
 }
 EXPORT_SYMBOL(atmel_pcm_dma_platform_register);
 
 void atmel_pcm_dma_platform_unregister(struct device *dev)
 {
-	snd_soc_unregister_platform(dev);
+	snd_dmaengine_pcm_unregister(dev);
 }
 EXPORT_SYMBOL(atmel_pcm_dma_platform_unregister);
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork
  2013-07-03  8:37 [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork Bo Shen
                   ` (4 preceding siblings ...)
  2013-07-03  8:38 ` [v2 5/5] ASoC: atmel-pcm: use generic dmaengine framework Bo Shen
@ 2013-07-03  9:01 ` Lars-Peter Clausen
  2013-07-03  9:52 ` Mark Brown
  6 siblings, 0 replies; 8+ messages in thread
From: Lars-Peter Clausen @ 2013-07-03  9:01 UTC (permalink / raw)
  To: Bo Shen
  Cc: alsa-devel, richard.genoud, Nicolas Ferre, linux-sound,
	Mark Brown, linux-arm-kernel

On 07/03/2013 10:37 AM, Bo Shen wrote:
> This patch set is based on linux next-20130701
> 
> mainly implement
>   - move set dma data from hw_params to startup callback to avoid memory leak
>   - align atmel pcm with generic dmaenigne framwork
> 

Whole series looks good to me. Although the DMA driver still references the
ssc struct, but that can be fixed later.

FWIW, Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>


> Bo Shen (5):
>   ASoC: atmel_ssc_dai: move set dma data to startup callback
>   ASoC: atmel_ssc_dai: add error mask define
>   ASoC: atmel-pcm-dma: move prepare for dma to dai prepare
>   ARM: atmel-ssc: change phybase type to dma_addr_t
>   ASoC: atmel-pcm: use generic dmaengine framework
> 
>  include/linux/atmel-ssc.h       |    2 +-
>  sound/soc/atmel/Kconfig         |    1 +
>  sound/soc/atmel/atmel-pcm-dma.c |  118 ++++++---------------------------------
>  sound/soc/atmel/atmel_ssc_dai.c |   36 ++++++------
>  4 files changed, 37 insertions(+), 120 deletions(-)
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork
  2013-07-03  8:37 [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork Bo Shen
                   ` (5 preceding siblings ...)
  2013-07-03  9:01 ` [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork Lars-Peter Clausen
@ 2013-07-03  9:52 ` Mark Brown
  6 siblings, 0 replies; 8+ messages in thread
From: Mark Brown @ 2013-07-03  9:52 UTC (permalink / raw)
  To: Bo Shen
  Cc: Nicolas Ferre, lars, richard.genoud, linux-arm-kernel, alsa-devel,
	linux-sound

[-- Attachment #1: Type: text/plain, Size: 292 bytes --]

On Wed, Jul 03, 2013 at 04:37:55PM +0800, Bo Shen wrote:
> This patch set is based on linux next-20130701
> 
> mainly implement
>   - move set dma data from hw_params to startup callback to avoid memory leak
>   - align atmel pcm with generic dmaenigne framwork

Applied all, thanks.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-07-03  9:52 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-03  8:37 [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork Bo Shen
2013-07-03  8:37 ` [v2 1/5] ASoC: atmel_ssc_dai: move set dma data to startup callback Bo Shen
2013-07-03  8:37 ` [v2 2/5] ASoC: atmel_ssc_dai: add error mask define Bo Shen
2013-07-03  8:37 ` [v2 3/5] ASoC: atmel-pcm-dma: move prepare for dma to dai prepare Bo Shen
2013-07-03  8:37 ` [v2 4/5] ARM: atmel-ssc: change phybase type to dma_addr_t Bo Shen
2013-07-03  8:38 ` [v2 5/5] ASoC: atmel-pcm: use generic dmaengine framework Bo Shen
2013-07-03  9:01 ` [v2 0/5] ASoC: atmel-pcm: align with generic dmaengine framwork Lars-Peter Clausen
2013-07-03  9:52 ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox