All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ASoC: Suppress restore of default register values for rbtree cache sync
@ 2011-06-03 15:37 Mark Brown
  2011-06-03 16:29 ` Liam Girdwood
  2011-06-06  9:18 ` Dimitris Papastamos
  0 siblings, 2 replies; 6+ messages in thread
From: Mark Brown @ 2011-06-03 15:37 UTC (permalink / raw)
  To: Liam Girdwood; +Cc: dp, alsa-devel, patches, Mark Brown

Currently the rbtree code will write out the entire register map when
doing a cache sync which is wasteful and will slow things down. Check
to see if the value we're about to write is the default and don't bother
restoring it if it is, either the value will have been retained or the
device will have been reset and holds the value already.

We should really store the defaults in the nodes but this resolves the
immediate issue.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 sound/soc/soc-cache.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/sound/soc/soc-cache.c b/sound/soc/soc-cache.c
index d8ce34c..d82ab42 100644
--- a/sound/soc/soc-cache.c
+++ b/sound/soc/soc-cache.c
@@ -607,7 +607,7 @@ static int snd_soc_rbtree_cache_sync(struct snd_soc_codec *codec)
 	struct rb_node *node;
 	struct snd_soc_rbtree_node *rbnode;
 	unsigned int regtmp;
-	unsigned int val;
+	unsigned int val, def;
 	int ret;
 	int i;
 
@@ -619,6 +619,11 @@ static int snd_soc_rbtree_cache_sync(struct snd_soc_codec *codec)
 			WARN_ON(codec->writable_register &&
 				codec->writable_register(codec, regtmp));
 			val = snd_soc_rbtree_get_register(rbnode, i);
+			def = snd_soc_get_cache_val(codec->reg_def_copy, i,
+						    rbnode->word_size);
+			if (val == def)
+				continue;
+
 			codec->cache_bypass = 1;
 			ret = snd_soc_write(codec, regtmp, val);
 			codec->cache_bypass = 0;
-- 
1.7.5.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-06-06 10:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-03 15:37 [PATCH] ASoC: Suppress restore of default register values for rbtree cache sync Mark Brown
2011-06-03 16:29 ` Liam Girdwood
2011-06-06  9:18 ` Dimitris Papastamos
2011-06-06  9:26   ` Mark Brown
2011-06-06  9:29     ` Dimitris Papastamos
2011-06-06 10:39       ` Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.