linux/sound/soc
Jarkko Nikula c12abc012e ARM: OMAP: McBSP: Fix ASoC on OMAP1510 by fixing API of omap_mcbsp_start/stop
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>
Acked-by: Tony Lindgren <tony@atomide.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-08-07 10:57:42 +01:00
..
atmel ASoC: correct print specifiers for unsigneds 2009-05-28 10:20:26 +01:00
au1x ALSA: Add missing SNDRV_PCM_INFO_BATCH flag to some drivers 2009-04-28 15:06:44 +02:00
blackfin ASoC: Blackfin: update the bf5xx_i2s_resume parameters 2009-06-20 19:45:28 +01:00
codecs ASoC: tlv320aic3x: Enable PLL when not bypassed 2009-07-23 08:14:29 +01:00
davinci ASoC: DaVinci EVM board support buildfixes 2009-05-15 08:59:07 +01:00
fsl ASoC: add locking to mpc5200-psc-ac97 driver 2009-07-03 10:41:47 +01:00
omap ARM: OMAP: McBSP: Fix ASoC on OMAP1510 by fixing API of omap_mcbsp_start/stop 2009-08-07 10:57:42 +01:00
pxa ASoC: Only disable pxa2xx-i2s clocks if we enabled them 2009-07-01 18:31:32 +01:00
s3c24xx Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2009-06-14 13:42:43 -07:00
s6000 ASoC: correct s6000 I2S clock polarity 2009-04-06 11:18:39 +01:00
sh ASoC: correct print specifiers for unsigneds 2009-05-28 10:20:26 +01:00
txx9 ASoC: Kill BUS_ID_SIZE 2009-06-17 11:42:45 +02:00
Kconfig ASoC: Add TXx9 AC link controller driver (v3) 2009-05-19 19:54:28 +01:00
Makefile ASoC: Add TXx9 AC link controller driver (v3) 2009-05-19 19:54:28 +01:00
soc-core.c ASoC: Instantiate any forgotten DAPM widgets 2009-06-14 16:14:53 +01:00
soc-dapm.c ASoC: Apostrophe patrol 2009-06-06 11:26:15 +01:00
soc-jack.c ASoC: Staticise workqueue function for GPIO jack detection 2009-03-06 13:37:19 +00:00