summaryrefslogtreecommitdiff
path: root/sound/soc/au1x/psc.h
diff options
context:
space:
mode:
authorManuel Lauss <manuel.lauss@googlemail.com>2009-09-08 21:45:17 +0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2009-09-08 22:21:27 +0400
commitcdc65fbe18aef15e92d2ebb410a189fbf956fb06 (patch)
treed121aea788bf52467683a9072ff3d15b89bd5c08 /sound/soc/au1x/psc.h
parent87831cb660954356d68cebdb1406f3be09e784e9 (diff)
downloadlinux-cdc65fbe18aef15e92d2ebb410a189fbf956fb06.tar.xz
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.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/soc/au1x/psc.h b/sound/soc/au1x/psc.h
index 8fdb1a04a07b..3f474e8ed4f6 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