diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-10-26 10:34:22 +0200 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-11-08 11:38:15 +0000 |
commit | 8ae0d7e8a918e9603748abe9b31984fc5d96abb3 (patch) | |
tree | 329564b9bdc3cac89a3ac1586c9e5812ab21bf1c /drivers/base/regmap/regmap.c | |
parent | 1ea6b8f48918282bdca0b32a34095504ee65bab5 (diff) | |
download | lwn-8ae0d7e8a918e9603748abe9b31984fc5d96abb3.tar.gz lwn-8ae0d7e8a918e9603748abe9b31984fc5d96abb3.zip |
regmap: Track if the register cache is dirty and suppress unneeded syncs
Allow drivers to optimise out the register cache sync if they didn't need
to do one. If the hardware is desynced from the register cache (by power
loss for example) then the driver should call regcache_mark_dirty() to
let the core know about this.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/base/regmap/regmap.c')
-rw-r--r-- | drivers/base/regmap/regmap.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index bf441db1ee90..3aca18dbf367 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -306,8 +306,10 @@ int _regmap_write(struct regmap *map, unsigned int reg, ret = regcache_write(map, reg, val); if (ret != 0) return ret; - if (map->cache_only) + if (map->cache_only) { + map->cache_dirty = true; return 0; + } } trace_regmap_reg_write(map->dev, reg, val); |