diff options
author | Cristian Birsan <cristian.birsan@microchip.com> | 2016-08-08 18:44:21 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-08-09 13:43:33 +0100 |
commit | 1ea975cf1ef57b1e44c0aec4820f60bb3b60904b (patch) | |
tree | bd316f9aa746e60842cc2cb740fbfc317bf34bc5 /drivers/base/regmap/regmap.c | |
parent | 29b4817d4018df78086157ea3a55c1d9424a7cfc (diff) | |
download | linux-1ea975cf1ef57b1e44c0aec4820f60bb3b60904b.tar.bz2 |
regmap: Add a function to check if a regmap register is cached
Add a function to check if a regmap register is cached. This will be used
in debugfs to dump the cached values of write only registers.
Signed-off-by: Cristian Birsan <cristian.birsan@microchip.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/base/regmap/regmap.c')
-rw-r--r-- | drivers/base/regmap/regmap.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index 51fa7d66a393..1f011f9d6dcb 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -93,6 +93,29 @@ bool regmap_writeable(struct regmap *map, unsigned int reg) return true; } +bool regmap_cached(struct regmap *map, unsigned int reg) +{ + int ret; + unsigned int val; + + if (map->cache == REGCACHE_NONE) + return false; + + if (!map->cache_ops) + return false; + + if (map->max_register && reg > map->max_register) + return false; + + map->lock(map->lock_arg); + ret = regcache_read(map, reg, &val); + map->unlock(map->lock_arg); + if (ret) + return false; + + return true; +} + bool regmap_readable(struct regmap *map, unsigned int reg) { if (!map->reg_read) |