linux/arch/arm/plat-omap/include/mach
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
..
blizzard.h
board-ams-delta.h
board-sx1.h
board-voiceblue.h ARM: OMAP: Remove remaining board-*.h includes from hardware.h 2009-03-23 18:07:39 -07:00
board.h ARM: OMAP: get rid of OMAP_TAG_USB, v2 2009-03-23 18:51:20 -07:00
clkdev.h [ARM] omap: convert OMAP1 to use clkdev 2009-02-08 17:50:13 +00:00
clock.h Merge branch 'omap4' into for-next 2009-05-28 15:45:14 -07:00
clockdomain.h [ARM] OMAP2/3 clockdomains: combine pwrdm, pwrdm_name into union in struct clockdomain 2009-02-08 17:50:28 +00:00
common.h Merge branch 'omap4' into for-next 2009-05-28 15:45:14 -07:00
control.h Merge branch 'omap4' into for-next 2009-05-28 15:45:14 -07:00
cpu.h ARM: OMAP4: Add minimal support for omap4 2009-05-28 14:16:04 -07:00
debug-macro.S ARM: OMAP4: Add minimal support for omap4 2009-05-28 14:16:04 -07:00
dma.h ARM: OMAP4: Add minimal support for omap4 2009-05-28 14:16:04 -07:00
dmtimer.h OMAP2/3 GPTIMER: allow system tick GPTIMER to be changed in board-*.c files 2009-04-23 21:11:10 -06:00
dsp_common.h
entry-macro.S ARM: OMAP4: SMP: Add mpu timer support for OMAP4430 2009-06-09 13:03:59 +05:30
fpga.h [ARM] omap: make sure virtual mmio addresses are __iomem pointer-like 2008-09-05 17:02:32 +01:00
gpio-switch.h
gpio.h [OMAP850] Changes to base IO subsystem, v2 2009-03-23 18:07:40 -07:00
gpmc-smc91x.h ARM: OMAP2/3: Add generic smc91x support when connected to GPMC 2009-05-28 13:23:52 -07:00
gpmc.h [ARM] OMAP2 SDRC: move mach-omap2/memory.h into mach/sdrc.h 2009-02-08 17:50:38 +00:00
hardware.h ARM: OMAP4: Add minimal support for omap4 2009-05-28 14:16:04 -07:00
hwa742.h ARM: OMAP1: Make 770 LCD work 2009-05-28 14:03:31 -07:00
io.h ARM: OMAP4: Add minimal support for omap4 2009-05-28 14:16:04 -07:00
iommu.h omap iommu: tlb and pagetable primitives 2009-05-05 14:52:39 +03:00
iommu2.h omap iommu: omap2 architecture specific functions 2009-05-05 14:52:39 +03:00
iovmm.h omap iommu: simple virtual address space management 2009-05-19 08:23:49 +03:00
irda.h ARM: OMAP: Remove old dead gpio expander code 2009-04-23 11:10:40 -07:00
irqs.h ARM: OMAP4: SMP: Add mpu timer support for OMAP4430 2009-06-09 13:03:59 +05:30
keypad.h ARM: OMAP3: Initialize more devices for LDP 2009-05-28 14:04:00 -07:00
lcd_mipid.h
led.h
mailbox.h omap mailbox: add save_/restore_ctx() for PM 2009-03-23 18:07:26 -07:00
mcbsp.h ARM: OMAP: McBSP: Fix ASoC on OMAP1510 by fixing API of omap_mcbsp_start/stop 2009-08-07 10:57:42 +01:00
mcspi.h
memory.h ARM: OMAP4: Add minimal support for omap4 2009-05-28 14:16:04 -07:00
menelaus.h
mmc.h ARM: OMAP: MMC: Remove unused power_pin 2009-04-23 11:10:44 -07:00
mtd-xip.h ALSA: Correct Vladimir Barinov's e-mail address 2008-10-10 13:41:45 +02:00
mux.h ARM: OMAP3: Add more GPIO mux options 2009-03-23 18:51:21 -07:00
nand.h
omap-alsa.h
omap16xx.h ARM: OMAP2: Misc updates from linux-omap tree 2008-10-06 15:49:36 +03:00
omap24xx.h ARM: OMAP2/3: Remove OMAP_CM_REGADDR 2009-05-25 11:26:46 -07:00
omap34xx.h ARM: OMAP2/3: Remove L4_WK_OMAP_BASE, L4_PER_OMAP_BASE, L4_EMU_BASE, L3_OMAP_BASE 2009-05-28 14:03:58 -07:00
omap44xx.h ARM: OMAP4: Add minimal support for omap4 2009-05-28 14:16:04 -07:00
omap730.h
omap850.h [OMAP850] Add base support for omap850 cpu 2009-03-23 18:07:39 -07:00
omap1510.h ARM: OMAP2: Misc updates from linux-omap tree 2008-10-06 15:49:36 +03:00
omapfb.h [ARM] omap: fix a pile of issues 2008-12-01 17:40:54 +00:00
onenand.h ARM: OMAP2/3: Add generic onenand support when connected to GPMC 2009-05-28 13:23:52 -07:00
param.h
powerdomain.h [ARM] OMAP2/3 clockdomains: add CM and PRM clkdms 2009-02-08 17:50:29 +00:00
prcm.h [ARM] OMAP: Fix sparse, checkpatch warnings in OMAP2/3 PRCM/PM code 2009-02-08 17:50:24 +00:00
sdrc.h [ARM] OMAP2 SDRC: add SDRAM timing parameter infrastructure 2009-02-08 17:50:39 +00:00
serial.h Merge branch 'omap4' into for-next 2009-05-28 15:45:14 -07:00
smp.h ARM: OMAP4: SMP: Add OMAP4430 SMP board files 2009-06-09 13:03:50 +05:30
sram.h OMAP3: Add support for DPLL3 divisor values higher than 2 2009-06-19 19:09:32 -06:00
system.h Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel 2009-03-25 18:31:35 +00:00
tc.h
timer-gp.h OMAP2/3 GPTIMER: allow system tick GPTIMER to be changed in board-*.c files 2009-04-23 21:11:10 -06:00
timex.h
uncompress.h
usb.h OMAP3: PM: Ensure MUSB block can idle when driver not loaded 2009-05-28 10:59:09 -07:00
vmalloc.h ARM: OMAP: Increase VMALLOC_END to allow 256MB RAM 2009-05-25 11:08:41 -07:00