linux/sound/soc/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
..
ac97.c ASoC: samsung: Rename DMA platform registration functions 2013-08-20 10:36:33 +01:00
bells.c ASoC: bells: Hookup DMICs for Bells 2013-05-27 08:05:19 -04:00
dma.c ASoC: Samsung: Do not queue cyclic buffers multiple times 2013-08-29 17:31:02 +01:00
dma.h ASoC: samsung: Rename DMA platform registration functions 2013-08-20 10:36:33 +01:00
goni_wm8994.c ASoC: switch over to use snd_soc_register_component() on goni_wm8994 2013-03-26 21:57:42 +00:00
h1940_uda1380.c ASoC: samsung: move plat/ headers to local directory 2013-04-11 18:17:38 +01:00
i2s-regs.h ASoC: Samsung: I2S: Modify the I2S driver to support I2S on Exynos5420 2013-08-13 13:44:09 +01:00
i2s.c ASoC: samsung: Rename DMA platform registration functions 2013-08-20 10:36:33 +01:00
i2s.h ASoC: samsung: Rename samsung i2s secondary device name 2013-01-24 14:40:13 +08:00
idma.c samsung: don't bother with setting VM_IO 2013-06-29 12:46:36 +04:00
idma.h ASoC: Fix __iomem annotation for IDMA registers 2011-11-29 17:28:16 +00:00
jive_wm8750.c ASoC: Samsung: Do not register samsung audio dma device as pdev 2012-12-07 19:36:07 +09:00
Kconfig ASoC: samsung: Fix a typo of CONFIG_SND_SOC_BT_SCO 2013-06-21 18:09:49 +02:00
littlemill.c ASoC: Samsung: remove __dev* attributes 2012-12-10 00:30:19 +09:00
ln2440sbc_alc650.c ASoC: Samsung: Do not register samsung audio dma device as pdev 2012-12-07 19:36:07 +09:00
lowland.c ASoC: Samsung: remove __dev* attributes 2012-12-10 00:30:19 +09:00
Makefile ASoC: bells: Add machine driver for Wolfson Bells boards 2012-08-09 19:34:30 +01:00
neo1973_wm8753.c ASoC: dfbmcs320: make the driver common for other BT modules 2013-05-21 13:17:08 -05:00
pcm.c ASoC: samsung: Fix build error with dma function rename 2013-08-22 14:28:00 +01:00
pcm.h
regs-ac97.h ASoC: samsung: move plat/ headers to local directory 2013-04-11 18:17:38 +01:00
regs-i2s-v2.h
regs-iis.h ASoC: samsung: move plat/ headers to local directory 2013-04-11 18:17:38 +01:00
rx1950_uda1380.c ASoC: samsung: move plat/ headers to local directory 2013-04-11 18:17:38 +01:00
s3c24xx_simtec_hermes.c ASoC: Samsung: remove __dev* attributes 2012-12-10 00:30:19 +09:00
s3c24xx_simtec_tlv320aic23.c ASoC: Samsung: remove __dev* attributes 2012-12-10 00:30:19 +09:00
s3c24xx_simtec.c ASoC: Samsung: remove __dev* attributes 2012-12-10 00:30:19 +09:00
s3c24xx_simtec.h
s3c24xx_uda134x.c ASoC: samsung: move plat/ headers to local directory 2013-04-11 18:17:38 +01:00
s3c24xx-i2s.c ASoC: samsung: Fix build error with dma function rename 2013-08-22 14:28:00 +01:00
s3c24xx-i2s.h
s3c2412-i2s.c ASoC: samsung: Fix build error with dma function rename 2013-08-22 14:28:00 +01:00
s3c2412-i2s.h
s3c-i2s-v2.c ASoC: Samsung: Remove redundant comment 2013-07-04 13:51:14 +01:00
s3c-i2s-v2.h ASoC: switch over to use snd_soc_register_component() on s3c i2s 2013-03-26 21:57:31 +00:00
smartq_wm8987.c ASoC: Samsung: Do not register samsung audio dma device as pdev 2012-12-07 19:36:07 +09:00
smdk2443_wm9710.c ASoC: Samsung: Do not register samsung audio dma device as pdev 2012-12-07 19:36:07 +09:00
smdk_spdif.c ASoC: Samsung: Do not register samsung audio dma device as pdev 2012-12-07 19:36:07 +09:00
smdk_wm8580.c ASoC: samsung: Rename samsung i2s secondary device name 2013-01-24 14:40:13 +08:00
smdk_wm8580pcm.c ASoC: Samsung: Remove redundant platform_set_drvdata() 2013-05-12 20:49:13 +04:00
smdk_wm8994.c ASoC: smdk_wm8994: Configure the MCLK1 rate based on the board 2013-07-29 18:34:29 +01:00
smdk_wm8994pcm.c ASoC: Samsung: Remove redundant platform_set_drvdata() 2013-05-12 20:49:13 +04:00
smdk_wm9713.c ASoC: Samsung: Do not register samsung audio dma device as pdev 2012-12-07 19:36:07 +09:00
spdif.c ASoC: samsung: Fix build error with dma function rename 2013-08-22 14:28:00 +01:00
spdif.h
speyside.c ASoC: Samsung: remove __dev* attributes 2012-12-10 00:30:19 +09:00
tobermory.c ASoC: Samsung: remove __dev* attributes 2012-12-10 00:30:19 +09:00