Merge branch 'for-2.6.36' into for-2.6.37
[sfrench/cifs-2.6.git] / sound / soc / soc-core.c
index a004876a39a95ad06cbb831f03d32d36364831b7..42542e0da2a377b96cfa0d40ec26bebbceecb56b 100644 (file)
@@ -234,16 +234,7 @@ static const struct file_operations codec_reg_fops = {
 
 static void soc_init_codec_debugfs(struct snd_soc_codec *codec)
 {
-       char codec_root[128];
-
-       if (codec->dev)
-               snprintf(codec_root, sizeof(codec_root),
-                       "%s.%s", codec->name, dev_name(codec->dev));
-       else
-               snprintf(codec_root, sizeof(codec_root),
-                       "%s", codec->name);
-
-       codec->debugfs_codec_root = debugfs_create_dir(codec_root,
+       codec->debugfs_codec_root = debugfs_create_dir(codec->name ,
                                                       debugfs_root);
        if (!codec->debugfs_codec_root) {
                printk(KERN_WARNING
@@ -258,7 +249,7 @@ static void soc_init_codec_debugfs(struct snd_soc_codec *codec)
                printk(KERN_WARNING
                       "ASoC: Failed to create codec register debugfs file\n");
 
-       codec->debugfs_pop_time = debugfs_create_u32("dapm_pop_time", 0744,
+       codec->debugfs_pop_time = debugfs_create_u32("dapm_pop_time", 0644,
                                                     codec->debugfs_codec_root,
                                                     &codec->pop_time);
        if (!codec->debugfs_pop_time)
@@ -1323,6 +1314,9 @@ static int soc_probe_dai_link(struct snd_soc_card *card, int num)
                                return ret;
                        }
                }
+
+               soc_init_codec_debugfs(codec);
+
                /* mark codec as probed and add to card codec list */
                codec->probed = 1;
                list_add(&codec->card_list, &card->codec_dev_list);
@@ -1400,8 +1394,6 @@ static int soc_probe_dai_link(struct snd_soc_card *card, int num)
        if (ret < 0)
                printk(KERN_WARNING "asoc: failed to add codec sysfs files\n");
 
-       soc_init_codec_debugfs(codec);
-
        /* create the pcm */
        ret = soc_new_pcm(rtd, num);
        if (ret < 0) {
@@ -1539,7 +1531,7 @@ card_probe_error:
 }
 
 /*
- * Attempt to initialise any uninitalised cards.  Must be called with
+ * Attempt to initialise any uninitialised cards.  Must be called with
  * client_mutex.
  */
 static void snd_soc_instantiate_cards(void)
@@ -2924,7 +2916,7 @@ int snd_soc_register_dais(struct device *dev,
        struct snd_soc_dai *dai;
        int i, ret = 0;
 
-       dev_dbg(dev, "dai register %s #%d\n", dev_name(dev), count);
+       dev_dbg(dev, "dai register %s #%Zu\n", dev_name(dev), count);
 
        for (i = 0; i < count; i++) {
 
@@ -3130,10 +3122,12 @@ int snd_soc_register_codec(struct device *dev,
                fixup_codec_formats(&dai_drv[i].capture);
        }
 
-       /* register DAIs */
-       ret = snd_soc_register_dais(dev, dai_drv, num_dai);
-       if (ret < 0)
+       /* register any DAIs */
+       if (num_dai) {
+               ret = snd_soc_register_dais(dev, dai_drv, num_dai);
+               if (ret < 0)
                        goto error;
+       }
 
        mutex_lock(&client_mutex);
        list_add(&codec->list, &codec_list);
@@ -3172,8 +3166,9 @@ void snd_soc_unregister_codec(struct device *dev)
        return;
 
 found:
-       for (i = 0; i < codec->num_dai; i++)
-               snd_soc_unregister_dai(dev);
+       if (codec->num_dai)
+               for (i = 0; i < codec->num_dai; i++)
+                       snd_soc_unregister_dai(dev);
 
        mutex_lock(&client_mutex);
        list_del(&codec->list);