2010/5/4 Timur Tabi <timur@xxxxxxxxxxxxx> > 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. _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel