kernel-fxtec-pro1x/sound/soc/tegra
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
..
Kconfig ASoC: tegra: TrimSlice machine support 2011-05-03 18:42:44 +01:00
Makefile ASoC: tegra: TrimSlice machine support 2011-05-03 18:42:44 +01:00
tegra_asoc_utils.c ASoC: Tegra: Don't return mclk_changed from utils_set_rate 2011-04-20 13:49:55 +01:00
tegra_asoc_utils.h ASoC: Tegra: Don't return mclk_changed from utils_set_rate 2011-04-20 13:49:55 +01:00
tegra_das.c ASoC: Tegra: Add MODULE_ALIAS 2011-02-13 19:50:10 +00:00
tegra_das.h
tegra_i2s.c ASoC: Tegra: I2S: Ensure clock is enabled when writing regs 2011-07-04 08:49:05 -07:00
tegra_i2s.h ASoC: tegra: Add tegra-i2s driver 2011-01-10 22:20:39 +00:00
tegra_pcm.c ASoC: Tegra: Fix error handling in DMA channel alloc 2011-02-28 15:10:03 +00:00
tegra_pcm.h
tegra_wm8903.c ASoC: Tegra: wm8903: s/code/data/ for control/widget/maps 2011-04-20 13:50:36 +01:00
trimslice.c ASoC: tegra: TrimSlice machine support 2011-05-03 18:42:44 +01:00