diff mbox series

ASoC: soc.h: add explanation of legacy/modern style of dai_link

Message ID 87d0ow6n9z.wl-kuninori.morimoto.gx@renesas.com (mailing list archive)
State New, archived
Headers show
Series ASoC: soc.h: add explanation of legacy/modern style of dai_link | expand

Commit Message

Kuninori Morimoto Jan. 17, 2019, 2:28 a.m. UTC
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

Current ALSA SoC is assuming 1 CPU 1 Platform (= DMA) style system.
Because of this background, it is directly using
xxx_name / xxx_of_node / xxx_dai_name on dai_link.
Let's call it as legacy style here.

More complex style system like multi CPU multi Platform (= DMA) will
coming. To supporting it, we can use snd_soc_dai_link_component on
dai_link. Let's call it as modern style here.
But current ALSA SoC can't support it so far. Thus, we need to have
multi CPU / multi Codec / multi Platform style in the future on ALSA SoC.

Currently we already have multi Codec support. Platform is starting to
use modern style on dai_link, but still style only. Multi Platform is
not yet implemented. And we still don't have multi CPU support on ALSA
SoC, and not have modern style either.

Currently, if driver is using legacy style Codec/Platform, it will be
converted to modern style on soc-core. This means, we are using glue code
for legacy vs modern style so far on ALSA SoC.
We can fully switch to modern style on all drivers if ALSA SoC supported
modern style for CPU, and then, legacy style code will be removed from
ALSA SoC.
Untile then, we need to keep both legacy/modern style and its glue code.
This patch adds such future plan and background on soc.h

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

Comments

Daniel Baluta Jan. 17, 2019, 9:56 a.m. UTC | #1
Few typos here:

