[alsa-devel] asoc: fsl_dma_hw_free being called twice at end of playback

Raymond Yau superquad.vortex2 at gmail.com
Tue May 4 01:57:37 CEST 2010


2010/5/4 Timur Tabi <timur at freescale.com>

> In my 8610 ASoC driver, I'm seeing the DMA driver's .hw_free function being
> called twice whenever playback ends.  I've added some printk's to
> demonstrate:
>
> snd_pcm_common_ioctl1:2543
> snd_pcm_hw_free:543
> soc_pcm_hw_free:761 c023983c
> fsl_dma_hw_free:720 substream=df029d00 dma_private=df440000 stream=0
> snd_pcm_release_substream:2022
> soc_pcm_hw_free:761 c023983c
> fsl_dma_hw_free:720 substream=df029d00 dma_private=df440000 stream=0
> fsl_dma_close:759 substream=df029d00 dma_private=df440000
>
> So the ioctl is being called only once, but the both snd_pcm_hw_free() and
> snd_pcm_release_substream() are calling the .hw_free function.
>
> Is this normal?  I don't know how to handle this, other than to add some
> boolean to my private data structure that indicates whether the resources
> have been freed or not.
>
> --
> Timur Tabi
> Linux kernel developer at Freescale
>

http://www.alsa-project.org/~tiwai/writing-an-alsa-driver/ch05s06.html#pcm-interface-operators-hw-free-callback

This function is always called before the close callback is called. Also,
the callback may be called multiple times, too. Keep track whether the
resource was already released.


More information about the Alsa-devel mailing list