Messages in this thread | | | Date | Mon, 19 May 2014 08:40:23 +0530 | Subject | Re: [PATCH] dma: pl330: Add support for DMA_PAUSE command | From | Tushar Behera <> |
| |
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
| |