From: Mark Brown Date: Mon, 30 Apr 2012 20:25:05 +0000 (+0100) Subject: regmap: Cache single values read from the chip X-Git-Tag: next-20120503~19^2^2 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f298536728d02c19f11bda8d712ff61d767bab32;p=karo-tx-linux.git regmap: Cache single values read from the chip If we don't have a cached value for a register and we can cache it then when we do a read a value we should add it to the cache to save rereading it later on. Do this for single register reads, for block reads the code would be a little more complex and this covers most practical usage. Signed-off-by: Mark Brown --- diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index 178989a8949e..3e551223f4df 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -698,6 +698,9 @@ static int _regmap_read(struct regmap *map, unsigned int reg, trace_regmap_reg_read(map->dev, reg, *val); } + if (ret == 0 && !map->cache_bypass) + regcache_write(map, reg, *val); + return ret; }