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

Commit 221ad7f2 authored by Mark Brown's avatar Mark Brown
Browse files

regmap: core: Provide regmap_can_raw_write() operation



Mainly useful internally but exported since this is a public API that's
being checked for.

Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 8817796b
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -1097,6 +1097,17 @@ int _regmap_raw_write(struct regmap *map, unsigned int reg,
	return ret;
}

/**
 * regmap_can_raw_write - Test if regmap_raw_write() is supported
 *
 * @map: Map to check.
 */
bool regmap_can_raw_write(struct regmap *map)
{
	return map->bus && map->format.format_val && map->format.format_reg;
}
EXPORT_SYMBOL_GPL(regmap_can_raw_write);

static int _regmap_bus_formatted_write(void *context, unsigned int reg,
				       unsigned int val)
{
@@ -1220,12 +1231,10 @@ int regmap_raw_write(struct regmap *map, unsigned int reg,
{
	int ret;

	if (!map->bus)
	if (!regmap_can_raw_write(map))
		return -EINVAL;
	if (val_len % map->format.val_bytes)
		return -EINVAL;
	if (reg % map->reg_stride)
		return -EINVAL;

	map->lock(map->lock_arg);

+1 −0
Original line number Diff line number Diff line
@@ -389,6 +389,7 @@ int regmap_update_bits_check(struct regmap *map, unsigned int reg,
			     bool *change);
int regmap_get_val_bytes(struct regmap *map);
int regmap_async_complete(struct regmap *map);
bool regmap_can_raw_write(struct regmap *map);

int regcache_sync(struct regmap *map);
int regcache_sync_region(struct regmap *map, unsigned int min,