|
@@ -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)
|