regmap: Allow users to query the size of register values
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 17 Feb 2012 22:20:14 +0000 (14:20 -0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 20 Feb 2012 21:17:08 +0000 (21:17 +0000)
Generic infrastructure based on top of regmap may want to operate on
blocks of data and therefore find it useful to find the size of the
register values. Provide an accessor operation for this.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/base/regmap/regmap.c
include/linux/regmap.h

index 65558034318f3f295abde2fe7a599c4971e7d7ec..e09119684c06d2cedd4a444c85aa181854e78cc4 100644 (file)
@@ -672,6 +672,21 @@ int regmap_update_bits_check(struct regmap *map, unsigned int reg,
 }
 EXPORT_SYMBOL_GPL(regmap_update_bits_check);
 
+/**
+ * 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();
index eb93921cdd30252b1c960cf6872585e308c9e9fc..089479f892c1d023d72220177a95b0fe6b21273f 100644 (file)
@@ -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);