mirror of
https://github.com/torvalds/linux.git
synced 2026-01-24 23:16:46 +00:00
regcache: Add ->populate() callback to separate from ->init()
In the future changes we would like to change the flow of the cache handling. Add ->populate() callback in order to prepare for that. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://patch.msgid.link/20251031080540.3970776-2-andriy.shevchenko@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
e062bdfdd6
commit
94a3a95f03
@@ -186,6 +186,7 @@ struct regcache_ops {
|
||||
enum regcache_type type;
|
||||
int (*init)(struct regmap *map);
|
||||
int (*exit)(struct regmap *map);
|
||||
int (*populate)(struct regmap *map);
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
void (*debugfs_init)(struct regmap *map);
|
||||
#endif
|
||||
|
||||
@@ -222,8 +222,24 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
|
||||
if (ret)
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
if (map->num_reg_defaults && map->cache_ops->populate) {
|
||||
dev_dbg(map->dev, "Populating %s cache\n", map->cache_ops->name);
|
||||
map->lock(map->lock_arg);
|
||||
ret = map->cache_ops->populate(map);
|
||||
map->unlock(map->lock_arg);
|
||||
if (ret)
|
||||
goto err_exit;
|
||||
}
|
||||
return 0;
|
||||
|
||||
err_exit:
|
||||
if (map->cache_ops->exit) {
|
||||
dev_dbg(map->dev, "Destroying %s cache\n", map->cache_ops->name);
|
||||
map->lock(map->lock_arg);
|
||||
ret = map->cache_ops->exit(map);
|
||||
map->unlock(map->lock_arg);
|
||||
}
|
||||
err_free:
|
||||
kfree(map->reg_defaults);
|
||||
if (map->cache_free)
|
||||
|
||||
Reference in New Issue
Block a user