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

Commit c2b164fa authored by Mark Brown's avatar Mark Brown
Browse files

Merge branch 'topic/cache' of git://opensource.wolfsonmicro.com/regmap into for-3.3

parents e94de1e8 8ae0d7e8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ struct regmap {
	struct reg_default *reg_defaults;
	const void *reg_defaults_raw;
	void *cache;
	bool cache_dirty;
};

struct regcache_ops {
+19 −0
Original line number Diff line number Diff line
@@ -241,6 +241,8 @@ int regcache_sync(struct regmap *map)
		map->cache_ops->name);
	name = map->cache_ops->name;
	trace_regcache_sync(map->dev, name, "start");
	if (!map->cache_dirty)
		goto out;
	if (map->cache_ops->sync) {
		ret = map->cache_ops->sync(map);
	} else {
@@ -290,6 +292,23 @@ void regcache_cache_only(struct regmap *map, bool enable)
}
EXPORT_SYMBOL_GPL(regcache_cache_only);

/**
 * regcache_mark_dirty: Mark the register cache as dirty
 *
 * @map: map to mark
 *
 * Mark the register cache as dirty, for example due to the device
 * having been powered down for suspend.  If the cache is not marked
 * as dirty then the cache sync will be suppressed.
 */
void regcache_mark_dirty(struct regmap *map)
{
	mutex_lock(&map->lock);
	map->cache_dirty = true;
	mutex_unlock(&map->lock);
}
EXPORT_SYMBOL_GPL(regcache_mark_dirty);

/**
 * regcache_cache_bypass: Put a register map into cache bypass mode
 *
+3 −1
Original line number Diff line number Diff line
@@ -306,9 +306,11 @@ int _regmap_write(struct regmap *map, unsigned int reg,
		ret = regcache_write(map, reg, val);
		if (ret != 0)
			return ret;
		if (map->cache_only)
		if (map->cache_only) {
			map->cache_dirty = true;
			return 0;
		}
	}

	trace_regmap_reg_write(map->dev, reg, val);

+1 −0
Original line number Diff line number Diff line
@@ -143,5 +143,6 @@ int regmap_update_bits(struct regmap *map, unsigned int reg,
int regcache_sync(struct regmap *map);
void regcache_cache_only(struct regmap *map, bool enable);
void regcache_cache_bypass(struct regmap *map, bool enable);
void regcache_mark_dirty(struct regmap *map);

#endif