regcache: Factor out regcache_hw_exit() helper

Factor out regcache_hw_exit() helper to make error and exit paths
clearer. This helps to avoid missing changes in case the code gets
shuffled in the future.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://patch.msgid.link/20260303092820.2818138-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Andy Shevchenko 2026-03-03 10:26:24 +01:00 committed by Mark Brown
parent c26137d3a3
commit 9891b52ba1
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -131,6 +131,13 @@ static int regcache_hw_init(struct regmap *map, int count)
return ret;
}
static void regcache_hw_exit(struct regmap *map)
{
kfree(map->reg_defaults);
if (map->cache_free)
kfree(map->reg_defaults_raw);
}
int regcache_init(struct regmap *map, const struct regmap_config *config)
{
int count = 0;
@ -245,9 +252,7 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
map->unlock(map->lock_arg);
}
err_free:
kfree(map->reg_defaults);
if (map->cache_free)
kfree(map->reg_defaults_raw);
regcache_hw_exit(map);
return ret;
}
@ -259,9 +264,7 @@ void regcache_exit(struct regmap *map)
BUG_ON(!map->cache_ops);
kfree(map->reg_defaults);
if (map->cache_free)
kfree(map->reg_defaults_raw);
regcache_hw_exit(map);
if (map->cache_ops->exit) {
dev_dbg(map->dev, "Destroying %s cache\n",