On Tue, May 29, 2012 at 3:33 PM, Russell King - ARM Linux linux@arm.linux.org.uk wrote:
On Tue, May 29, 2012 at 10:48:54AM +0530, Vinod Koul wrote:
On Tue, 2012-05-29 at 13:14 +0800, zhangfei gao wrote:
When debugging with putting snd_dmaengine_pcm_open to probe or pcm_new, there is issue. snd_dmaengine_pcm_open -> snd_pcm_hw_constraint_integer(substream->runtime,
SNDRV_PCM_HW_PARAM_PERIODS); The runtime is only exist at runtime. So if using soc-dmaengine, I am afraid the snd_dmaengine_pcm_open has to be put in open instead of probe.
I think you got it wrong, the snd_dmaengine_pcm_open needs to be called from your CPU pcm_open. See other examples how this is used in other drivers.
But, as I pointed out earlier, there's the issue of using the wrong struct device to allocate memory for the DMA engine. That's something that my soc-dmaengine.c got _right_, and soc-dmaengine-pcm.c gets _wrong_.
Could you help clarify what's the struct device should be used? Any example, not find soc-dmaengine.c. When debug, rtd->card->snd_card->dev is same as substream->pcm->card->dev, which we using now.
Thanks a lot.