ASoC: intel: sof_sdw: Only pass codec_conf pointer around
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Tue, 26 Mar 2024 16:03:59 +0000 (11:03 -0500)
committerMark Brown <broonie@kernel.org>
Tue, 26 Mar 2024 16:13:23 +0000 (16:13 +0000)
Rather than passing around a pointer to the codec_conf array, an index
into it and a size, simply pass around a pointer to the current codec_conf.
This reduces the amount of state moving around.

Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://msgid.link/r/20240326160429.13560-5-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/boards/sof_sdw.c

index 4bd9f62c48fcc64645f5107a3ef572b16dc7f1b3..7b61d45df5da2805f6f990f07b251ce7d243be4d 100644 (file)
@@ -1457,10 +1457,8 @@ static const char * const type_strings[] = {"SimpleJack", "SmartAmp", "SmartMic"
 static int create_sdw_dailink(struct snd_soc_card *card, int *link_index,
                              struct snd_soc_dai_link *dai_links, int sdw_be_num,
                              const struct snd_soc_acpi_link_adr *adr_link,
-                             struct snd_soc_codec_conf *codec_conf,
-                             int codec_count, int *be_id,
-                             int *codec_conf_index,
-                             bool *ignore_pch_dmic,
+                             struct snd_soc_codec_conf **codec_conf,
+                             int *be_id, bool *ignore_pch_dmic,
                              bool append_dai_type,
                              int adr_index,
                              int dai_index)
@@ -1509,7 +1507,7 @@ static int create_sdw_dailink(struct snd_soc_card *card, int *link_index,
                                continue;
 
                        /* sanity check */
-                       if (*codec_conf_index >= codec_count) {
+                       if (*codec_conf >= card->codec_conf + card->num_configs) {
                                dev_err(dev, "codec_conf array overflowed\n");
                                return -EINVAL;
                        }
@@ -1520,12 +1518,11 @@ static int create_sdw_dailink(struct snd_soc_card *card, int *link_index,
                        if (ret)
                                return ret;
 
-                       codec_conf[*codec_conf_index].dlc = codecs[codec_dlc_index];
-                       codec_conf[*codec_conf_index].name_prefix =
-                                       adr_link_next->adr_d[j].name_prefix;
+                       (*codec_conf)->dlc = codecs[codec_dlc_index];
+                       (*codec_conf)->name_prefix = adr_link_next->adr_d[j].name_prefix;
 
                        codec_dlc_index++;
-                       (*codec_conf_index)++;
+                       (*codec_conf)++;
                }
                j = 0;
 
@@ -1646,7 +1643,6 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
        bool append_dai_type = false;
        bool ignore_pch_dmic = false;
        int codec_conf_num = 0;
-       int codec_conf_index = 0;
        bool group_generated[SDW_MAX_GROUPS] = { };
        struct snd_soc_dai_link *dai_links;
        int num_links, link_index = 0;
@@ -1706,6 +1702,9 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
        if (!codec_conf)
                return -ENOMEM;
 
+       card->codec_conf = codec_conf;
+       card->num_configs = codec_conf_num;
+
        /* SDW */
        if (!sdw_be_num)
                goto SSP;
@@ -1764,9 +1763,9 @@ out:
 
                                ret = create_sdw_dailink(card, &link_index, dai_links,
                                                         sdw_be_num, adr_link,
-                                                        codec_conf, codec_conf_num,
-                                                        &current_be_id, &codec_conf_index,
-                                                        &ignore_pch_dmic, append_dai_type, i, j);
+                                                        &codec_conf, &current_be_id,
+                                                        &ignore_pch_dmic,
+                                                        append_dai_type, i, j);
                                if (ret < 0) {
                                        dev_err(dev, "failed to create dai link %d\n", link_index);
                                        return ret;
@@ -1886,9 +1885,6 @@ HDMI:
        card->dai_link = dai_links;
        card->num_links = num_links;
 
-       card->codec_conf = codec_conf;
-       card->num_configs = codec_conf_num;
-
        return 0;
 }