mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
regcache: use the regmap scoped lock guard
Convert the open-coded map->lock()/map->unlock() users in regcache.c to the regmap scoped guard introduced for regmap.c. Use scoped_guard(regmap, ...) in regcache_exit(), where the locked region is a subsection of the function, and guard(regmap)() for the function-scope critical sections. regcache_init() keeps explicit map->lock()/map->unlock() calls: it has a goto err_* cleanup ladder and mixing goto with cleanup helpers in the same function is not allowed by cleanup.h. regcache_sync() and regcache_sync_region() are left as-is: they already use a single goto out unlock path, so converting them would require either mixing a goto with a scoped_guard scope or restructuring their control flow, neither of which is an improvement. No functional change. Assisted-by: LLM Signed-off-by: Peng Fan <peng.fan@nxp.com> Link: https://patch.msgid.link/20260924-regmap-lock-guard-v3-2-8a6127223c16@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
80328b41ea
commit
23f1120dcb
|
|
@ -281,9 +281,8 @@ void regcache_exit(struct regmap *map)
|
|||
if (map->cache_ops->exit) {
|
||||
dev_dbg(map->dev, "Destroying %s cache\n",
|
||||
map->cache_ops->name);
|
||||
map->lock(map->lock_arg);
|
||||
map->cache_ops->exit(map);
|
||||
map->unlock(map->lock_arg);
|
||||
scoped_guard(regmap, map)
|
||||
map->cache_ops->exit(map);
|
||||
}
|
||||
|
||||
kfree(map->reg_defaults);
|
||||
|
|
@ -584,20 +583,14 @@ EXPORT_SYMBOL_GPL(regcache_sync_region);
|
|||
int regcache_drop_region(struct regmap *map, unsigned int min,
|
||||
unsigned int max)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (!map->cache_ops || !map->cache_ops->drop)
|
||||
return -EINVAL;
|
||||
|
||||
map->lock(map->lock_arg);
|
||||
guard(regmap)(map);
|
||||
|
||||
trace_regcache_drop_region(map, min, max);
|
||||
|
||||
ret = map->cache_ops->drop(map, min, max);
|
||||
|
||||
map->unlock(map->lock_arg);
|
||||
|
||||
return ret;
|
||||
return map->cache_ops->drop(map, min, max);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(regcache_drop_region);
|
||||
|
||||
|
|
@ -615,12 +608,11 @@ EXPORT_SYMBOL_GPL(regcache_drop_region);
|
|||
*/
|
||||
void regcache_cache_only(struct regmap *map, bool enable)
|
||||
{
|
||||
map->lock(map->lock_arg);
|
||||
guard(regmap)(map);
|
||||
WARN_ON(map->cache_type != REGCACHE_NONE &&
|
||||
map->cache_bypass && enable);
|
||||
map->cache_only = enable;
|
||||
trace_regmap_cache_only(map, enable);
|
||||
map->unlock(map->lock_arg);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(regcache_cache_only);
|
||||
|
||||
|
|
@ -639,10 +631,9 @@ EXPORT_SYMBOL_GPL(regcache_cache_only);
|
|||
*/
|
||||
void regcache_mark_dirty(struct regmap *map)
|
||||
{
|
||||
map->lock(map->lock_arg);
|
||||
guard(regmap)(map);
|
||||
map->cache_dirty = true;
|
||||
map->no_sync_defaults = true;
|
||||
map->unlock(map->lock_arg);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(regcache_mark_dirty);
|
||||
|
||||
|
|
@ -659,11 +650,10 @@ EXPORT_SYMBOL_GPL(regcache_mark_dirty);
|
|||
*/
|
||||
void regcache_cache_bypass(struct regmap *map, bool enable)
|
||||
{
|
||||
map->lock(map->lock_arg);
|
||||
guard(regmap)(map);
|
||||
WARN_ON(map->cache_only && enable);
|
||||
map->cache_bypass = enable;
|
||||
trace_regmap_cache_bypass(map, enable);
|
||||
map->unlock(map->lock_arg);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(regcache_cache_bypass);
|
||||
|
||||
|
|
@ -680,12 +670,10 @@ bool regcache_reg_cached(struct regmap *map, unsigned int reg)
|
|||
unsigned int val;
|
||||
int ret;
|
||||
|
||||
map->lock(map->lock_arg);
|
||||
guard(regmap)(map);
|
||||
|
||||
ret = regcache_read(map, reg, &val);
|
||||
|
||||
map->unlock(map->lock_arg);
|
||||
|
||||
return ret == 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(regcache_reg_cached);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user