On Wed, 2007-06-06 at 18:36 +0530, Nobin Mathew wrote: > Liam, > > I have one suggestion. > > Can we use this > > if (rtd->codec_dai->ops.trigger) { > ret = rtd->codec_dai->ops.trigger(substream, cmd); > if (ret < 0) > return ret; > } > > if (rtd->cpu_dai->ops.trigger) { > ret = rtd->cpu_dai->ops.trigger(substream, cmd); > if (ret < 0) > return ret; > } > if (platform->pcm_ops->trigger) { > ret = platform->pcm_ops->trigger(substream, cmd); > if (ret < 0) > return ret; > } > > Instead of > > if (rtd->codec_dai->ops.trigger) { > ret = rtd->codec_dai->ops.trigger(substream, cmd); > if (ret < 0) > return ret; > } > > if (platform->pcm_ops->trigger) { > ret = platform->pcm_ops->trigger(substream, cmd); > if (ret < 0) > return ret; > } > > if (rtd->cpu_dai->ops.trigger) { > ret = rtd->cpu_dai->ops.trigger(substream, cmd); > if (ret < 0) > return ret; > } > > > That means trigger the Cpu before pcm. Because most of the controllers > needs to be initialized and triggered before external DMA is > triggered. > > Correct me if i am going wrong. The current ordering allows the DMA to trigger before the I2S/PCM controller triggers. This means that the DMA should be ready before the controller generates any FIFO DMA interrupt requests. Fwiw, this seems to work well on most machines atm. > This was causing so many problems in my hardware. What sort of problems. Underruns ? What does your trigger do in each case ? Is it possible to set some of your controller up in prepare() and then hit it's enable bit in trigger ? Liam _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel