summaryrefslogtreecommitdiff
path: root/drivers/base
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/regmap/regcache-flat.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/drivers/base/regmap/regcache-flat.c b/drivers/base/regmap/regcache-flat.c
index bacb7137092f..53cc59c84e2f 100644
--- a/drivers/base/regmap/regcache-flat.c
+++ b/drivers/base/regmap/regcache-flat.c
@@ -29,7 +29,6 @@ struct regcache_flat_data {
static int regcache_flat_init(struct regmap *map)
{
- int i;
unsigned int cache_size;
struct regcache_flat_data *cache;
@@ -47,14 +46,6 @@ static int regcache_flat_init(struct regmap *map)
map->cache = cache;
- for (i = 0; i < map->num_reg_defaults; i++) {
- unsigned int reg = map->reg_defaults[i].reg;
- unsigned int index = regcache_flat_get_index(map, reg);
-
- cache->data[index] = map->reg_defaults[i].def;
- __set_bit(index, cache->valid);
- }
-
return 0;
err_free:
@@ -75,6 +66,22 @@ static int regcache_flat_exit(struct regmap *map)
return 0;
}
+static int regcache_flat_populate(struct regmap *map)
+{
+ struct regcache_flat_data *cache = map->cache;
+ unsigned int i;
+
+ for (i = 0; i < map->num_reg_defaults; i++) {
+ unsigned int reg = map->reg_defaults[i].reg;
+ unsigned int index = regcache_flat_get_index(map, reg);
+
+ cache->data[index] = map->reg_defaults[i].def;
+ __set_bit(index, cache->valid);
+ }
+
+ return 0;
+}
+
static int regcache_flat_read(struct regmap *map,
unsigned int reg, unsigned int *value)
{
@@ -134,6 +141,7 @@ struct regcache_ops regcache_flat_ops = {
.name = "flat",
.init = regcache_flat_init,
.exit = regcache_flat_exit,
+ .populate = regcache_flat_populate,
.read = regcache_flat_read,
.write = regcache_flat_write,
};
@@ -143,6 +151,7 @@ struct regcache_ops regcache_flat_sparse_ops = {
.name = "flat-sparse",
.init = regcache_flat_init,
.exit = regcache_flat_exit,
+ .populate = regcache_flat_populate,
.read = regcache_flat_sparse_read,
.write = regcache_flat_write,
.drop = regcache_flat_drop,