lkml.org 
[lkml]   [2014]   [May]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH] dma: pl330: Add support for DMA_PAUSE command
From
On 16 May 2014 00:51, Lars-Peter Clausen <lars@metafoo.de> wrote:
> On 05/15/2014 02:01 PM, Tushar Behera wrote:
>>
>> On 14 May 2014 17:54, Lars-Peter Clausen <lars@metafoo.de> wrote:
>>>
>>> On 05/14/2014 02:07 PM, Tushar Behera wrote:
>>>>
>>>>
>>>> On 14 May 2014 17:29, Jassi Brar <jassisinghbrar@gmail.com> wrote:
>>>>>
>>>>>
>>>>> On Wed, May 14, 2014 at 8:53 AM, Tushar Behera
>>>>> <tushar.behera@linaro.org>
>>>>> wrote:
>>>>>>
>>>>>>
>>>>>> While playing back audio, pmc_dmaengine requests the DMA channel to
>>>>>> stop DMA transmission through DMA_PAUSE command.
>>>>>>
>>>>>> Currently PL330 driver doesn't support DMA pause command, leaving
>>>>>> the DMA state inconsistent when the system resumes. Instead, it would
>>>>>> be better to terminate the DMA transfer during suspend and restart
>>>>>> again during resume.
>>>>>>
>>>>>> Tested with audio playback across a suspend-resume cycle.
>>>>>>
>>>>> What is pmc_dmaengine? How does DMA_PAUSE help, when there is no
>>>>> DMA_RESUME?
>>>>>
>>>>
>>>> Sorry, it is a typo.
>>>>
>>>> sound/core/pcm_dmaengine.c:snd_dmaengine_pcm_trigger() -->
>>>> dmaengine_pause() is called during system suspend.
>>>
>>>
>>>
>>> It is only called if the DMA driver has support for pausing and resuming
>>> DMA
>>> transfers. Or at least that is the intention.
>>>
>>> - Lars
>>
>>
>> During suspend, snd_dmaengine_pcm_trigger():SNDRV_PCM_TRIGGER_SUSPEND
>> is called which unconditionally calls dmaengine_pause(). Should we
>> update snd_dmaengine_pcm_trigger() to check for DMA pause/resume
>> support and call dmaengine_pause() or dmaengine_terminate_all()
>> accordingly?
>
>
> As far as I understand it we do not have to do anything for TRIGGER_SUSPEND
> if we do not set the SNDRV_PCM_INFO_RESUME flag. It looks like
> TRIGGER_SUSPEND is called unconditionally during suspend. But since the
> error code is ignored it should be fine if we just call dmaengine_pause()
> and that return -ENOSYS or similar.
>
> Are you seeing an actual issue that you are trying to fix with your patch?
>
> - Lars
>

Without this patch applied, if audio is playing back while suspend is
triggered, it doesn't playback after resume. Stopping the stream and
replaying works.

--
Tushar Behera


\
 
 \ /
  Last update: 2014-05-19 05:41    [W:0.141 / U:0.192 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site