[PATCH] ASoC: samsung dma - prepare dma in start/resume trigger path

Subsystems: samsung audio (asoc) drivers, sound, sound - soc layer / dynamic audio power management (asoc), the rest

STALE5103d

7 messages, 3 authors, 2012-08-24 · open the first message on its own page

[PATCH] ASoC: samsung dma - prepare dma in start/resume trigger path

From: Dylan Reid <hidden>
Date: 2012-08-23 20:51:09

On suspend all dma transactions are terminated (by the stop/suspend
trigger calling ops->stop), they need to be set up again during resume.
Move the prepare op to the start/resume/unpause trigger path so that dma
and audio will restart on resume/unpause.

Signed-off-by: Dylan Reid <redacted>
---
 sound/soc/samsung/dma.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/sound/soc/samsung/dma.c b/sound/soc/samsung/dma.c
index f3ebc38..5772762 100644
--- a/sound/soc/samsung/dma.c
+++ b/sound/soc/samsung/dma.c
@@ -250,6 +250,7 @@ static int dma_trigger(struct snd_pcm_substream *substream, int cmd)
 	case SNDRV_PCM_TRIGGER_START:
 	case SNDRV_PCM_TRIGGER_RESUME:
 	case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+		dma_prepare(substream);
 		prtd->state |= ST_RUNNING;
 		prtd->params->ops->trigger(prtd->params->ch);
 		break;
@@ -352,7 +353,6 @@ static struct snd_pcm_ops dma_ops = {
 	.ioctl		= snd_pcm_lib_ioctl,
 	.hw_params	= dma_hw_params,
 	.hw_free	= dma_hw_free,
-	.prepare	= dma_prepare,
 	.trigger	= dma_trigger,
 	.pointer	= dma_pointer,
 	.mmap		= dma_mmap,
-- 
1.7.7.3

[PATCH] ASoC: samsung dma - prepare dma in start/resume trigger path

From: Dylan Reid <hidden>
Date: 2012-08-23 20:54:21

On Thu, Aug 23, 2012 at 1:51 PM, Dylan Reid [off-list ref] wrote:
quoted hunk
On suspend all dma transactions are terminated (by the stop/suspend
trigger calling ops->stop), they need to be set up again during resume.
Move the prepare op to the start/resume/unpause trigger path so that dma
and audio will restart on resume/unpause.

Signed-off-by: Dylan Reid <redacted>
---
 sound/soc/samsung/dma.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/sound/soc/samsung/dma.c b/sound/soc/samsung/dma.c
index f3ebc38..5772762 100644
--- a/sound/soc/samsung/dma.c
+++ b/sound/soc/samsung/dma.c
@@ -250,6 +250,7 @@ static int dma_trigger(struct snd_pcm_substream *substream, int cmd)
        case SNDRV_PCM_TRIGGER_START:
        case SNDRV_PCM_TRIGGER_RESUME:
        case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+               dma_prepare(substream);
                prtd->state |= ST_RUNNING;
                prtd->params->ops->trigger(prtd->params->ch);
                break;
@@ -352,7 +353,6 @@ static struct snd_pcm_ops dma_ops = {
        .ioctl          = snd_pcm_lib_ioctl,
        .hw_params      = dma_hw_params,
        .hw_free        = dma_hw_free,
-       .prepare        = dma_prepare,
        .trigger        = dma_trigger,
        .pointer        = dma_pointer,
        .mmap           = dma_mmap,
--
1.7.7.3

[alsa-devel] [PATCH] ASoC: samsung dma - prepare dma in start/resume trigger path

From: clemens@ladisch.de (Clemens Ladisch)
Date: 2012-08-24 07:15:00

Dylan Reid wrote:
On suspend all dma transactions are terminated (by the stop/suspend
trigger calling ops->stop), they need to be set up again during resume.
Move the prepare op to the start/resume/unpause trigger path so that dma
and audio will restart on resume/unpause.
TRIGGER_RESUME must restart the stream at the buffer position at which
it was suspended.  If the driver is not capable of that, it must not
support TRIGGER_SUSPEND/RESUME in the first place (i.e., remove
SNDRV_PCM_INFO_RESUME).


Regards,
Clemens

[alsa-devel] [PATCH] ASoC: samsung dma - prepare dma in start/resume trigger path

From: Sangbeom Kim <hidden>
Date: 2012-08-24 07:41:32

Hi!

On Thu, Aug 24, 2012 at 5:51 AM, Dylan Reid wrote:
On suspend all dma transactions are terminated (by the stop/suspend
trigger calling ops->stop), they need to be set up again during resume.
Move the prepare op to the start/resume/unpause trigger path so that dma
and audio will restart on resume/unpause.
Do you mean that currently, suspend/resume can't be supported?

Thanks,
Sangbeom.

[alsa-devel] [PATCH] ASoC: samsung dma - prepare dma in start/resume trigger path

From: Dylan Reid <hidden>
Date: 2012-08-24 07:52:10

On Fri, Aug 24, 2012 at 12:41 AM, Sangbeom Kim [off-list ref] wrote:
Hi!

On Thu, Aug 24, 2012 at 5:51 AM, Dylan Reid wrote:
quoted
On suspend all dma transactions are terminated (by the stop/suspend
trigger calling ops->stop), they need to be set up again during resume.
Move the prepare op to the start/resume/unpause trigger path so that dma
and audio will restart on resume/unpause.
Do you mean that currently, suspend/resume can't be supported?
Yes. Currently, if I suspend while playing, after resume it won't work
until I close and reopen the device.  the call to snd_pcm_resume is
not indicating an error, but a write error comes from snd_pcm_write a
little later.

The suspend trigger calls ops->stop, which in turn sends
DMA_TERMINATE_ALL to the pl330.  I think this causes resume's call to
ops->trigger to fail because there is nothing enqueued, but I'm pretty
new to this system.

Thanks for the help!

Dylan
Thanks,
Sangbeom.

[alsa-devel] [PATCH] ASoC: samsung dma - prepare dma in start/resume trigger path

From: Sangbeom Kim <hidden>
Date: 2012-08-24 10:06:52

On Thu, Aug 24, 2012 at 4:52 PM, Dylan Reid wrote:
Yes. Currently, if I suspend while playing, after resume it won't work
until I close and reopen the device.  the call to snd_pcm_resume is
not indicating an error, but a write error comes from snd_pcm_write a
little later.
Ok, 
Please let me know your test environment.

Thanks,
Sangbeom.

[alsa-devel] [PATCH] ASoC: samsung dma - prepare dma in start/resume trigger path

From: Dylan Reid <hidden>
Date: 2012-08-24 17:29:01

On Fri, Aug 24, 2012 at 3:06 AM, Sangbeom Kim [off-list ref] wrote:
On Thu, Aug 24, 2012 at 4:52 PM, Dylan Reid wrote:
quoted
Yes. Currently, if I suspend while playing, after resume it won't work
until I close and reopen the device.  the call to snd_pcm_resume is
not indicating an error, but a write error comes from snd_pcm_write a
little later.
Ok,
Please let me know your test environment.
I'm using a 5250 evaluation board with a max98095 codec.
Thanks,
Sangbeom.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help