/* dapm sys fs - used by the core */
 int snd_soc_dapm_sys_add(struct device *dev);
-void snd_soc_dapm_debugfs_init(struct snd_soc_dapm_context *dapm);
+void snd_soc_dapm_debugfs_init(struct snd_soc_dapm_context *dapm,
+                               struct dentry *parent);
 
 /* dapm audio pin control and status */
 int snd_soc_dapm_enable_pin(struct snd_soc_dapm_context *dapm,
 
                printk(KERN_WARNING
                       "ASoC: Failed to create codec register debugfs file\n");
 
-       codec->dapm.debugfs_dapm = debugfs_create_dir("dapm",
-                                                codec->debugfs_codec_root);
-       if (!codec->dapm.debugfs_dapm)
-               printk(KERN_WARNING
-                      "Failed to create DAPM debugfs directory\n");
-
-       snd_soc_dapm_debugfs_init(&codec->dapm);
+       snd_soc_dapm_debugfs_init(&codec->dapm, codec->debugfs_codec_root);
 }
 
 static void soc_cleanup_codec_debugfs(struct snd_soc_codec *codec)
                                        card->num_dapm_routes);
 
 #ifdef CONFIG_DEBUG_FS
-       card->dapm.debugfs_dapm = debugfs_create_dir("dapm",
-                                                    card->debugfs_card_root);
-       if (!card->dapm.debugfs_dapm)
-               printk(KERN_WARNING
-                      "Failed to create card DAPM debugfs directory\n");
-
-       snd_soc_dapm_debugfs_init(&card->dapm);
+       snd_soc_dapm_debugfs_init(&card->dapm, card->debugfs_card_root);
 #endif
 
        snprintf(card->snd_card->shortname, sizeof(card->snd_card->shortname),
 
        .llseek = default_llseek,
 };
 
-void snd_soc_dapm_debugfs_init(struct snd_soc_dapm_context *dapm)
+void snd_soc_dapm_debugfs_init(struct snd_soc_dapm_context *dapm,
+       struct dentry *parent)
 {
        struct snd_soc_dapm_widget *w;
        struct dentry *d;
 
-       if (!dapm->debugfs_dapm)
+       dapm->debugfs_dapm = debugfs_create_dir("dapm", parent);
+
+       if (!dapm->debugfs_dapm) {
+               printk(KERN_WARNING
+                      "Failed to create DAPM debugfs directory\n");
                return;
+       }
 
        d = debugfs_create_file("bias_level", 0444,
                                dapm->debugfs_dapm, dapm,
        }
 }
 #else
-void snd_soc_dapm_debugfs_init(struct snd_soc_dapm_context *dapm)
+void snd_soc_dapm_debugfs_init(struct snd_soc_dapm_context *dapm,
+       struct dentry *parent)
 {
 }
 #endif