public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] ALSA: cs5535audio: correctly set dma->substream
@ 2007-08-30  3:28 Andres Salomon
  2007-08-30 14:44 ` Jordan Crouse
  0 siblings, 1 reply; 2+ messages in thread
From: Andres Salomon @ 2007-08-30  3:28 UTC (permalink / raw)
  To: jayakumar.alsa; +Cc: akpm, jordan.crouse, linux-kernel, info-linux


We're never actually setting dma->substream to the current substream; that
means the dma->substream checks that we do in the suspend/resume path
are never satisfied, and the PRD registers are never correctly managed.  This
changes it so that we set the substream when constructing the specific
bus master DMA, and unsetting it when we tear down the BM's DMA.

Signed-off-by: Andres Salomon <dilinger@debian.org>
---

 sound/pci/cs5535audio/cs5535audio_pcm.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/sound/pci/cs5535audio/cs5535audio_pcm.c b/sound/pci/cs5535audio/cs5535audio_pcm.c
index 5450a9e..e61f972 100644
--- a/sound/pci/cs5535audio/cs5535audio_pcm.c
+++ b/sound/pci/cs5535audio/cs5535audio_pcm.c
@@ -164,6 +164,7 @@ static int cs5535audio_build_dma_packets(struct cs5535audio *cs5535au,
 	jmpprd_addr = cpu_to_le32(lastdesc->addr +
 				  (sizeof(struct cs5535audio_dma_desc)*periods));
 
+	dma->substream = substream;
 	dma->period_bytes = period_bytes;
 	dma->periods = periods;
 	spin_lock_irq(&cs5535au->reg_lock);
@@ -241,6 +242,7 @@ static void cs5535audio_clear_dma_packets(struct cs5535audio *cs5535au,
 {
 	snd_dma_free_pages(&dma->desc_buf);
 	dma->desc_buf.area = NULL;
+	dma->substream = NULL;
 }
 
 static int snd_cs5535audio_hw_params(struct snd_pcm_substream *substream,

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

* Re: ALSA: cs5535audio: correctly set dma->substream
  2007-08-30  3:28 [PATCH 1/5] ALSA: cs5535audio: correctly set dma->substream Andres Salomon
@ 2007-08-30 14:44 ` Jordan Crouse
  0 siblings, 0 replies; 2+ messages in thread
From: Jordan Crouse @ 2007-08-30 14:44 UTC (permalink / raw)
  To: Andres Salomon; +Cc: jayakumar.alsa, akpm, linux-kernel, info-linux

On 29/08/07 23:28 -0400, Andres Salomon wrote:
> 
> We're never actually setting dma->substream to the current substream; that
> means the dma->substream checks that we do in the suspend/resume path
> are never satisfied, and the PRD registers are never correctly managed.  This
> changes it so that we set the substream when constructing the specific
> bus master DMA, and unsetting it when we tear down the BM's DMA.
> 
> Signed-off-by: Andres Salomon <dilinger@debian.org>
Acked-by: Jordan Crouse <jordan.crouse@amd.com>

> ---
> 
>  sound/pci/cs5535audio/cs5535audio_pcm.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/sound/pci/cs5535audio/cs5535audio_pcm.c b/sound/pci/cs5535audio/cs5535audio_pcm.c
> index 5450a9e..e61f972 100644
> --- a/sound/pci/cs5535audio/cs5535audio_pcm.c
> +++ b/sound/pci/cs5535audio/cs5535audio_pcm.c
> @@ -164,6 +164,7 @@ static int cs5535audio_build_dma_packets(struct cs5535audio *cs5535au,
>  	jmpprd_addr = cpu_to_le32(lastdesc->addr +
>  				  (sizeof(struct cs5535audio_dma_desc)*periods));
>  
> +	dma->substream = substream;
>  	dma->period_bytes = period_bytes;
>  	dma->periods = periods;
>  	spin_lock_irq(&cs5535au->reg_lock);
> @@ -241,6 +242,7 @@ static void cs5535audio_clear_dma_packets(struct cs5535audio *cs5535au,
>  {
>  	snd_dma_free_pages(&dma->desc_buf);
>  	dma->desc_buf.area = NULL;
> +	dma->substream = NULL;
>  }
>  
>  static int snd_cs5535audio_hw_params(struct snd_pcm_substream *substream,
> 
> 

-- 
Jordan Crouse
Systems Software Development Engineer 
Advanced Micro Devices, Inc.



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

end of thread, other threads:[~2007-08-30 14:44 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-30  3:28 [PATCH 1/5] ALSA: cs5535audio: correctly set dma->substream Andres Salomon
2007-08-30 14:44 ` Jordan Crouse

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