linux/sound/soc
Stephen Warren 713d136978 ASoC: Tegra: I2S: Ensure clock is enabled when writing regs
The I2S controller needs a clock to respond to register writes. Without
this, register writes will at worst hang the CPU. In practice, I've only
observed writes being dropped.

Luckily, the dropped register writes historically had no effect:

TEGRA_I2S_TIMING: The value we wrote was the reset default.

TEGRA_I2S_FIFO_SCR: The default was for the FIFOs to request more data
when one slot was empty. The requested value was for the FIFOs to request
when four slots were empty. The DMA controller in the mainline kernel is
configured to burst a single entry at a time into the FIFO, hence there
was no issue. The only negative effect was on bus efficiency losses due
to an increased number of arbitration attempts.

However, in various non-upstream changes, the DMA controller now bursts
four entries at a time into the FIFO. If there is only space for one
entry, the data is simply dropped. In practice, this resulted in 3/4 of
samples being dropped, and playback at 4x the expected rate and pitch.
By fixing the clocking issue, this is solved.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-07-04 08:49:05 -07:00
..
atmel ASoC: atmel_ssc: Don't try to free ssc if request failed 2011-06-03 10:04:17 +01:00
au1x ASoC: Remove -codec from WM8731 driver name 2011-03-30 07:15:33 +09:00
blackfin ASoC: Fix Blackfin I2S _pointer() implementation return in bounds values 2011-06-29 09:47:53 -07:00
codecs ASoC: WM8804 does not support sample rates below 32kHz 2011-06-09 11:51:07 +01:00
davinci mfd: Use mfd cell platform_data for davinci cells platform bits 2011-05-26 19:45:13 +02:00
ep93xx ASoC: Enable 192kHz sample rate for EP93xx. 2011-03-09 13:08:42 +00:00
fsl ASoC: fsl: fix initialization of DMA buffers 2011-06-09 11:53:11 +01:00
imx ASoC: imx: add missing module informations 2011-06-23 20:08:50 +01:00
jz4740 Merge branch 'for-2.6.39' into for-2.6.40 2011-05-03 19:07:45 +01:00
kirkwood Fix common misspellings 2011-03-31 11:26:23 -03:00
mid-x86 Merge branch 'for-2.6.39' into for-2.6.40 2011-05-03 23:30:36 +01:00
nuc900 Merge branch 'for-2.6.37' into for-2.6.38 2010-11-30 11:35:43 +00:00
omap Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2011-05-26 12:11:54 -07:00
pxa ASoC: pxa-ssp: Correct check for stream presence 2011-06-23 20:09:56 +01:00
s6000 ASoC: Remove needless inclusion of tlv320aic3x.h from machine drivers 2011-01-05 11:28:50 +00:00
samsung ASoC: SAMSUNG: Fix the incorrect referencing of I2SCON register 2011-06-10 10:54:46 +01:00
sh ASoC: sh: fsi: Add module/port clock control function 2011-04-26 11:42:11 +01:00
tegra ASoC: Tegra: I2S: Ensure clock is enabled when writing regs 2011-07-04 08:49:05 -07:00
txx9 ASoC: multi-component - ASoC Multi-Component Support 2010-08-12 14:00:00 +01:00
Kconfig ASoC: tegra: Kconfig and Makefile 2011-01-10 22:21:09 +00:00
Makefile ASoC: tegra: Kconfig and Makefile 2011-01-10 22:21:09 +00:00
soc-cache.c ASoC: Remove unused and about to be broken SND_SOC_CUSTOM I/O bus 2011-06-13 19:17:55 +01:00
soc-core.c ASoC: core - remove superfluous new line. 2011-05-25 04:45:47 +08:00
soc-dapm.c ASoC: snd_soc_new_{mixer,mux,pga} make sure to use right DAPM context 2011-06-09 15:06:54 +01:00
soc-jack.c ASoC: Merge branch 'for-2.6.39' into for-2.6.40 2011-04-18 18:07:43 +01:00
soc-utils.c ASoC: Work around allmodconfig failure 2011-04-28 12:09:06 +01:00