All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
To: Mark Brown <broonie@kernel.org>
Cc: Linux-ALSA <alsa-devel@alsa-project.org>
Subject: [PATCH resend 01/47] ASoC: soc-core: allow no Platform on dai_link
Date: 19 Jun 2019 10:14:07 +0900	[thread overview]
Message-ID: <875zp2wf8h.wl-kuninori.morimoto.gx@renesas.com> (raw)
In-Reply-To: <877e9iwf9f.wl-kuninori.morimoto.gx@renesas.com>


From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

dai_link is used to selecting Component (= CPU/Codec/Platform) and
DAI (= CPU/Codec). And selected CPU/Codec/Platform components are
*listed* on Card.

Many drivers don't need special Platform component, but was
mandatory at legacy style ALSA SoC.
Thus, there is this kind of settings on many drivers.

	dai_link->platform_of_node = dai_link->cpu_of_node;

In this case, soc_bind_dai_link() will pick-up "CPU component" as
"Platform component", and try to add it to snd_soc_pcm_runtime.
But it will be ignored, because it is already added when CPU bindings.

Historically, this kind of "CPU component" is used/selected as
"Platform" on many ALSA SoC drivers.
OTOH, Dummy Platform will be selected automatically by ALSA SoC if
driver doesn't have Platform settings.

These indicates that there are 2 type of Platforms exist at current
ALSA SoC if driver doesn't need special Platform.

	1) use Dummy Platform as Platform component
	2) use CPU component  as Platform component

ALSA SoC will call Dummy Platform callback function if it is using
Dummy Platform, but it is completely pointless. Because it is the
sound card which doesn't need special Platform.

Thus, the behavior we request to ALSA SoC is selecting 2) automatically
instead of 1) if sound card doesn't need special Platform.
And, 2) means "do nothing" as above explain.

These were needed at legacy style dai_link, but is no longer needed
at modern style dai_link anymore.

This patch allows "no Platform" settings on dai_link, and will do
nothing for it if there was no platform settings. This is same as 2).

By this patch, all drivers which is selecting "CPU component" as
"Platform" can remove such settings.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 include/sound/soc.h  |  2 +-
 sound/soc/soc-core.c | 64 +++++++++++++++++++++++++++-------------------------
 2 files changed, 34 insertions(+), 32 deletions(-)

