mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02: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:
parent
e062bdfdd6
commit
94a3a95f03
|
|
@ -186,6 +186,7 @@ struct regcache_ops {
|
||||||
enum regcache_type type;
|
enum regcache_type type;
|
||||||
int (*init)(struct regmap *map);
|
int (*init)(struct regmap *map);
|
||||||
int (*exit)(struct regmap *map);
|
int (*exit)(struct regmap *map);
|
||||||
|
int (*populate)(struct regmap *map);
|
||||||
#ifdef CONFIG_DEBUG_FS
|
#ifdef CONFIG_DEBUG_FS
|
||||||
void (*debugfs_init)(struct regmap *map);
|
void (*debugfs_init)(struct regmap *map);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -222,8 +222,24 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_free;
|
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;
|
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:
|
err_free:
|
||||||
kfree(map->reg_defaults);
|
kfree(map->reg_defaults);
|
||||||
if (map->cache_free)
|
if (map->cache_free)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user