Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d879514 authored by Dimitris Papastamos's avatar Dimitris Papastamos Committed by Mark Brown
Browse files

regmap: Don't lock in regmap_reinit_cache()



When bus->fast_io is set, the locking here is done with spinlocks.
This is currently true for the regmap-mmio bus implementation.

While holding a spinlock we can't go to sleep, various operations
like removing the debugfs entries or re-initializing the cache will
sleep, therefore, shift the locking up to the user.

Signed-off-by: default avatarDimitris Papastamos <dp@opensource.wolfsonmicro.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 0d7614f0
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -659,13 +659,12 @@ EXPORT_SYMBOL_GPL(devm_regmap_init);
 * new cache.  This can be used to restore the cache to defaults or to
 * update the cache configuration to reflect runtime discovery of the
 * hardware.
 *
 * No explicit locking is done here, the user needs to ensure that
 * this function will not race with other calls to regmap.
 */
int regmap_reinit_cache(struct regmap *map, const struct regmap_config *config)
{
	int ret;

	map->lock(map);

	regcache_exit(map);
	regmap_debugfs_exit(map);

@@ -681,11 +680,7 @@ int regmap_reinit_cache(struct regmap *map, const struct regmap_config *config)
	map->cache_bypass = false;
	map->cache_only = false;

	ret = regcache_init(map, config);

	map->unlock(map);

	return ret;
	return regcache_init(map, config);
}
EXPORT_SYMBOL_GPL(regmap_reinit_cache);