]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - sound/soc/soc-dapm.c
Merge remote-tracking branch 'asoc/fix/core' into asoc-component
[karo-tx-linux.git] / sound / soc / soc-dapm.c
index cdc837ed144d7d1bd8d06287aa1111b85b67fc6d..fab1a8813abf0ad1273be98759a538a088f4c20f 100644 (file)
@@ -375,6 +375,13 @@ static void dapm_reset(struct snd_soc_card *card)
        }
 }
 
+static const char *soc_dapm_prefix(struct snd_soc_dapm_context *dapm)
+{
+       if (!dapm->component)
+               return NULL;
+       return dapm->component->name_prefix;
+}
+
 static int soc_widget_read(struct snd_soc_dapm_widget *w, int reg,
        unsigned int *value)
 {
@@ -570,11 +577,7 @@ static int dapm_create_or_share_mixmux_kcontrol(struct snd_soc_dapm_widget *w,
        const char *name;
        int ret;
 
-       if (dapm->codec)
-               prefix = dapm->codec->name_prefix;
-       else
-               prefix = NULL;
-
+       prefix = soc_dapm_prefix(dapm);
        if (prefix)
                prefix_len = strlen(prefix) + 1;
        else
@@ -2371,14 +2374,16 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm,
        const char *source;
        char prefixed_sink[80];
        char prefixed_source[80];
+       const char *prefix;
        int ret;
 
-       if (dapm->codec && dapm->codec->name_prefix) {
+       prefix = soc_dapm_prefix(dapm);
+       if (prefix) {
                snprintf(prefixed_sink, sizeof(prefixed_sink), "%s %s",
-                        dapm->codec->name_prefix, route->sink);
+                        prefix, route->sink);
                sink = prefixed_sink;
                snprintf(prefixed_source, sizeof(prefixed_source), "%s %s",
-                        dapm->codec->name_prefix, route->source);
+                        prefix, route->source);
                source = prefixed_source;
        } else {
                sink = route->sink;
@@ -2439,6 +2444,7 @@ static int snd_soc_dapm_del_route(struct snd_soc_dapm_context *dapm,
        const char *source;
        char prefixed_sink[80];
        char prefixed_source[80];
+       const char *prefix;
 
        if (route->control) {
                dev_err(dapm->dev,
@@ -2446,12 +2452,13 @@ static int snd_soc_dapm_del_route(struct snd_soc_dapm_context *dapm,
                return -EINVAL;
        }
 
-       if (dapm->codec && dapm->codec->name_prefix) {
+       prefix = soc_dapm_prefix(dapm);
+       if (prefix) {
                snprintf(prefixed_sink, sizeof(prefixed_sink), "%s %s",
-                        dapm->codec->name_prefix, route->sink);
+                        prefix, route->sink);
                sink = prefixed_sink;
                snprintf(prefixed_source, sizeof(prefixed_source), "%s %s",
-                        dapm->codec->name_prefix, route->source);
+                        prefix, route->source);
                source = prefixed_source;
        } else {
                sink = route->sink;
@@ -2971,6 +2978,7 @@ snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm,
                         const struct snd_soc_dapm_widget *widget)
 {
        struct snd_soc_dapm_widget *w;
+       const char *prefix;
        int ret;
 
        if ((w = dapm_cnew_widget(widget)) == NULL)
@@ -3011,9 +3019,9 @@ snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm,
                break;
        }
 
-       if (dapm->codec && dapm->codec->name_prefix)
-               w->name = kasprintf(GFP_KERNEL, "%s %s",
-                       dapm->codec->name_prefix, widget->name);
+       prefix = soc_dapm_prefix(dapm);
+       if (prefix)
+               w->name = kasprintf(GFP_KERNEL, "%s %s", prefix, widget->name);
        else
                w->name = kasprintf(GFP_KERNEL, "%s", widget->name);
 
@@ -3395,8 +3403,8 @@ void snd_soc_dapm_connect_dai_link_widgets(struct snd_soc_card *card)
                        source = cpu_dai->playback_widget;
                        sink = codec_dai->playback_widget;
                        dev_dbg(rtd->dev, "connected DAI link %s:%s -> %s:%s\n",
-                               cpu_dai->codec->name, source->name,
-                               codec_dai->platform->name, sink->name);
+                               cpu_dai->component->name, source->name,
+                               codec_dai->component->name, sink->name);
 
                        snd_soc_dapm_add_path(&card->dapm, source, sink,
                                NULL, NULL);
@@ -3407,8 +3415,8 @@ void snd_soc_dapm_connect_dai_link_widgets(struct snd_soc_card *card)
                        source = codec_dai->capture_widget;
                        sink = cpu_dai->capture_widget;
                        dev_dbg(rtd->dev, "connected DAI link %s:%s -> %s:%s\n",
-                               codec_dai->codec->name, source->name,
-                               cpu_dai->platform->name, sink->name);
+                               codec_dai->component->name, source->name,
+                               cpu_dai->component->name, sink->name);
 
                        snd_soc_dapm_add_path(&card->dapm, source, sink,
                                NULL, NULL);
@@ -3758,36 +3766,31 @@ static bool snd_soc_dapm_widget_in_card_paths(struct snd_soc_card *card,
 }
 
 /**
- * snd_soc_dapm_auto_nc_codec_pins - call snd_soc_dapm_nc_pin for unused pins
- * @codec: The codec whose pins should be processed
+ * snd_soc_dapm_auto_nc_pins - call snd_soc_dapm_nc_pin for unused pins
+ * @card: The card whose pins should be processed
  *
- * Automatically call snd_soc_dapm_nc_pin() for any external pins in the codec
- * which are unused. Pins are used if they are connected externally to the
- * codec, whether that be to some other device, or a loop-back connection to
- * the codec itself.
+ * Automatically call snd_soc_dapm_nc_pin() for any external pins in the card
+ * which are unused. Pins are used if they are connected externally to a
+ * component, whether that be to some other device, or a loop-back connection to
+ * the component itself.
  */
-void snd_soc_dapm_auto_nc_codec_pins(struct snd_soc_codec *codec)
+void snd_soc_dapm_auto_nc_pins(struct snd_soc_card *card)
 {
-       struct snd_soc_card *card = codec->card;
-       struct snd_soc_dapm_context *dapm = &codec->dapm;
        struct snd_soc_dapm_widget *w;
 
-       dev_dbg(codec->dev, "ASoC: Auto NC: DAPMs: card:%p codec:%p\n",
-               &card->dapm, &codec->dapm);
+       dev_dbg(card->dev, "ASoC: Auto NC: DAPMs: card:%p\n", &card->dapm);
 
        list_for_each_entry(w, &card->widgets, list) {
-               if (w->dapm != dapm)
-                       continue;
                switch (w->id) {
                case snd_soc_dapm_input:
                case snd_soc_dapm_output:
                case snd_soc_dapm_micbias:
-                       dev_dbg(codec->dev, "ASoC: Auto NC: Checking widget %s\n",
+                       dev_dbg(card->dev, "ASoC: Auto NC: Checking widget %s\n",
                                w->name);
                        if (!snd_soc_dapm_widget_in_card_paths(card, w)) {
-                               dev_dbg(codec->dev,
+                               dev_dbg(card->dev,
                                        "... Not in map; disabling\n");
-                               snd_soc_dapm_nc_pin(dapm, w->name);
+                               snd_soc_dapm_nc_pin(w->dapm, w->name);
                        }
                        break;
                default: