Messages in this thread | | | Date | Thu, 15 May 2014 21:21:12 +0200 | From | Lars-Peter Clausen <> | Subject | Re: [PATCH] dma: pl330: Add support for DMA_PAUSE command |
| |
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
| |