]> git.karo-electronics.de Git - linux-beck.git/commitdiff
regmap: Add helper function for checking if a register range is volatile
authorLars-Peter Clausen <lars@metafoo.de>
Tue, 8 Nov 2011 17:37:25 +0000 (18:37 +0100)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 9 Nov 2011 00:56:51 +0000 (00:56 +0000)
We already have the same code for checking whether a register range is volatile
in two different places. Instead of duplicating it once more  add a small helper
function for checking whether a register range is voltaile.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/base/regmap/regmap.c

index f7cfff2b871467b8f67d75963835a390dd7c0e5d..5c4e76de38d27d308d6521ab57156122f9e31620 100644 (file)
@@ -64,6 +64,18 @@ bool regmap_precious(struct regmap *map, unsigned int reg)
        return false;
 }
 
+static bool regmap_volatile_range(struct regmap *map, unsigned int reg,
+       unsigned int num)
+{
+       unsigned int i;
+
+       for (i = 0; i < num; i++)
+               if (!regmap_volatile(map, reg + i))
+                       return false;
+
+       return true;
+}
+
 static void regmap_format_4_12_write(struct regmap *map,
                                     unsigned int reg, unsigned int val)
 {
@@ -483,15 +495,11 @@ EXPORT_SYMBOL_GPL(regmap_read);
 int regmap_raw_read(struct regmap *map, unsigned int reg, void *val,
                    size_t val_len)
 {
+       size_t val_count = val_len / map->format.val_bytes;
        int ret;
-       int i;
-       bool vol = true;
-
-       for (i = 0; i < val_len / map->format.val_bytes; i++)
-               if (!regmap_volatile(map, reg + i))
-                       vol = false;
 
-       WARN_ON(!vol && map->cache_type != REGCACHE_NONE);
+       WARN_ON(!regmap_volatile_range(map, reg, val_count) &&
+               map->cache_type != REGCACHE_NONE);
 
        mutex_lock(&map->lock);
 
@@ -519,16 +527,11 @@ int regmap_bulk_read(struct regmap *map, unsigned int reg, void *val,
 {
        int ret, i;
        size_t val_bytes = map->format.val_bytes;
-       bool vol = true;
+       bool vol = regmap_volatile_range(map, reg, val_count);
 
        if (!map->format.parse_val)
                return -EINVAL;
 
-       /* Is this a block of volatile registers? */
-       for (i = 0; i < val_count; i++)
-               if (!regmap_volatile(map, reg + i))
-                       vol = false;
-
        if (vol || map->cache_type == REGCACHE_NONE) {
                ret = regmap_raw_read(map, reg, val, val_bytes * val_count);
                if (ret != 0)