#ifdef CONFIG_DEBUG_FS
        struct dentry *debugfs;
+       const char *debugfs_name;
 #endif
 
        unsigned int max_register;
 
 #ifdef CONFIG_DEBUG_FS
 extern void regmap_debugfs_initcall(void);
-extern void regmap_debugfs_init(struct regmap *map);
+extern void regmap_debugfs_init(struct regmap *map, const char *name);
 extern void regmap_debugfs_exit(struct regmap *map);
 #else
 static inline void regmap_debugfs_initcall(void) { }
 
        .llseek = default_llseek,
 };
 
-void regmap_debugfs_init(struct regmap *map)
+void regmap_debugfs_init(struct regmap *map, const char *name)
 {
-       map->debugfs = debugfs_create_dir(dev_name(map->dev),
-                                         regmap_debugfs_root);
+       if (name) {
+               map->debugfs_name = kasprintf(GFP_KERNEL, "%s-%s",
+                                             dev_name(map->dev), name);
+               name = map->debugfs_name;
+       } else {
+               name = dev_name(map->dev);
+       }
+
+       map->debugfs = debugfs_create_dir(name, regmap_debugfs_root);
        if (!map->debugfs) {
                dev_warn(map->dev, "Failed to create debugfs directory\n");
                return;
 void regmap_debugfs_exit(struct regmap *map)
 {
        debugfs_remove_recursive(map->debugfs);
+       kfree(map->debugfs_name);
 }
 
 void regmap_debugfs_initcall(void)
 
                goto err_map;
        }
 
-       regmap_debugfs_init(map);
+       regmap_debugfs_init(map, config->name);
 
        ret = regcache_init(map, config);
        if (ret < 0)
        map->precious_reg = config->precious_reg;
        map->cache_type = config->cache_type;
 
-       regmap_debugfs_init(map);
+       regmap_debugfs_init(map, config->name);
 
        map->cache_bypass = false;
        map->cache_only = false;
 
 /**
  * Configuration for the register map of a device.
  *
+ * @name: Optional name of the regmap. Useful when a device has multiple
+ *        register regions.
+ *
  * @reg_bits: Number of bits in a register address, mandatory.
  * @pad_bits: Number of bits of padding between register and value.
  * @val_bits: Number of bits in a register value, mandatory.
  * @num_reg_defaults_raw: Number of elements in reg_defaults_raw.
  */
 struct regmap_config {
+       const char *name;
+
        int reg_bits;
        int pad_bits;
        int val_bits;