ASoC: Only write back non-default registers when resuming WM8753
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Sun, 22 Feb 2009 20:04:41 +0000 (20:04 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 24 Feb 2009 23:49:56 +0000 (23:49 +0000)
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>
sound/soc/codecs/wm8753.c

index bc29558149e9e9e8e90e3ec55d16b06df9941d86..2241204b5151f70296bb551243080ef710c5fa99 100644 (file)
@@ -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);