diff --git a/include/sound/soc.h b/include/sound/soc.h
index 055e6d0..2ba3099 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -926,7 +926,7 @@ struct snd_soc_dai_link {
 	/*
 	 * You MAY specify the link's platform/PCM/DMA driver, either by
 	 * device name, or by DT/OF node, but not both. Some forms of link
-	 * do not need a platform.
+	 * do not need a platform. In such case, platforms are not mandatory.
 	 */
 	struct snd_soc_dai_link_component *platforms;
 	unsigned int num_platforms;
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 2a408cc..699f538 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -788,6 +788,9 @@ static int snd_soc_is_matching_component(
 {
 	struct device_node *component_of_node;
 
+	if (!dlc)
+		return 0;
+
 	component_of_node = soc_component_to_node(component);
 
 	if (dlc->of_node && component_of_node != dlc->of_node)
@@ -1051,20 +1054,12 @@ static void soc_remove_dai_links(struct snd_soc_card *card)
 	}
 }
 
-static struct snd_soc_dai_link_component dummy_link = COMP_DUMMY();
-
 static int soc_init_dai_link(struct snd_soc_card *card,
 			     struct snd_soc_dai_link *link)
 {
 	int i;
 	struct snd_soc_dai_link_component *codec;
 
-	/* default Platform */
-	if (!link->platforms || !link->num_platforms) {
-		link->platforms = &dummy_link;
-		link->num_platforms = 1;
-	}
-
 	for_each_link_codecs(link, i, codec) {
 		/*
 		 * Codec must be specified by 1 of name or OF node,
@@ -1084,32 +1079,39 @@ static int soc_init_dai_link(struct snd_soc_card *card,
 		}
 	}
 
-	/* FIXME */
-	if (link->num_platforms > 1) {
-		dev_err(card->dev,
-			"ASoC: multi platform is not yet supported %s\n",
-			link->name);
-		return -EINVAL;
-	}
-
 	/*
-	 * Platform may be specified by either name or OF node, but
-	 * can be left unspecified, and a dummy platform will be used.
+	 * Platform may be specified by either name or OF node,
+	 * or no Platform.
+	 *
+	 * FIXME
+	 *
+	 * We need multi-platform support
 	 */
-	if (link->platforms->name && link->platforms->of_node) {
-		dev_err(card->dev,
-			"ASoC: Both platform name/of_node are set for %s\n",
-			link->name);
-		return -EINVAL;
-	}
+	if (link->num_platforms > 0) {
 
-	/*
-	 * Defer card registartion if platform dai component is not added to
-	 * component list.
-	 */
-	if ((link->platforms->of_node || link->platforms->name) &&
-	    !soc_find_component(link->platforms->of_node, link->platforms->name))
-		return -EPROBE_DEFER;
+		if (link->num_platforms > 1) {
+			dev_err(card->dev,
+				"ASoC: multi platform is not yet supported %s\n",
+				link->name);
+			return -EINVAL;
+		}
+
+		if (link->platforms->name && link->platforms->of_node) {
+			dev_err(card->dev,
+				"ASoC: Both platform name/of_node are set for %s\n",
+				link->name);
+			return -EINVAL;
+		}
+
+		/*
+		 * Defer card registartion if platform dai component is not
+		 * added to component list.
+		 */
+		if ((link->platforms->of_node || link->platforms->name) &&
+		    !soc_find_component(link->platforms->of_node,
+					link->platforms->name))
+			return -EPROBE_DEFER;
+	}
 
 	/* FIXME */
 	if (link->num_cpus > 1) {
-- 
2.7.4

  reply	other threads:[~2019-06-19  1:14 UTC|newest]

Thread overview: 109+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-19  1:13 [PATCH resend 00/47] ASoC: no Platform support Kuninori Morimoto
2019-06-19  1:14 ` Kuninori Morimoto [this message]
2019-06-19 12:12   ` Applied "ASoC: soc-core: allow no Platform on dai_link" to the asoc tree Mark Brown
2019-06-19  1:14 ` [PATCH resend 02/47] ASoC: vc4: vc4_hdmi: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: vc4: vc4_hdmi: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:14 ` [PATCH resend 03/47] ASoC: atmel: atmel-classd: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: atmel: atmel-classd: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:14 ` [PATCH resend 04/47] ASoC: atmel: atmel-pdmic: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: atmel: atmel-pdmic: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:14 ` [PATCH resend 05/47] ASoC: atmel: atmel_wm8904: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: atmel: atmel_wm8904: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:14 ` [PATCH resend 05/47] ASoC: atmel: atmel_wm8904: don't select unnecessary Platform Kuninori Morimoto
2019-06-19  1:15 ` [PATCH resend 06/47] ASoC: atmel: mikroe-proto: " Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: atmel: mikroe-proto: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:15 ` [PATCH resend 07/47] ASoC: atmel: sam9g20_wm8731: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: atmel: sam9g20_wm8731: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:15 ` [PATCH resend 07/47] ASoC: atmel: sam9g20_wm8731: don't select unnecessary Platform Kuninori Morimoto
2019-06-19  1:16 ` [PATCH resend 08/47] ASoC: atmel: sam9x5_wm8731: " Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: atmel: sam9x5_wm8731: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:16 ` [PATCH resend 09/47] ASoC: atmel: tse850-pcm5142: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: atmel: tse850-pcm5142: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:16 ` [PATCH resend 10/47] ASoC: fsl: eukrea-tlv320: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: fsl: eukrea-tlv320: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:16 ` [PATCH resend 11/47] ASoC: fsl: fsl-asoc-card: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: fsl: fsl-asoc-card: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:16 ` [PATCH resend 12/47] ASoC: fsl: imx-es8328: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: fsl: imx-es8328: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:16 ` [PATCH resend 13/47] ASoC: fsl: imx-sgtl5000: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: fsl: imx-sgtl5000: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:17 ` [PATCH resend 14/47] ASoC: fsl: imx-spdif: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: fsl: imx-spdif: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:17 ` [PATCH resend 15/47] ASoC: fsl: imx-audmix: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: fsl: imx-audmix: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:17 ` [PATCH resend 16/47] ASoC: kirkwood: armada-370-db: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: kirkwood: armada-370-db: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:17 ` [PATCH resend 17/47] ASoC: mxs: mxs-sgtl5000: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: mxs: mxs-sgtl5000: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:17 ` [PATCH resend 18/47] ASoC: qcom: apq8016_sbc: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: qcom: apq8016_sbc: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:17 ` [PATCH resend 19/47] ASoC: qcom: storm: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: qcom: storm: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:17 ` [PATCH resend 20/47] ASoC: rockchip: rk3288_hdmi_analog: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: rockchip: rk3288_hdmi_analog: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:17 ` [PATCH resend 21/47] ASoC: rockchip: rockchip_max98090: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: rockchip: rockchip_max98090: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 22/47] ASoC: rockchip: rockchip_rt5645: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: rockchip: rockchip_rt5645: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 23/47] ASoC: samsung: arndale_rt5631: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: samsung: arndale_rt5631: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 24/47] ASoC: samsung: smdk_wm8994: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: samsung: smdk_wm8994: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 25/47] ASoC: samsung: snow: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: samsung: snow: don't select unnecessary Platform" to the asoc tree Mark Brown
     [not found]   ` <CGME20190624131905eucas1p2cf4335b4d1483b7e62d0c9e7b5223a3c@eucas1p2.samsung.com>
2019-06-24 13:19     ` [PATCH resend 25/47] ASoC: samsung: snow: don't select unnecessary Platform Marek Szyprowski
2019-06-25  0:51       ` Kuninori Morimoto
2019-06-25  5:36         ` Marek Szyprowski
2019-06-25  8:25           ` Kuninori Morimoto
2019-06-25  8:37             ` Marek Szyprowski
2019-06-25 23:44               ` Kuninori Morimoto
2019-06-26  1:15                 ` Kuninori Morimoto
2019-06-26  6:41                   ` Marek Szyprowski
2019-06-26  6:48                     ` Marek Szyprowski
2019-06-26  7:20                       ` Kuninori Morimoto
2019-06-27 12:44                       ` Marek Szyprowski
2019-06-27 23:53                         ` Kuninori Morimoto
2019-06-19  1:18 ` [PATCH resend 26/47] ASoC: samsung: tm2_wm5110: " Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: samsung: tm2_wm5110: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 27/47] ASoC: sirf: sirf-audio: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: sirf: sirf-audio: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 28/47] ASoC: sunxi: sun4i-codec: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: sunxi: sun4i-codec: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 29/47] ASoC: tegra: tegra_alc5632: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: tegra: tegra_alc5632: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 30/47] ASoC: tegra: tegra_max98090: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: tegra: tegra_max98090: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 31/47] ASoC: tegra: tegra_rt5640: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: tegra: tegra_rt5640: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 32/47] ASoC: tegra: tegra_rt5677: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: tegra: tegra_rt5677: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 33/47] ASoC: tegra: tegra_sgtl5000: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: tegra: tegra_sgtl5000: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 34/47] ASoC: tegra: tegra_wm8753: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: tegra: tegra_wm8753: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:18 ` [PATCH resend 35/47] ASoC: tegra: tegra_wm8903: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: tegra: tegra_wm8903: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 36/47] ASoC: tegra: tegra_wm9712: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: tegra: tegra_wm9712: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 37/47] ASoC: tegra: trimslice: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:12   ` Applied "ASoC: tegra: trimslice: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 38/47] ASoC: ti: davinci-evm: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:11   ` Applied "ASoC: ti: davinci-evm: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 39/47] ASoC: ti: omap-abe-twl6040: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:11   ` Applied "ASoC: ti: omap-abe-twl6040: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 40/47] ASoC: ti: omap-hdmi: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:11   ` Applied "ASoC: ti: omap-hdmi: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 41/47] ASoC: ti: omap-twl4030: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:11   ` Applied "ASoC: ti: omap-twl4030: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 42/47] ASoC: ti: rx51: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:11   ` Applied "ASoC: ti: rx51: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 43/47] ASoC: ux500: mop500: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:11   ` Applied "ASoC: ux500: mop500: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 44/47] ASoC: simple-card-utils: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:11   ` Applied "ASoC: simple-card-utils: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 45/47] ASoC: qcom: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:11   ` Applied "ASoC: qcom: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 46/47] ASoC: rockchip: rk3399_gru_sound: don't select unnecessary Platform Kuninori Morimoto
2019-06-19 12:11   ` Applied "ASoC: rockchip: rk3399_gru_sound: don't select unnecessary Platform" to the asoc tree Mark Brown
2019-06-19  1:19 ` [PATCH resend 47/47] ASoC: soc-utils: remove dummy Platform Kuninori Morimoto
2019-06-19 12:11   ` Applied "ASoC: soc-utils: remove dummy Platform" 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=875zp2wf8h.wl-kuninori.morimoto.gx@renesas.com \
    --to=kuninori.morimoto.gx@renesas.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    /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.