aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base
diff options
context:
space:
mode:
authorDimitris Papastamos <dp@opensource.wolfsonmicro.com>2013-02-20 07:15:22 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-03-03 21:33:02 -0500
commit480738de0e076d759a973be623fac195cb901b82 (patch)
tree345fc58ee2cfd1aeec8356ddfa042a57a7cb34d2 /drivers/base
parent6dbe51c251a327e012439c4772097a13df43c5b8 (diff)
regmap: debugfs: Simplify calculation of `c->max_reg'
We don't need to use any of the file position information to calculate the base and max register of each block. Just use the counter directly. Set `i = base' at the top to avoid GCC flow analysis bugs. The value of `i' can never be undefined or 0 in the if (c) { ... }. Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/regmap/regmap-debugfs.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/regmap-debugfs.c
index 81d6f605c92e..886b2f7682c2 100644
--- a/drivers/base/regmap/regmap-debugfs.c
+++ b/drivers/base/regmap/regmap-debugfs.c
@@ -88,16 +88,15 @@ static unsigned int regmap_debugfs_get_dump_start(struct regmap *map,
88 * If we don't have a cache build one so we don't have to do a 88 * If we don't have a cache build one so we don't have to do a
89 * linear scan each time. 89 * linear scan each time.
90 */ 90 */
91 i = base;
91 if (list_empty(&map->debugfs_off_cache)) { 92 if (list_empty(&map->debugfs_off_cache)) {
92 for (i = base; i <= map->max_register; i += map->reg_stride) { 93 for (; i <= map->max_register; i += map->reg_stride) {
93 /* Skip unprinted registers, closing off cache entry */ 94 /* Skip unprinted registers, closing off cache entry */
94 if (!regmap_readable(map, i) || 95 if (!regmap_readable(map, i) ||
95 regmap_precious(map, i)) { 96 regmap_precious(map, i)) {
96 if (c) { 97 if (c) {
97 c->max = p - 1; 98 c->max = p - 1;
98 fpos_offset = c->max - c->min; 99 c->max_reg = i - map->reg_stride;
99 reg_offset = fpos_offset / map->debugfs_tot_len;
100 c->max_reg = c->base_reg + reg_offset;
101 list_add_tail(&c->list, 100 list_add_tail(&c->list,
102 &map->debugfs_off_cache); 101 &map->debugfs_off_cache);
103 c = NULL; 102 c = NULL;
@@ -124,9 +123,7 @@ static unsigned int regmap_debugfs_get_dump_start(struct regmap *map,
124 /* Close the last entry off if we didn't scan beyond it */ 123 /* Close the last entry off if we didn't scan beyond it */
125 if (c) { 124 if (c) {
126 c->max = p - 1; 125 c->max = p - 1;
127 fpos_offset = c->max - c->min; 126 c->max_reg = i - map->reg_stride;
128 reg_offset = fpos_offset / map->debugfs_tot_len;
129 c->max_reg = c->base_reg + reg_offset;
130 list_add_tail(&c->list, 127 list_add_tail(&c->list,
131 &map->debugfs_off_cache); 128 &map->debugfs_off_cache);
132 } 129 }