]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
ASoC: soc.h: clarify Codec2Codec params
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Sun, 2 Apr 2023 22:59:35 +0000 (22:59 +0000)
committerMark Brown <broonie@kernel.org>
Wed, 5 Apr 2023 11:16:36 +0000 (12:16 +0100)
snd_soc_dai_link has params/num_params, but it is unclear that
params for what. This patch clarify it is params for Codec2Codec.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87o7o5c2lk.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc.h
sound/soc/soc-core.c
sound/soc/soc-dapm.c
sound/soc/soc-pcm.c

index 57c5786a625b2f532c83385d52b56a154d3ee214..276afdb1f445f160250181bc461dd8fa88076785 100644 (file)
@@ -684,8 +684,14 @@ struct snd_soc_dai_link {
 
        int id; /* optional ID for machine driver link identification */
 
-       const struct snd_soc_pcm_stream *params;
-       unsigned int num_params;
+       /*
+        * for Codec2Codec
+        */
+       const struct snd_soc_pcm_stream *c2c_params;
+       unsigned int num_c2c_params;
+
+       const struct snd_soc_pcm_stream *params;        /* REMOVE ME */
+       unsigned int num_params;                        /* REMOVE ME */
 
        unsigned int dai_fmt;           /* format to set on init */
 
@@ -1065,7 +1071,7 @@ struct snd_soc_pcm_runtime {
        struct snd_soc_dai_link *dai_link;
        struct snd_pcm_ops ops;
 
-       unsigned int params_select; /* currently selected param for dai link */
+       unsigned int c2c_params_select; /* currently selected c2c_param for dai link */
 
        /* Dynamic PCM BE runtime data */
        struct snd_soc_dpcm_runtime dpcm[SNDRV_PCM_STREAM_LAST + 1];
index 9bbcff492c1e2fd2c92f67f82967554fd5a459fc..04f1bc8a3128e069df487825a8adb8545374a0d2 100644 (file)
@@ -2294,6 +2294,9 @@ EXPORT_SYMBOL_GPL(snd_soc_add_dai_controls);
  */
 int snd_soc_register_card(struct snd_soc_card *card)
 {
+       struct snd_soc_dai_link *dai_link;
+       int i;
+
        if (!card->name || !card->dev)
                return -EINVAL;
 
@@ -2314,6 +2317,14 @@ int snd_soc_register_card(struct snd_soc_card *card)
        mutex_init(&card->dapm_mutex);
        mutex_init(&card->pcm_mutex);
 
+       /* REMOVE ME */
+       for_each_card_prelinks(card, i, dai_link) {
+               if (!dai_link->c2c_params) {
+                       dai_link->c2c_params     = dai_link->params;
+                       dai_link->num_c2c_params = dai_link->num_params;
+               }
+       }
+
        return snd_soc_bind_card(card);
 }
 EXPORT_SYMBOL_GPL(snd_soc_register_card);
index 34fdcb7ee0792a024e86349560f39ec4f547de51..e7a0c28e0cb1ed5397dc0e18c3e152e1ee8c34c5 100644 (file)
@@ -1075,7 +1075,7 @@ static int dapm_new_dai_link(struct snd_soc_dapm_widget *w)
        struct snd_soc_pcm_runtime *rtd = w->priv;
 
        /* create control for links with > 1 config */
-       if (rtd->dai_link->num_params <= 1)
+       if (rtd->dai_link->num_c2c_params <= 1)
                return 0;
 
        /* add kcontrol */
@@ -3864,7 +3864,7 @@ snd_soc_dai_link_event_pre_pmu(struct snd_soc_dapm_widget *w,
         * either party on the link to alter the configuration if
         * necessary
         */
-       config = rtd->dai_link->params + rtd->params_select;
+       config = rtd->dai_link->c2c_params + rtd->c2c_params_select;
        if (!config) {
                dev_err(w->dapm->dev, "ASoC: link config missing\n");
                ret = -EINVAL;
@@ -4010,7 +4010,7 @@ static int snd_soc_dapm_dai_link_get(struct snd_kcontrol *kcontrol,
        struct snd_soc_dapm_widget *w = snd_kcontrol_chip(kcontrol);
        struct snd_soc_pcm_runtime *rtd = w->priv;
 
-       ucontrol->value.enumerated.item[0] = rtd->params_select;
+       ucontrol->value.enumerated.item[0] = rtd->c2c_params_select;
 
        return 0;
 }
@@ -4025,13 +4025,13 @@ static int snd_soc_dapm_dai_link_put(struct snd_kcontrol *kcontrol,
        if (w->power)
                return -EBUSY;
 
-       if (ucontrol->value.enumerated.item[0] == rtd->params_select)
+       if (ucontrol->value.enumerated.item[0] == rtd->c2c_params_select)
                return 0;
 
-       if (ucontrol->value.enumerated.item[0] >= rtd->dai_link->num_params)
+       if (ucontrol->value.enumerated.item[0] >= rtd->dai_link->num_c2c_params)
                return -EINVAL;
 
-       rtd->params_select = ucontrol->value.enumerated.item[0];
+       rtd->c2c_params_select = ucontrol->value.enumerated.item[0];
 
        return 1;
 }
@@ -4039,7 +4039,7 @@ static int snd_soc_dapm_dai_link_put(struct snd_kcontrol *kcontrol,
 static void
 snd_soc_dapm_free_kcontrol(struct snd_soc_card *card,
                        unsigned long *private_value,
-                       int num_params,
+                       int num_c2c_params,
                        const char **w_param_text)
 {
        int count;
@@ -4049,7 +4049,7 @@ snd_soc_dapm_free_kcontrol(struct snd_soc_card *card,
        if (!w_param_text)
                return;
 
-       for (count = 0 ; count < num_params; count++)
+       for (count = 0 ; count < num_c2c_params; count++)
                devm_kfree(card->dev, (void *)w_param_text[count]);
        devm_kfree(card->dev, w_param_text);
 }
@@ -4057,8 +4057,8 @@ snd_soc_dapm_free_kcontrol(struct snd_soc_card *card,
 static struct snd_kcontrol_new *
 snd_soc_dapm_alloc_kcontrol(struct snd_soc_card *card,
                        char *link_name,
-                       const struct snd_soc_pcm_stream *params,
-                       int num_params, const char **w_param_text,
+                       const struct snd_soc_pcm_stream *c2c_params,
+                       int num_c2c_params, const char **w_param_text,
                        unsigned long *private_value)
 {
        struct soc_enum w_param_enum[] = {
@@ -4070,10 +4070,10 @@ snd_soc_dapm_alloc_kcontrol(struct snd_soc_card *card,
                             snd_soc_dapm_dai_link_put),
        };
        struct snd_kcontrol_new *kcontrol_news;
-       const struct snd_soc_pcm_stream *config = params;
+       const struct snd_soc_pcm_stream *config = c2c_params;
        int count;
 
-       for (count = 0 ; count < num_params; count++) {
+       for (count = 0 ; count < num_c2c_params; count++) {
                if (!config->stream_name) {
                        dev_warn(card->dapm.dev,
                                "ASoC: anonymous config %d for dai link %s\n",
@@ -4093,7 +4093,7 @@ snd_soc_dapm_alloc_kcontrol(struct snd_soc_card *card,
                config++;
        }
 
-       w_param_enum[0].items = num_params;
+       w_param_enum[0].items = num_c2c_params;
        w_param_enum[0].texts = w_param_text;
 
        *private_value =
@@ -4118,7 +4118,7 @@ snd_soc_dapm_alloc_kcontrol(struct snd_soc_card *card,
        return kcontrol_news;
 
 outfree_w_param:
-       snd_soc_dapm_free_kcontrol(card, private_value, num_params, w_param_text);
+       snd_soc_dapm_free_kcontrol(card, private_value, num_c2c_params, w_param_text);
        return NULL;
 }
 
@@ -4146,17 +4146,17 @@ snd_soc_dapm_new_dai(struct snd_soc_card *card,
        w_param_text    = NULL;
        kcontrol_news   = NULL;
        num_kcontrols   = 0;
-       if (rtd->dai_link->num_params > 1) {
+       if (rtd->dai_link->num_c2c_params > 1) {
                w_param_text = devm_kcalloc(card->dev,
-                                           rtd->dai_link->num_params,
+                                           rtd->dai_link->num_c2c_params,
                                            sizeof(char *), GFP_KERNEL);
                if (!w_param_text)
                        goto param_fail;
 
                num_kcontrols = 1;
                kcontrol_news = snd_soc_dapm_alloc_kcontrol(card, link_name,
-                                                           rtd->dai_link->params,
-                                                           rtd->dai_link->num_params,
+                                                           rtd->dai_link->c2c_params,
+                                                           rtd->dai_link->num_c2c_params,
                                                            w_param_text, &private_value);
                if (!kcontrol_news)
                        goto param_fail;
@@ -4187,7 +4187,7 @@ snd_soc_dapm_new_dai(struct snd_soc_card *card,
 outfree_kcontrol_news:
        devm_kfree(card->dev, (void *)template.kcontrol_news);
        snd_soc_dapm_free_kcontrol(card, &private_value,
-                                  rtd->dai_link->num_params, w_param_text);
+                                  rtd->dai_link->num_c2c_params, w_param_text);
 param_fail:
        devm_kfree(card->dev, link_name);
 name_fail:
@@ -4336,7 +4336,7 @@ static void dapm_connect_dai_pair(struct snd_soc_card *card,
        struct snd_pcm_str *streams = rtd->pcm->streams;
        int stream;
 
-       if (dai_link->params) {
+       if (dai_link->c2c_params) {
                playback_cpu    = snd_soc_dai_get_widget_capture(cpu_dai);
                capture_cpu     = snd_soc_dai_get_widget_playback(cpu_dai);
        } else {
@@ -4349,7 +4349,7 @@ static void dapm_connect_dai_pair(struct snd_soc_card *card,
        codec = snd_soc_dai_get_widget(codec_dai, stream);
 
        if (playback_cpu && codec) {
-               if (dai_link->params && !rtd->c2c_widget[stream]) {
+               if (dai_link->c2c_params && !rtd->c2c_widget[stream]) {
                        substream = streams[stream].substream;
                        dai = snd_soc_dapm_new_dai(card, substream, "playback");
                        if (IS_ERR(dai))
@@ -4368,7 +4368,7 @@ capture:
        codec = snd_soc_dai_get_widget(codec_dai, stream);
 
        if (codec && capture_cpu) {
-               if (dai_link->params && !rtd->c2c_widget[stream]) {
+               if (dai_link->c2c_params && !rtd->c2c_widget[stream]) {
                        substream = streams[stream].substream;
                        dai = snd_soc_dapm_new_dai(card, substream, "capture");
                        if (IS_ERR(dai))
index b830a53ceacbb8f1ec4173aa4b04bb82c8a6d80f..913a7d98e742fbf7bfc9e25f7bbd78cb6fdffaef 100644 (file)
@@ -2793,9 +2793,9 @@ static int soc_get_playback_capture(struct snd_soc_pcm_runtime *rtd,
                struct snd_soc_dai *codec_dai;
 
                /* Adapt stream for codec2codec links */
-               int cpu_capture = rtd->dai_link->params ?
+               int cpu_capture = rtd->dai_link->c2c_params ?
                        SNDRV_PCM_STREAM_PLAYBACK : SNDRV_PCM_STREAM_CAPTURE;
-               int cpu_playback = rtd->dai_link->params ?
+               int cpu_playback = rtd->dai_link->c2c_params ?
                        SNDRV_PCM_STREAM_CAPTURE : SNDRV_PCM_STREAM_PLAYBACK;
 
                for_each_rtd_codec_dais(rtd, i, codec_dai) {
@@ -2839,7 +2839,7 @@ static int soc_create_pcm(struct snd_pcm **pcm,
        int ret;
 
        /* create the PCM */
-       if (rtd->dai_link->params) {
+       if (rtd->dai_link->c2c_params) {
                snprintf(new_name, sizeof(new_name), "codec2codec(%s)",
                         rtd->dai_link->stream_name);
 
@@ -2896,7 +2896,7 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
         * don't interface with the outside world or application layer
         * we don't have to do any special handling on close.
         */
-       if (!rtd->dai_link->params)
+       if (!rtd->dai_link->c2c_params)
                rtd->close_delayed_work_func = snd_soc_close_delayed_work;
 
        rtd->pcm = pcm;
@@ -2904,7 +2904,7 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
        pcm->private_data = rtd;
        pcm->no_device_suspend = true;
 
-       if (rtd->dai_link->no_pcm || rtd->dai_link->params) {
+       if (rtd->dai_link->no_pcm || rtd->dai_link->c2c_params) {
                if (playback)
                        pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream->private_data = rtd;
                if (capture)