瀏覽代碼

regmap: debugfs: Add a `max_reg' member in struct regmap_debugfs_off_cache

We are keeping track of the maximum register as well, this will make
things easier for us in sharing this code with the code implementing
the register ranges functionality.  It also simplifies a bit the
calculations when looking for the relevant block:offset from within
the cache.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Dimitris Papastamos 13 年之前
父節點
當前提交
c2c1ee6601
共有 2 個文件被更改,包括 9 次插入0 次删除
  1. 1 0
      drivers/base/regmap/internal.h
  2. 8 0
      drivers/base/regmap/regmap-debugfs.c

+ 1 - 0
drivers/base/regmap/internal.h

@@ -25,6 +25,7 @@ struct regmap_debugfs_off_cache {
 	off_t min;
 	off_t min;
 	off_t max;
 	off_t max;
 	unsigned int base_reg;
 	unsigned int base_reg;
+	unsigned int max_reg;
 };
 };
 
 
 struct regmap_format {
 struct regmap_format {

+ 8 - 0
drivers/base/regmap/regmap-debugfs.c

@@ -81,6 +81,8 @@ static unsigned int regmap_debugfs_get_dump_start(struct regmap *map,
 	struct regmap_debugfs_off_cache *c = NULL;
 	struct regmap_debugfs_off_cache *c = NULL;
 	loff_t p = 0;
 	loff_t p = 0;
 	unsigned int i, ret;
 	unsigned int i, ret;
+	unsigned int fpos_offset;
+	unsigned int reg_offset;
 
 
 	/*
 	/*
 	 * If we don't have a cache build one so we don't have to do a
 	 * If we don't have a cache build one so we don't have to do a
@@ -93,6 +95,9 @@ static unsigned int regmap_debugfs_get_dump_start(struct regmap *map,
 			    regmap_precious(map, i)) {
 			    regmap_precious(map, i)) {
 				if (c) {
 				if (c) {
 					c->max = p - 1;
 					c->max = p - 1;
+					fpos_offset = c->max - c->min;
+					reg_offset = fpos_offset / map->debugfs_tot_len;
+					c->max_reg = c->base_reg + reg_offset;
 					list_add_tail(&c->list,
 					list_add_tail(&c->list,
 						      &map->debugfs_off_cache);
 						      &map->debugfs_off_cache);
 					c = NULL;
 					c = NULL;
@@ -119,6 +124,9 @@ static unsigned int regmap_debugfs_get_dump_start(struct regmap *map,
 	/* Close the last entry off if we didn't scan beyond it */
 	/* Close the last entry off if we didn't scan beyond it */
 	if (c) {
 	if (c) {
 		c->max = p - 1;
 		c->max = p - 1;
+		fpos_offset = c->max - c->min;
+		reg_offset = fpos_offset / map->debugfs_tot_len;
+		c->max_reg = c->base_reg + reg_offset;
 		list_add_tail(&c->list,
 		list_add_tail(&c->list,
 			      &map->debugfs_off_cache);
 			      &map->debugfs_off_cache);
 	}
 	}