On Thu, Jan 17, 2019 at 4:28 AM Kuninori Morimoto
<kuninori.morimoto.gx@renesas.com> wrote:
>
> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>
> Current ALSA SoC is assuming 1 CPU 1 Platform (= DMA) style system.
> Because of this background, it is directly using
> xxx_name / xxx_of_node / xxx_dai_name on dai_link.
> Let's call it as legacy style here.
>
> More complex style system like multi CPU multi Platform (= DMA) will
> coming. To supporting it, we can use snd_soc_dai_link_component on
> dai_link. Let's call it as modern style here.
> But current ALSA SoC can't support it so far. Thus, we need to have
> multi CPU / multi Codec / multi Platform style in the future on ALSA SoC.
>
> Currently we already have multi Codec support. Platform is starting to
> use modern style on dai_link, but still style only. Multi Platform is
> not yet implemented. And we still don't have multi CPU support on ALSA
> SoC, and not have modern style either.
>
> Currently, if driver is using legacy style Codec/Platform, it will be
> converted to modern style on soc-core. This means, we are using glue code
> for legacy vs modern style so far on ALSA SoC.
> We can fully switch to modern style on all drivers if ALSA SoC supported
> modern style for CPU, and then, legacy style code will be removed from
> ALSA SoC.
> Untile then, we need to keep both legacy/modern style and its glue code.
> This patch adds such future plan and background on soc.h
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
>  include/sound/soc.h  | 36 ++++++++++++++++++++++++++++++++++++
>  sound/soc/soc-core.c | 20 ++++++++++++++++++--
>  2 files changed, 54 insertions(+), 2 deletions(-)
>
> diff --git a/include/sound/soc.h b/include/sound/soc.h
> index e665f11..d17e368 100644
> --- a/include/sound/soc.h
> +++ b/include/sound/soc.h
> @@ -891,6 +891,18 @@ struct snd_soc_dai_link {
>         /* config - must be set by machine driver */
>         const char *name;                       /* Codec name */
>         const char *stream_name;                /* Stream name */
> +
> +       /*
> +        *      cpu_name
> +        *      cpu_of_node
> +        *      cpu_dai_name
> +        *
> +        * These are legacy style, and will be replaced to
> +        * modern style (= snd_soc_dai_link_component) in the future,
> +        * but, not yet supported so far.
> +        * If modern style was supported for CPU, all driver will switch
> +        * to use it, and, legacy style code will be removed from ALSA SoC.
> +        */
>         /*
>          * You MAY specify the link's CPU-side device, either by device name,
>          * or by DT/OF node, but not both. If this information is omitted,
> @@ -906,6 +918,19 @@ struct snd_soc_dai_link {
>          * only, which only works well when that device exposes a single DAI.
>          */
>         const char *cpu_dai_name;
> +
> +       /*
> +        *      codec_name
> +        *      codec_of_node
> +        *      codec_dai_name
> +        *
> +        * These are legacy style, it will be converted to modern style
> +        * (= snd_soc_dai_link_component) automatically in soc-core
> +        * if driver is using legacy style.
> +        * Dirver shouldn't use both legacy and modern style in the same time.
typo Driver.

> +        * If modern style was supported for CPU, all driver will switch
> +        * to use it, and, legacy style code will be removed from ALSA SoC.
> +        */
>         /*
>          * You MUST specify the link's codec, either by device name, or by
>          * DT/OF node, but not both.
> @@ -919,6 +944,17 @@ struct snd_soc_dai_link {
>         unsigned int num_codecs;
>
>         /*
> +        *      platform_name
> +        *      platform_of_node
> +        *
> +        * These are legacy style, it will be converted to modern style
> +        * (= snd_soc_dai_link_component) automatically in soc-core
> +        * if driver is using legacy style.
> +        * Dirver shouldn't use both legacy and modern style in the same time.
typo Driver

> +        * If modern style was supported for CPU, all driver will switch
> +        * to use it, and, legacy style code will be removed from ALSA SoC.
> +        */
> +       /*
>          * 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.
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index 4c0aaff..f01a223 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -1038,9 +1038,14 @@ static int snd_soc_init_platform(struct snd_soc_card *card,
>         struct snd_soc_dai_link_component *platform = dai_link->platform;
>
>         /*
> -        * FIXME
> +        * REMOVE ME
>          *
> -        * this function should be removed in the future
> +        * This is glue code for Legacy vs Modern dai_link.
> +        * This function will be removed if all derivers are switched to
> +        * modern style dai_link.
> +        * Dirver shouldn't use both legacy and modern style in the same time.
typo Driver
> +        * see
> +        *      soc.h :: struct snd_soc_dai_link
>          */
>         /* convert Legacy platform link */
>         if (!platform || dai_link->legacy_platform) {
> @@ -1068,6 +1073,17 @@ static int snd_soc_init_platform(struct snd_soc_card *card,
>  static int snd_soc_init_multicodec(struct snd_soc_card *card,
>                                    struct snd_soc_dai_link *dai_link)
>  {
> +       /*
> +        * REMOVE ME
> +        *
> +        * This is glue code for Legacy vs Modern dai_link.
> +        * This function will be removed if all derivers are switched to
> +        * modern style dai_link.
> +        * Dirver shouldn't use both legacy and modern style in the same time.
typo driver.

> +        * see
> +        *      soc.h :: struct snd_soc_dai_link
> +        */
> +
>         /* Legacy codec/codec_dai link is a single entry in multicodec */
>         if (dai_link->codec_name || dai_link->codec_of_node ||
>             dai_link->codec_dai_name) {
> --
> 2.7.4
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
Kuninori Morimoto Jan. 18, 2019, 1:44 a.m. UTC | #2
Hi Daniel

> Few typos here:
(snip)
> > +       /*
> > +        *      codec_name
> > +        *      codec_of_node
> > +        *      codec_dai_name
> > +        *
> > +        * These are legacy style, it will be converted to modern style
> > +        * (= snd_soc_dai_link_component) automatically in soc-core
> > +        * if driver is using legacy style.
> > +        * Dirver shouldn't use both legacy and modern style in the same time.
> typo Driver.

Grr, thank you for pointing it.
I will fixup it and post v2

Best regards
---
Kuninori Morimoto
diff mbox series

Patch

diff --git a/include/sound/soc.h b/include/sound/soc.h
index e665f11..d17e368 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -891,6 +891,18 @@  struct snd_soc_dai_link {
 	/* config - must be set by machine driver */
 	const char *name;			/* Codec name */
 	const char *stream_name;		/* Stream name */
+
+	/*
+	 *	cpu_name
+	 *	cpu_of_node
+	 *	cpu_dai_name
+	 *
+	 * These are legacy style, and will be replaced to
+	 * modern style (= snd_soc_dai_link_component) in the future,
+	 * but, not yet supported so far.
+	 * If modern style was supported for CPU, all driver will switch
+	 * to use it, and, legacy style code will be removed from ALSA SoC.
+	 */
 	/*
 	 * You MAY specify the link's CPU-side device, either by device name,
 	 * or by DT/OF node, but not both. If this information is omitted,
@@ -906,6 +918,19 @@  struct snd_soc_dai_link {
 	 * only, which only works well when that device exposes a single DAI.
 	 */
 	const char *cpu_dai_name;
+
+	/*
+	 *	codec_name
+	 *	codec_of_node
+	 *	codec_dai_name
+	 *
+	 * These are legacy style, it will be converted to modern style
+	 * (= snd_soc_dai_link_component) automatically in soc-core
+	 * if driver is using legacy style.
+	 * Dirver shouldn't use both legacy and modern style in the same time.
+	 * If modern style was supported for CPU, all driver will switch
+	 * to use it, and, legacy style code will be removed from ALSA SoC.
+	 */
 	/*
 	 * You MUST specify the link's codec, either by device name, or by
 	 * DT/OF node, but not both.
@@ -919,6 +944,17 @@  struct snd_soc_dai_link {
 	unsigned int num_codecs;
 
 	/*
+	 *	platform_name
+	 *	platform_of_node
+	 *
+	 * These are legacy style, it will be converted to modern style
+	 * (= snd_soc_dai_link_component) automatically in soc-core
+	 * if driver is using legacy style.
+	 * Dirver shouldn't use both legacy and modern style in the same time.
+	 * If modern style was supported for CPU, all driver will switch
+	 * to use it, and, legacy style code will be removed from ALSA SoC.
+	 */
+	/*
 	 * 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.
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 4c0aaff..f01a223 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1038,9 +1038,14 @@  static int snd_soc_init_platform(struct snd_soc_card *card,
 	struct snd_soc_dai_link_component *platform = dai_link->platform;
 
 	/*
-	 * FIXME
+	 * REMOVE ME
 	 *
-	 * this function should be removed in the future
+	 * This is glue code for Legacy vs Modern dai_link.
+	 * This function will be removed if all derivers are switched to
+	 * modern style dai_link.
+	 * Dirver shouldn't use both legacy and modern style in the same time.
+	 * see
+	 *	soc.h :: struct snd_soc_dai_link
 	 */
 	/* convert Legacy platform link */
 	if (!platform || dai_link->legacy_platform) {
@@ -1068,6 +1073,17 @@  static int snd_soc_init_platform(struct snd_soc_card *card,
 static int snd_soc_init_multicodec(struct snd_soc_card *card,
 				   struct snd_soc_dai_link *dai_link)
 {
+	/*
+	 * REMOVE ME
+	 *
+	 * This is glue code for Legacy vs Modern dai_link.
+	 * This function will be removed if all derivers are switched to
+	 * modern style dai_link.
+	 * Dirver shouldn't use both legacy and modern style in the same time.
+	 * see
+	 *	soc.h :: struct snd_soc_dai_link
+	 */
+
 	/* Legacy codec/codec_dai link is a single entry in multicodec */
 	if (dai_link->codec_name || dai_link->codec_of_node ||
 	    dai_link->codec_dai_name) {