[alsa-devel] [PATCH] ASoC: soc.h: add explanation of legacy/modern style of dai_link
Daniel Baluta
daniel.baluta at gmail.com
Thu Jan 17 10:56:51 CET 2019
Few typos here:
On Thu, Jan 17, 2019 at 4:28 AM Kuninori Morimoto
<kuninori.morimoto.gx at renesas.com> wrote:
>
> From: Kuninori Morimoto <kuninori.morimoto.gx at 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 at 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 at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
More information about the Alsa-devel
mailing list