diff options
Diffstat (limited to 'drivers/base/regmap/regmap-debugfs.c')
| -rw-r--r-- | drivers/base/regmap/regmap-debugfs.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/regmap-debugfs.c index 251eb70f83e7..bb1ff175b962 100644 --- a/drivers/base/regmap/regmap-debugfs.c +++ b/drivers/base/regmap/regmap-debugfs.c | |||
| @@ -80,7 +80,7 @@ static ssize_t regmap_map_read_file(struct file *file, char __user *user_buf, | |||
| 80 | val_len = 2 * map->format.val_bytes; | 80 | val_len = 2 * map->format.val_bytes; |
| 81 | tot_len = reg_len + val_len + 3; /* : \n */ | 81 | tot_len = reg_len + val_len + 3; /* : \n */ |
| 82 | 82 | ||
| 83 | for (i = 0; i < map->max_register + 1; i++) { | 83 | for (i = 0; i <= map->max_register; i += map->reg_stride) { |
| 84 | if (!regmap_readable(map, i)) | 84 | if (!regmap_readable(map, i)) |
| 85 | continue; | 85 | continue; |
| 86 | 86 | ||
| @@ -197,7 +197,7 @@ static ssize_t regmap_access_read_file(struct file *file, | |||
| 197 | reg_len = regmap_calc_reg_len(map->max_register, buf, count); | 197 | reg_len = regmap_calc_reg_len(map->max_register, buf, count); |
| 198 | tot_len = reg_len + 10; /* ': R W V P\n' */ | 198 | tot_len = reg_len + 10; /* ': R W V P\n' */ |
| 199 | 199 | ||
| 200 | for (i = 0; i < map->max_register + 1; i++) { | 200 | for (i = 0; i <= map->max_register; i += map->reg_stride) { |
| 201 | /* Ignore registers which are neither readable nor writable */ | 201 | /* Ignore registers which are neither readable nor writable */ |
| 202 | if (!regmap_readable(map, i) && !regmap_writeable(map, i)) | 202 | if (!regmap_readable(map, i) && !regmap_writeable(map, i)) |
| 203 | continue; | 203 | continue; |
| @@ -242,10 +242,17 @@ static const struct file_operations regmap_access_fops = { | |||
| 242 | .llseek = default_llseek, | 242 | .llseek = default_llseek, |
| 243 | }; | 243 | }; |
| 244 | 244 | ||
| 245 | void regmap_debugfs_init(struct regmap *map) | 245 | void regmap_debugfs_init(struct regmap *map, const char *name) |
| 246 | { | 246 | { |
| 247 | map->debugfs = debugfs_create_dir(dev_name(map->dev), | 247 | if (name) { |
| 248 | regmap_debugfs_root); | 248 | map->debugfs_name = kasprintf(GFP_KERNEL, "%s-%s", |
| 249 | dev_name(map->dev), name); | ||
| 250 | name = map->debugfs_name; | ||
| 251 | } else { | ||
| 252 | name = dev_name(map->dev); | ||
| 253 | } | ||
| 254 | |||
| 255 | map->debugfs = debugfs_create_dir(name, regmap_debugfs_root); | ||
| 249 | if (!map->debugfs) { | 256 | if (!map->debugfs) { |
| 250 | dev_warn(map->dev, "Failed to create debugfs directory\n"); | 257 | dev_warn(map->dev, "Failed to create debugfs directory\n"); |
| 251 | return; | 258 | return; |
| @@ -274,6 +281,7 @@ void regmap_debugfs_init(struct regmap *map) | |||
| 274 | void regmap_debugfs_exit(struct regmap *map) | 281 | void regmap_debugfs_exit(struct regmap *map) |
| 275 | { | 282 | { |
| 276 | debugfs_remove_recursive(map->debugfs); | 283 | debugfs_remove_recursive(map->debugfs); |
| 284 | kfree(map->debugfs_name); | ||
| 277 | } | 285 | } |
| 278 | 286 | ||
| 279 | void regmap_debugfs_initcall(void) | 287 | void regmap_debugfs_initcall(void) |
