diff --git a/drivers/base/regmap/internal.h b/drivers/base/regmap/internal.h index 6d409350f50aa52b2b19e0113fa69c4998bffc9f..95d46a5ea7e706296da635025697c1ac6ed15b3b 100644 --- a/drivers/base/regmap/internal.h +++ b/drivers/base/regmap/internal.h @@ -189,6 +189,13 @@ int regcache_write(struct regmap *map, unsigned int reg, unsigned int value); int regcache_sync(struct regmap *map); +static inline const void *regcache_get_val_addr(struct regmap *map, + const void *base, + unsigned int idx) +{ + return base + (map->cache_word_size * idx); +} + unsigned int regcache_get_val(struct regmap *map, const void *base, unsigned int idx); bool regcache_set_val(struct regmap *map, void *base, unsigned int idx, diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c index 0f4fb8bc37e5d91c05732bc53f8d55236d9f0ee9..229c804e409eac7792f8262b9556da0e91a294c7 100644 --- a/drivers/base/regmap/regcache.c +++ b/drivers/base/regmap/regcache.c @@ -458,8 +458,8 @@ unsigned int regcache_get_val(struct regmap *map, const void *base, /* Use device native format if possible */ if (map->format.parse_val) - return map->format.parse_val(base + - (map->cache_word_size * idx)); + return map->format.parse_val(regcache_get_val_addr(map, base, + idx)); switch (map->cache_word_size) { case 1: {