Messages in this thread | | | From | Peter Ujfalusi <> | Subject | Re: [alsa-devel] [PATCH][2.6.31-rc5] ARM: OMAP: McBSP: Fix ASoC on OMAP1510 by fixing API of omap_mcbsp_start/stop | Date | Fri, 7 Aug 2009 11:52:47 +0300 |
| |
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@tis.icnet.pl> for detailed problem > analysis and Peter Ujfalusi <peter.ujfalusi@nokia.com> for info about DMA > request line behavior differences between the OMAP generations. > > Reported-and-tested-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> > Signed-off-by: Jarkko Nikula <jhnikula@gmail.com> > Cc: Mark Brown <broonie@opensource.wolfsonmicro.com> > Cc: Tony Lindgren <tony@atomide.com> > --- > 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@nokia.com>
| |