Sfoglia il codice sorgente

Merge tag 'topic/introspection' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap into HEAD

New interfaces to allow other subsystems to gather information about the
regmap, allowing them to build further subsystem specific generic
features on top of the regmap.

Merged into ASoC in order to allow us to implement SND_SOC_BYTES_MASK()
controls which need to know the word size of the underlying registers.
Mark Brown 14 anni fa
parent
commit
8215045181
2 ha cambiato i file con 16 aggiunte e 0 eliminazioni
  1. 15 0
      drivers/base/regmap/regmap.c
  2. 1 0
      include/linux/regmap.h

+ 15 - 0
drivers/base/regmap/regmap.c

@@ -730,6 +730,21 @@ int regmap_register_patch(struct regmap *map, const struct reg_default *regs,
 }
 EXPORT_SYMBOL_GPL(regmap_register_patch);
 
+/*
+ * regmap_get_val_bytes(): Report the size of a register value
+ *
+ * Report the size of a register value, mainly intended to for use by
+ * generic infrastructure built on top of regmap.
+ */
+int regmap_get_val_bytes(struct regmap *map)
+{
+	if (map->format.format_write)
+		return -EINVAL;
+
+	return map->format.val_bytes;
+}
+EXPORT_SYMBOL_GPL(regmap_get_val_bytes);
+
 static int __init regmap_initcall(void)
 {
 	regmap_debugfs_initcall();

+ 1 - 0
include/linux/regmap.h

@@ -143,6 +143,7 @@ int regmap_update_bits(struct regmap *map, unsigned int reg,
 int regmap_update_bits_check(struct regmap *map, unsigned int reg,
 			     unsigned int mask, unsigned int val,
 			     bool *change);
+int regmap_get_val_bytes(struct regmap *map);
 
 int regcache_sync(struct regmap *map);
 void regcache_cache_only(struct regmap *map, bool enable);