All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Brown <broonie@kernel.org>
To: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Cc: Linux-ALSA <alsa-devel@alsa-project.org>,
	Mark Brown <broonie@kernel.org>
Subject: [alsa-devel] Applied "ASoC: soc-core: remove soc_remove_dai_links()" to the asoc tree
Date: Fri,  4 Oct 2019 18:52:35 +0100 (BST)	[thread overview]
Message-ID: <20191004175235.2E1F72741EF0@ypsilon.sirena.org.uk> (raw)
In-Reply-To: <875zl7bu1r.wl-kuninori.morimoto.gx@renesas.com>

The patch

   ASoC: soc-core: remove soc_remove_dai_links()

has been applied to the asoc tree at

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.5

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.  

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

From 7ce6088f60624805a8d3127185e2830e299849f1 Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 2 Oct 2019 14:22:40 +0900
Subject: [PATCH] ASoC: soc-core: remove soc_remove_dai_links()

It is easy to read code if it is cleanly using paired function/naming,
like start <-> stop, register <-> unregister, etc, etc.
But, current ALSA SoC code is very random, unbalance, not paired, etc.
It is easy to create bug at the such code, and it will be difficult to
debug.

soc_cleanup_card_resources() (a) which is paired function of
snd_soc_instantiate_card() (A) is calling soc_remove_dai_links() (*)
to remove card related resources, but it is breaking
add/remove balance (B)(b)(C)(c)(D)(d), in other words
these should be called from soc_cleanup_card_resources() (a)
from balance point of view.

More headacke is that it is using original removing method for
dai_link even though we already have snd_soc_remove_dai_link()
which is the function for it (d).

This patch removes snd_soc_remove_dai_links() and balance up code.

	static void soc_remove_dai_links(...)
	{
		...
(b)		soc_remove_link_dais(card);
(c)		soc_remove_link_components(card);

		for_each_card_links_safe(card, link, _link) {
			...
			/* it should use snd_soc_remove_dai_link() here */
(d)			list_del(&link->list);
		}
	}

(a)	static int soc_cleanup_card_resources(...)
	{
		...

		/* remove and free each DAI */
(*)		soc_remove_dai_links(card);
		...
	}

(A)	static int snd_soc_instantiate_card(struct snd_soc_card *card)
	{
		...
		/* add predefined DAI links to the list */
		for_each_card_prelinks(card, i, dai_link)
(B)			snd_soc_add_dai_link(card, dai_link);
		...
		/* probe all components used by DAI links on this card */
(C)		ret = soc_probe_link_components(card);
		...
		/* probe all DAI links on this card */
(D)		ret = soc_probe_link_dais(card);
		...
	}

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/875zl7bu1r.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
 sound/soc/soc-core.c | 26 ++++++++------------------
 1 file changed, 8 insertions(+), 18 deletions(-)

diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index b16a94228091..a34000d08856 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1275,23 +1275,6 @@ static int soc_probe_link_components(struct snd_soc_card *card)
 	return 0;
 }
 
-static void soc_remove_dai_links(struct snd_soc_card *card)
-{
-	struct snd_soc_dai_link *link, *_link;
-
-	soc_remove_link_dais(card);
-
-	soc_remove_link_components(card);
-
-	for_each_card_links_safe(card, link, _link) {
-		if (link->dobj.type == SND_SOC_DOBJ_DAI_LINK)
-			dev_warn(card->dev, "Topology forgot to remove link %s?\n",
-				link->name);
-
-		list_del(&link->list);
-	}
-}
-
 static int soc_init_dai_link(struct snd_soc_card *card,
 			     struct snd_soc_dai_link *link)
 {
@@ -1924,6 +1907,8 @@ static void soc_check_tplg_fes(struct snd_soc_card *card)
 
 static void soc_cleanup_card_resources(struct snd_soc_card *card)
 {
+	struct snd_soc_dai_link *link, *_link;
+
 	/* free the ALSA card at first; this syncs with pending operations */
 	if (card->snd_card) {
 		snd_card_free(card->snd_card);
@@ -1931,7 +1916,12 @@ static void soc_cleanup_card_resources(struct snd_soc_card *card)
 	}
 
 	/* remove and free each DAI */
-	soc_remove_dai_links(card);
+	soc_remove_link_dais(card);
+	soc_remove_link_components(card);
+
+	for_each_card_links_safe(card, link, _link)
+		snd_soc_remove_dai_link(card, link);
+
 	soc_remove_pcm_runtimes(card);
 
 	/* remove auxiliary devices */
-- 
2.20.1

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  reply	other threads:[~2019-10-04 17:57 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-02  5:22 [alsa-devel] [PATCH 0/6][resend] ASoC: soc-core cleanup - step 3 Kuninori Morimoto
2019-10-02  5:22 ` [alsa-devel] [PATCH 1/6] ASoC: soc-core: use devm_kzalloc() for rtd Kuninori Morimoto
2019-10-02 18:55   ` Mark Brown
2019-10-03  0:31     ` Kuninori Morimoto
2019-10-03  0:56       ` Kuninori Morimoto
2019-10-04 17:52   ` [alsa-devel] Applied "ASoC: soc-core: use devm_kzalloc() for rtd" to the asoc tree Mark Brown
2019-10-02  5:22 ` [alsa-devel] [PATCH 2/6] ASoC: soc-core: remove soc_remove_dai_links() Kuninori Morimoto
2019-10-04 17:52   ` Mark Brown [this message]
2019-10-02  5:22 ` [alsa-devel] [PATCH 3/6] ASoC: soc-core: add soc_setup_card_name() Kuninori Morimoto
2019-10-04 17:52   ` [alsa-devel] Applied "ASoC: soc-core: add soc_setup_card_name()" to the asoc tree Mark Brown
2019-10-02  5:22 ` [alsa-devel] [PATCH 4/6] ASoC: soc-core: use devm_xxx for component related resource Kuninori Morimoto
2019-10-04 17:52   ` [alsa-devel] Applied "ASoC: soc-core: use devm_xxx for component related resource" to the asoc tree Mark Brown
2019-10-02  5:23 ` [alsa-devel] [PATCH 4/6] ASoC: soc-core: use devm_xxx for component related resource Kuninori Morimoto
2019-10-02  5:23 ` [alsa-devel] [PATCH 5/6] ASoC: soc-core: setup card->rtd_num at snd_soc_instantiate_card() Kuninori Morimoto
2019-10-02  7:42   ` Daniel Baluta
2019-10-02  7:59     ` Kuninori Morimoto
2019-10-04 17:52   ` [alsa-devel] Applied "ASoC: soc-core: setup card->rtd_num at snd_soc_instantiate_card()" to the asoc tree Mark Brown
2019-10-02  5:23 ` [alsa-devel] [PATCH 6/6] ASoC: soc-ops: use snd_soc_card_get_kcontrol() at snd_soc_limit_volume() Kuninori Morimoto
2019-10-04 17:52   ` [alsa-devel] Applied "ASoC: soc-ops: use snd_soc_card_get_kcontrol() at snd_soc_limit_volume()" to the asoc tree 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=20191004175235.2E1F72741EF0@ypsilon.sirena.org.uk \
    --to=broonie@kernel.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=kuninori.morimoto.gx@renesas.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.