summaryrefslogtreecommitdiff
path: root/sound/soc
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2009-02-22 20:04:41 (GMT)
committerMark Brown <broonie@opensource.wolfsonmicro.com>2009-02-24 23:49:56 (GMT)
commite611bd82441130991d7f4600dfd4632cebd417c5 (patch)
treea67ae0acad57d18caa025e1ffdb27d8792f4a75a /sound/soc
parentc2bac1606a937d4700f8fdd8e051a4c49593c41b (diff)
downloadlinux-e611bd82441130991d7f4600dfd4632cebd417c5.tar.xz
ASoC: Only write back non-default registers when resuming WM8753
This will reduce the number of writes done on resume, allowing that to complete faster (especially on systems with very slow I2C like the current Samsung driver). Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/codecs/wm8753.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c
index bc295581..2241204 100644
--- a/sound/soc/codecs/wm8753.c
+++ b/sound/soc/codecs/wm8753.c
@@ -1526,6 +1526,11 @@ static int wm8753_resume(struct platform_device *pdev)
for (i = 0; i < ARRAY_SIZE(wm8753_reg); i++) {
if (i + 1 == WM8753_RESET)
continue;
+
+ /* No point in writing hardware default values back */
+ if (cache[i] == wm8753_reg[i])
+ continue;
+
data[0] = ((i + 1) << 1) | ((cache[i] >> 8) & 0x0001);
data[1] = cache[i] & 0x00ff;
codec->hw_write(codec->control_data, data, 2);