diff options
author | Manuel Lauss <manuel.lauss@googlemail.com> | 2009-09-08 19:45:17 +0200 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-09-08 19:21:27 +0100 |
commit | cdc65fbe18aef15e92d2ebb410a189fbf956fb06 (patch) | |
tree | d121aea788bf52467683a9072ff3d15b89bd5c08 /sound/soc/au1x/psc.h | |
parent | 87831cb660954356d68cebdb1406f3be09e784e9 (diff) | |
download | op-kernel-dev-cdc65fbe18aef15e92d2ebb410a189fbf956fb06.zip op-kernel-dev-cdc65fbe18aef15e92d2ebb410a189fbf956fb06.tar.gz |
ASoC: au1x: PSC-AC97 bugfixes
This patch fixes the following bugs:
- only reprogram bitdepth if it has changed since last call to hw_params.
- add locking inside ac97_read/write functions:
When reprogramming sample depth, the ac97 unit has to be disabled,
which should not be done in the middle of codec register accesses.
- retry timed-out codec register accesses.
- wait for status bits to set/clear when starting/stopping various
functional blocks; very important after reenabling AC97 unit else
sound may be distorted (e.g. high-pitch noise in 1kHz sine wave).
- clear fifos before/after starting/stopping RX/TX.
- longer timeouts waiting for PSC/AC97 ready after cold reset
with certain codecs this can take ridiculous amounts of time.
Run-tested on various Au1200 platforms with various codecs.
Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/au1x/psc.h')
-rw-r--r-- | sound/soc/au1x/psc.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/soc/au1x/psc.h b/sound/soc/au1x/psc.h index 8fdb1a04..3f474e8 100644 --- a/sound/soc/au1x/psc.h +++ b/sound/soc/au1x/psc.h @@ -29,6 +29,7 @@ struct au1xpsc_audio_data { unsigned long pm[2]; struct resource *ioarea; + struct mutex lock; }; #define PCM_TX 0 |