From: Lars-Peter Clausen <lars@metafoo.de>
To: Laxman Dewangan <ldewangan@nvidia.com>
Cc: Linux-ALSA <alsa-devel@alsa-project.org>,
Stephen Warren <swarren@wwwdotorg.org>
Subject: Re: ASoC: tegra: Does the PCM_TRIGGER_{PAUSE, RESUME} emulation really work?
Date: Sat, 23 Mar 2013 14:36:37 +0100 [thread overview]
Message-ID: <514DAFE5.9050801@metafoo.de> (raw)
In-Reply-To: <514DADE9.50402@nvidia.com>
On 03/23/2013 02:28 PM, Laxman Dewangan wrote:
> On Saturday 23 March 2013 06:59 PM, Lars-Peter Clausen wrote:
>> On 03/23/2013 02:16 PM, Laxman Dewangan wrote:
>>> On Saturday 23 March 2013 05:05 AM, Stephen Warren wrote:
>>>> On 03/22/2013 10:26 AM, Lars-Peter Clausen wrote:
>>>>> Hi,
>>>>>
>>>>> The tegra pcm driver tries to emulate SNDRV_PCM_TRIGGER_PAUSE and
>>>>> SNDRV_PCM_TRIGGER_RESUME. By passing SNDRV_PCM_TRIGGER_START and
>>>>> SNDRV_PCM_TRIGGER_STOP to snd_dmaengine_pcm_trigger. But does this really
>>>>> work? The old non-dmaengine based driver implemented this properly. I'd
>>>>> reset the dma position pointer for SNDRV_PCM_TRIGGER_START, but keep it
>>>>> where it was for SNDRV_PCM_TRIGGER_RESUME. But as far as I can see with
>>>>> the
>>>>> dmaengine based driver the pointer always gets reset to 0 for both
>>>>> SNDRV_PCM_TRIGGER_START and SNDRV_PCM_TRIGGER_RESUME.
>>>> It's quite possible this hasn't been tested, or tested recently. I don't
>>>> recall how to test PAUSE/RESUME. Can you enlighten me?
>>>>
>>>> Laxman, can you comment here?
>>> The tegra20/Tegra30 does not support the pause of the channel. It was
>>> through global pause. hence the pause and resume is implemented like stop
>>> transfer and again restart transfer. hence you are seeing this as the reset
>>> pointer as 0.
>>>
>> Yea, but in that case you shouldn't implement pause/resume at all. You've
>> changed the semantics on pause/resume on which applications rely. If
>> pause/resume are not implemented applications usually workaround it.
>>
>> - Lars
>>
>
> So should we return -EINVAL in case of following?
>
> case SNDRV_PCM_TRIGGER_RESUME:
> case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
>
Don't set the SNDRV_PCM_INFO_PAUSE and SNDRV_PCM_INFO_RESUME bits in the
pcm_hardware struct and use snd_dmaengine_pcm_trigger as your trigger
callback. The ALSA core will take care of everything else.
- Lars
prev parent reply other threads:[~2013-03-23 13:34 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-22 16:26 ASoC: tegra: Does the PCM_TRIGGER_{PAUSE, RESUME} emulation really work? Lars-Peter Clausen
2013-03-22 23:35 ` Stephen Warren
2013-03-23 10:00 ` Lars-Peter Clausen
[not found] ` <514DAB42.6090601@nvidia.com>
2013-03-23 13:29 ` Lars-Peter Clausen
[not found] ` <514DADE9.50402@nvidia.com>
2013-03-23 13:36 ` Lars-Peter Clausen [this message]
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=514DAFE5.9050801@metafoo.de \
--to=lars@metafoo.de \
--cc=alsa-devel@alsa-project.org \
--cc=ldewangan@nvidia.com \
--cc=swarren@wwwdotorg.org \
/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.