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

Commit 154881e5 authored by Mark Brown's avatar Mark Brown
Browse files

regmap: Make regmap_check_range_table() a public API



Allow drivers to use an access table as part of their implementation.

Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 697e85bc
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -65,8 +65,7 @@ bool regmap_reg_in_ranges(unsigned int reg,
}
EXPORT_SYMBOL_GPL(regmap_reg_in_ranges);

static bool _regmap_check_range_table(struct regmap *map,
				      unsigned int reg,
bool regmap_check_range_table(struct regmap *map, unsigned int reg,
			      const struct regmap_access_table *table)
{
	/* Check "no ranges" first */
@@ -80,6 +79,7 @@ static bool _regmap_check_range_table(struct regmap *map,
	return regmap_reg_in_ranges(reg, table->yes_ranges,
				    table->n_yes_ranges);
}
EXPORT_SYMBOL_GPL(regmap_check_range_table);

bool regmap_writeable(struct regmap *map, unsigned int reg)
{
@@ -90,7 +90,7 @@ bool regmap_writeable(struct regmap *map, unsigned int reg)
		return map->writeable_reg(map->dev, reg);

	if (map->wr_table)
		return _regmap_check_range_table(map, reg, map->wr_table);
		return regmap_check_range_table(map, reg, map->wr_table);

	return true;
}
@@ -107,7 +107,7 @@ bool regmap_readable(struct regmap *map, unsigned int reg)
		return map->readable_reg(map->dev, reg);

	if (map->rd_table)
		return _regmap_check_range_table(map, reg, map->rd_table);
		return regmap_check_range_table(map, reg, map->rd_table);

	return true;
}
@@ -121,7 +121,7 @@ bool regmap_volatile(struct regmap *map, unsigned int reg)
		return map->volatile_reg(map->dev, reg);

	if (map->volatile_table)
		return _regmap_check_range_table(map, reg, map->volatile_table);
		return regmap_check_range_table(map, reg, map->volatile_table);

	return true;
}
@@ -135,7 +135,7 @@ bool regmap_precious(struct regmap *map, unsigned int reg)
		return map->precious_reg(map->dev, reg);

	if (map->precious_table)
		return _regmap_check_range_table(map, reg, map->precious_table);
		return regmap_check_range_table(map, reg, map->precious_table);

	return false;
}
+3 −0
Original line number Diff line number Diff line
@@ -400,6 +400,9 @@ 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);

bool regmap_check_range_table(struct regmap *map, unsigned int reg,
			      const struct regmap_access_table *table);

int regmap_register_patch(struct regmap *map, const struct reg_default *regs,
			  int num_regs);