All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lars-Peter Clausen <lars@metafoo.de>
To: Mark Brown <broonie@kernel.org>, Liam Girdwood <lgirdwood@gmail.com>
Cc: Vinod Koul <vinod.koul@intel.com>,
	alsa-devel@alsa-project.org, Lars-Peter Clausen <lars@metafoo.de>
Subject: [PATCH v2 04/11] ASoC: Auto disconnect pins from all DAPM contexts
Date: Mon, 16 Jun 2014 18:13:04 +0200	[thread overview]
Message-ID: <1402935191-18398-5-git-send-email-lars@metafoo.de> (raw)
In-Reply-To: <1402935191-18398-1-git-send-email-lars@metafoo.de>

Currently only pins in CODEC DAPM contexts are automatically marked as
non-connected if the card has the fully_routed flag set. This makes sense since
widgets which qualify for auto-disconnection are only found in CODEC DAPM
contexts. But with componentisation this is going to change, so consider all
widgets for auto-disconnection.

Also it is probably faster to walk the widgets list only once rather than once
for each CODEC.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 include/sound/soc-dapm.h |  2 +-
 sound/soc/soc-core.c     |  3 +--
 sound/soc/soc-dapm.c     | 27 +++++++++++----------------
 3 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index 6b59471..8db627c 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -431,7 +431,7 @@ int snd_soc_dapm_force_enable_pin_unlocked(struct snd_soc_dapm_context *dapm,
 					   const char *pin);
 int snd_soc_dapm_ignore_suspend(struct snd_soc_dapm_context *dapm,
 				const char *pin);
-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);
 
 /* Mostly internal - should not normally be used */
 void dapm_mark_io_dirty(struct snd_soc_dapm_context *dapm);
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 0944da6..bca8a71 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1928,8 +1928,7 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
 	}
 
 	if (card->fully_routed)
-		list_for_each_entry(codec, &card->codec_dev_list, card_list)
-			snd_soc_dapm_auto_nc_codec_pins(codec);
+		snd_soc_dapm_auto_nc_pins(card);
 
 	snd_soc_dapm_new_widgets(card);
 
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index f3ccf6d1..fab1a88 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -3766,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:
-- 
1.8.0

  parent reply	other threads:[~2014-06-16 16:13 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-16 16:13 [PATCH v2 00/11] ASoC: Add support for DAPM at the component level Lars-Peter Clausen
2014-06-16 16:13 ` [PATCH v2 01/11] ASoC: Move name_prefix from CODEC to component Lars-Peter Clausen
2014-06-21 20:03   ` Mark Brown
2014-06-16 16:13 ` [PATCH v2 02/11] ASoC: Move name and id from CODEC/platform " Lars-Peter Clausen
2014-06-21 20:04   ` Mark Brown
2014-06-16 16:13 ` [PATCH v2 03/11] ASoC: Split component registration into two steps Lars-Peter Clausen
2014-06-21 20:05   ` Mark Brown
2014-06-16 16:13 ` Lars-Peter Clausen [this message]
2014-06-21 20:07   ` [PATCH v2 04/11] ASoC: Auto disconnect pins from all DAPM contexts Mark Brown
2014-06-16 16:13 ` [PATCH v2 05/11] ASoC: Add a set_bias_level() callback to the DAPM context struct Lars-Peter Clausen
2014-06-21 20:14   ` Mark Brown
2014-06-22  5:26     ` Vinod Koul
2014-06-22 10:12       ` Mark Brown
2014-06-23  4:34         ` Vinod Koul
2014-06-23 10:08           ` Mark Brown
2014-06-21 20:34   ` Mark Brown
2014-06-16 16:13 ` [PATCH v2 06/11] ASoC: Add DAPM support at the component level Lars-Peter Clausen
2014-06-21 20:34   ` Mark Brown
2014-06-16 16:13 ` [PATCH v2 07/11] ASoC: Use component DAPM context for platforms Lars-Peter Clausen
2014-06-21 20:34   ` Mark Brown
2014-06-16 16:13 ` [PATCH v2 08/11] ASoC: Add component level stream_event() and seq_notifier() support Lars-Peter Clausen
2014-06-21 20:35   ` Mark Brown
2014-06-16 16:13 ` [PATCH v2 09/11] ASoC: Add component level set_bias_level() support Lars-Peter Clausen
2014-06-21 20:38   ` Mark Brown
2014-06-16 16:13 ` [PATCH v2 10/11] ASoC: dapm: Remove DAI DAPM context Lars-Peter Clausen
2014-06-21 20:36   ` Mark Brown
2014-06-16 16:13 ` [PATCH v2 11/11] ASoC: dapm: Remove platform field from widget and dapm context struct Lars-Peter Clausen
2014-06-21 20:36   ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1402935191-18398-5-git-send-email-lars@metafoo.de \
    --to=lars@metafoo.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=vinod.koul@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.