From eebdf464062dc1a6059041646015e4c2741c29be Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Sun, 9 Oct 2011 12:54:25 +0100 Subject: [PATCH] --- yaml --- r: 267015 b: refs/heads/master c: b03622a80d2206c4179d6a41a0dc5cfbdfc853ee h: refs/heads/master i: 267013: 145dc5fbd19d101ef2940b09a8617198efce3e08 267011: 792c5b22e1ac01bb894e3ef47e0cd408e0160f33 267007: 0a25e4a3b7753d7cbf354992ed0471f98d787382 v: v3 --- [refs] | 2 +- trunk/drivers/base/regmap/regcache-rbtree.c | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 0dc4b026b02c..62c65afa6f03 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e42c5a9a4230c38ceba0a890b30a2d0dd9314bff +refs/heads/master: b03622a80d2206c4179d6a41a0dc5cfbdfc853ee diff --git a/trunk/drivers/base/regmap/regcache-rbtree.c b/trunk/drivers/base/regmap/regcache-rbtree.c index 52511f95857a..e31498499b0f 100644 --- a/trunk/drivers/base/regmap/regcache-rbtree.c +++ b/trunk/drivers/base/regmap/regcache-rbtree.c @@ -304,7 +304,7 @@ static int regcache_rbtree_sync(struct regmap *map) struct rb_node *node; struct regcache_rbtree_node *rbnode; unsigned int regtmp; - unsigned int val, def; + unsigned int val; int ret; int i; @@ -315,13 +315,12 @@ static int regcache_rbtree_sync(struct regmap *map) regtmp = rbnode->base_reg + i; val = regcache_rbtree_get_register(rbnode, i, map->cache_word_size); + + /* Is this the hardware default? If so skip. */ ret = regcache_lookup_reg(map, i); - if (ret < 0) - def = 0; - else - def = map->reg_defaults[ret].def; - if (val == def) + if (ret > 0 && val == map->reg_defaults[ret].def) continue; + map->cache_bypass = 1; ret = _regmap_write(map, regtmp, val); map->cache_bypass = 0;