linux/arch/arm/plat-samsung
Tomasz Figa 9b9ae16a97 ASoC: Samsung: Do not queue cyclic buffers multiple times
The legacy S3C-DMA API required every period of a cyclic buffer to be
queued separately. After conversion of Samsung ASoC to Samsung DMA
wrappers somebody made an assumption that the same is needed for DMA
engine API, which is not true.

In effect, Samsung ASoC DMA code was queuing the whole cyclic buffer
multiple times with a shift of one period per iteration, leading to:
  a) severe memory waste - up to 13x times more DMA transfer descriptors
     are allocated than needed,
  b) possible memory corruption, because further cyclic buffers were out
     of the original buffers, due to the offset.

This patch fixes this problem by making the legacy S3C-DMA API use the
same semantics as DMA engine (the whole cyclic buffer is enqueued at
once) and modifying users of Samsung DMA wrappers in cyclic mode to
behave appropriately.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-29 17:31:02 +01:00
..
include/plat Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
adc.c arch/arm/plat-samsung: don't check resource with devm_ioremap_resource 2013-05-18 11:59:33 +02:00
clock-clksrc.c
clock.c ARM: SAMSUNG: call clk_get_rate for debugfs rate files 2012-10-23 19:19:22 +09:00
cpu.c Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
dev-backlight.c ARM: SAMSUNG: Add __init attribute to samsung_bl_set() 2012-03-09 08:03:13 -08:00
dev-uart.c
devs.c ARM: SAMSUNG: Add names to fimd0 IRQ resources 2013-05-25 06:49:43 +09:00
dma-ops.c ARM: SAMSUNG: Remove unnecessary code for dma 2013-04-08 21:42:10 +09:00
dma.c
init.c ARM: EXYNOS: Remove legacy UART initialization code 2013-06-15 09:32:58 +09:00
irq-vic-timer.c ARM: arm-soc multiplatform updates for 3.10 2013-05-02 09:38:16 -07:00
Kconfig ARM SoC specific changes 2013-07-02 13:43:38 -07:00
Makefile ARM SoC specific changes 2013-07-02 13:43:38 -07:00
platformdata.c ARM: SAMSUNG: remove all uses of clk_type member in sdhci platform data 2012-04-21 08:24:56 -07:00
pm-check.c
pm-gpio.c ARM: EXYNOS: Decouple ARCH_EXYNOS from PLAT_S5P 2013-06-19 01:26:42 +09:00
pm.c cleanup and removing dead code for only support DT for exynos 2013-06-20 22:36:11 +02:00
pwm-clock.c
s3c-dma-ops.c ASoC: Samsung: Do not queue cyclic buffers multiple times 2013-08-29 17:31:02 +01:00
s5p-clock.c ARM: SAMSUNG: Update default rate for xusbxti clock 2012-07-13 15:34:30 +09:00
s5p-dev-mfc.c ARM: SAMSUNG: Make legacy MFC support code depend on SAMSUNG_ATAGS 2013-06-19 01:28:56 +09:00
s5p-dev-uart.c ARM: SAMSUNG: move platform device for s5p uart into plat-samsung 2012-05-13 07:01:51 +09:00
s5p-irq-eint.c irqchip: Move ARM vic.h to include/linux/irqchip/arm-vic.h 2013-01-12 10:52:16 -06:00
s5p-irq-gpioint.c arm: Move chained_irq_(enter|exit) to a generic file 2013-03-26 16:11:43 +00:00
s5p-irq-pm.c ARM: SAMSUNG: move pm part for common s5p into plat-samsung 2012-05-13 07:01:34 +09:00
s5p-irq.c ARM: exynos: prepare for sparse IRQ 2013-04-19 13:51:20 +02:00
s5p-pm.c ARM: SAMSUNG: move pm part for common s5p into plat-samsung 2012-05-13 07:01:34 +09:00
s5p-sleep.S ARM: SAMSUNG: check processor type before cache restoration in resume 2013-04-04 16:01:20 +09:00
samsung-time.c sched_clock: Make ARM's sched_clock generic for all architectures 2013-06-12 14:02:13 -07:00
setup-camif.c ARM: SAMSUNG: Add s3c24xx/s3c64xx CAMIF GPIO setup helpers 2012-11-28 08:03:27 +09:00
setup-mipiphy.c ARM: SAMSUNG: Export MIPI CSIS/DSIM PHY control functions 2013-03-07 16:27:18 +09:00
wakeup-mask.c
watchdog-reset.c ARM: SAMSUNG: Add watchdog reset driver 2013-06-19 03:13:16 +09:00