On Friday 07 August 2009 09:59:47 ext Jarkko Nikula wrote: > Simultaneous audio playback and capture on OMAP1510 can cause that second > stream is stalled if there is enough delay between startup of the audio > streams. > > Current implementation of the omap_mcbsp_start is starting both transmitter > and receiver at the same time and it is called only for firstly started > audio stream from the OMAP McBSP based ASoC DAI driver. > > Since DMA request lines on OMAP1510 are edge sensitive, the DMA request is > missed if there is no DMA transfer set up at that time when the first word > after McBSP startup is transmitted. The problem hasn't noted before since > later OMAPs are using level sensitive DMA request lines. > > Fix the problem by changing API of omap_mcbsp_start and omap_mcbsp_stop by > allowing to start and stop individually McBSP transmitter and receiver > logics. Then call those functions individually for both audio playback > and capture streams. This ensures that DMA transfer is setup before > transmitter or receiver is started. > > Thanks to Janusz Krzysztofik <jkrzyszt@xxxxxxxxxxxx> for detailed problem > analysis and Peter Ujfalusi <peter.ujfalusi@xxxxxxxxx> for info about DMA > request line behavior differences between the OMAP generations. > > Reported-and-tested-by: Janusz Krzysztofik <jkrzyszt@xxxxxxxxxxxx> > Signed-off-by: Jarkko Nikula <jhnikula@xxxxxxxxx> > Cc: Mark Brown <broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx> > Cc: Tony Lindgren <tony@xxxxxxxxxxx> > --- > arch/arm/plat-omap/include/mach/mcbsp.h | 4 +- > arch/arm/plat-omap/mcbsp.c | 50 > +++++++++++++++++++----------- sound/soc/omap/omap-mcbsp.c | > 10 +++--- > 3 files changed, 39 insertions(+), 25 deletions(-) Acked-by: Peter Ujfalusi <peter.ujfalusi@xxxxxxxxx> _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel