Re: [PATCH 12/19] ASoC: soc-card: add probed bit field to snd_soc_card

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 5/25/20 8:18 PM, Kuninori Morimoto wrote:

From: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx>

We have bit field to control snd_soc_card.
Let's add probed field on it instead of local variable.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx>
---
  include/sound/soc.h  |  1 +
  sound/soc/soc-core.c | 18 ++++++++----------
  2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/include/sound/soc.h b/include/sound/soc.h
index 060c01c32547..74868436ac79 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -1096,6 +1096,7 @@ struct snd_soc_card {
  	unsigned int topology_shortname_created:1;
  	unsigned int fully_routed:1;
  	unsigned int disable_route_checks:1;
+	unsigned int probed:1;
void *drvdata;
  };
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 02147acf6547..7cfb3ee6ff4f 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1723,8 +1723,7 @@ static void __soc_setup_card_name(char *name, int len,
  	}
  }
-static void soc_cleanup_card_resources(struct snd_soc_card *card,
-				       int card_probed)
+static void soc_cleanup_card_resources(struct snd_soc_card *card)
  {
  	struct snd_soc_pcm_runtime *rtd, *n;
@@ -1748,8 +1747,9 @@ static void soc_cleanup_card_resources(struct snd_soc_card *card,
  	soc_cleanup_card_debugfs(card);
/* remove the card */
-	if (card_probed && card->remove)
+	if (card->probed && card->remove)
  		card->remove(card);
+	card->probed = 0;
if (card->snd_card) {
  		snd_card_free(card->snd_card);
@@ -1760,12 +1760,10 @@ static void soc_cleanup_card_resources(struct snd_soc_card *card,
  static void snd_soc_unbind_card(struct snd_soc_card *card, bool unregister)
  {
  	if (card->instantiated) {
-		int card_probed = 1;
-

This looks like a change, now soc_cleanup_card_resources() is called without setting the card_probed bitfield?

everywhere else I see a 1:1 mapping between variable and bitfield usage, not here, is this intentional?

  		card->instantiated = false;
  		snd_soc_flush_all_delayed_work(card);
- soc_cleanup_card_resources(card, card_probed);
+		soc_cleanup_card_resources(card);
  		if (!unregister)
  			list_add(&card->list, &unbind_card_list);
  	} else {
@@ -1779,7 +1777,7 @@ static int snd_soc_bind_card(struct snd_soc_card *card)
  	struct snd_soc_pcm_runtime *rtd;
  	struct snd_soc_component *component;
  	struct snd_soc_dai_link *dai_link;
-	int ret, i, card_probed = 0;
+	int ret, i;
mutex_lock(&client_mutex);
  	mutex_lock_nested(&card->mutex, SND_SOC_CARD_CLASS_INIT);
@@ -1831,7 +1829,7 @@ static int snd_soc_bind_card(struct snd_soc_card *card)
  		ret = card->probe(card);
  		if (ret < 0)
  			goto probe_end;
-		card_probed = 1;
+		card->probed = 1;
  	}
/* probe all components used by DAI links on this card */
@@ -1923,7 +1921,7 @@ static int snd_soc_bind_card(struct snd_soc_card *card)
  			goto probe_end;
  		}
  	}
-	card_probed = 1;
+	card->probed = 1;
snd_soc_dapm_new_widgets(card); @@ -1945,7 +1943,7 @@ static int snd_soc_bind_card(struct snd_soc_card *card) probe_end:
  	if (ret < 0)
-		soc_cleanup_card_resources(card, card_probed);
+		soc_cleanup_card_resources(card);
mutex_unlock(&card->mutex);
  	mutex_unlock(&client_mutex);




[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux