android_kernel_oneplus_msm8998/sound
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
..
aoa sound: remove driver_data direct access of struct device 2009-05-12 09:20:54 +02:00
arm ASoC: Fix NULL pointer dereference in __pxa2xx_pcm_hw_free 2009-07-09 10:36:19 +01:00
atmel ALSA: snd-atmel-abdac: increase periods_min to 6 instead of 4 2009-04-06 03:56:28 +02:00
core Merge branch 'topic/seq-midi-fix' into for-linus 2009-06-22 17:03:56 +02:00
drivers time: move PIT_TICK_RATE to linux/timex.h 2009-06-16 19:47:27 -07:00
i2c V4L/DVB (10771): tea575x-tuner: convert it to V4L2 API 2009-03-30 12:43:02 -03:00
isa Merge branch 'topic/seq-kconfig-cleanup' into for-linus 2009-06-10 07:26:48 +02:00
mips ALSA: sgio2audio.c: clean up checking 2009-06-07 09:08:43 +02:00
oss time: move PIT_TICK_RATE to linux/timex.h 2009-06-16 19:47:27 -07:00
parisc Merge branch 'topic/section-fix' into for-linus 2009-06-10 07:26:46 +02:00
pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2009-06-23 10:45:39 -07:00
pcmcia ALSA: Add missing SNDRV_PCM_INFO_BATCH flag to some drivers 2009-04-28 15:06:44 +02:00
ppc Merge branch 'topic/ps3' into for-linus 2009-06-12 20:03:16 +02:00
sh trivial: Fix misspelling of firmware 2009-03-30 15:21:59 +02:00
soc ARM: OMAP: McBSP: Fix ASoC on OMAP1510 by fixing API of omap_mcbsp_start/stop 2009-08-07 10:57:42 +01:00
sparc ALSA: Add missing SNDRV_PCM_INFO_BATCH flag to some drivers 2009-04-28 15:06:44 +02:00
spi ALSA: Convert to snd_card_create() in other sound/* 2009-01-12 15:21:19 +01:00
synth ALSA: clean up the logic for building sequencer modules 2009-05-29 11:49:42 +02:00
usb Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2009-06-21 13:13:08 -07:00
ac97_bus.c ALSA: ac97 - Include ac97_codec.h for ac97_bus_type declaration 2008-12-02 16:25:37 +01:00
Kconfig ALSA: Add Atmel ALSA drivers directory 2009-02-05 15:08:53 +01:00
last.c
Makefile ALSA: Add Atmel ALSA drivers directory 2009-02-05 15:08:53 +01:00
sound_core.c Driver Core: sound: add nodename for sound drivers 2009-06-15 21:30:26 -07:00
sound_firmware.c