ASoC: Intel: sof_sdw: Move flags to private struct
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Tue, 26 Mar 2024 16:04:02 +0000 (11:04 -0500)
committerMark Brown <broonie@kernel.org>
Tue, 26 Mar 2024 16:13:25 +0000 (16:13 +0000)
Move the flags ignore_pch_dmic and append_dai_type into the drivers
private structure rather than passing them around between functions.

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-8-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/boards/sof_sdw.c
sound/soc/intel/boards/sof_sdw_common.h

index 45732884e310631572bd92c34f8215d1264fcba6..5557db68a002b7376b55499f4bb1890a49c24f98 100644 (file)
@@ -1463,10 +1463,7 @@ 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 *be_id, bool *ignore_pch_dmic,
-                             bool append_dai_type,
-                             int adr_index,
-                             int dai_index)
+                             int *be_id, int adr_index, int dai_index)
 {
        struct mc_private *ctx = snd_soc_card_get_drvdata(card);
        struct device *dev = card->dev;
@@ -1549,8 +1546,7 @@ static int create_sdw_dailink(struct snd_soc_card *card, int *link_index,
        if (!codec_info)
                return -EINVAL;
 
-       if (codec_info->ignore_pch_dmic)
-               *ignore_pch_dmic = true;
+       ctx->ignore_pch_dmic |= codec_info->ignore_pch_dmic;
 
        for_each_pcm_streams(stream) {
                char *name, *cpu_name;
@@ -1572,7 +1568,7 @@ static int create_sdw_dailink(struct snd_soc_card *card, int *link_index,
                }
 
                /* create stream name according to first link id */
-               if (append_dai_type) {
+               if (ctx->append_dai_type) {
                        name = devm_kasprintf(dev, GFP_KERNEL,
                                              sdw_stream_name[stream + 2], cpu_dai_id[0],
                                              type_strings[codec_info->dais[dai_index].dai_type]);
@@ -1647,8 +1643,6 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
        struct snd_soc_codec_conf *codec_conf;
        struct sof_sdw_codec_info *codec_info;
        struct sof_sdw_codec_info *ssp_info;
-       bool append_dai_type = false;
-       bool ignore_pch_dmic = false;
        int codec_conf_num = 0;
        bool group_generated[SDW_MAX_GROUPS] = { };
        struct snd_soc_dai_link *dai_links;
@@ -1732,7 +1726,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
                        if (!codec_info)
                                return -EINVAL;
                        if (codec_info->dai_num > 1) {
-                               append_dai_type = true;
+                               ctx->append_dai_type = true;
                                goto out;
                        }
                        for (j = 0; j < i; j++) {
@@ -1740,7 +1734,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
                                    SDW_PART_ID(adr_link->adr_d[j].adr)) ||
                                    (SDW_MFG_ID(adr_link->adr_d[i].adr) !=
                                    SDW_MFG_ID(adr_link->adr_d[j].adr))) {
-                                       append_dai_type = true;
+                                       ctx->append_dai_type = true;
                                        goto out;
                                }
                        }
@@ -1771,8 +1765,7 @@ out:
                                ret = create_sdw_dailink(card, &link_index, dai_links,
                                                         sdw_be_num, adr_link,
                                                         &codec_conf, &current_be_id,
-                                                        &ignore_pch_dmic,
-                                                        append_dai_type, i, j);
+                                                        i, j);
                                if (ret < 0) {
                                        dev_err(dev, "failed to create dai link %d\n", link_index);
                                        return ret;
@@ -1825,7 +1818,7 @@ SSP:
 DMIC:
        /* dmic */
        if (dmic_num > 0) {
-               if (ignore_pch_dmic) {
+               if (ctx->ignore_pch_dmic) {
                        dev_warn(dev, "Ignoring PCH DMIC\n");
                        goto HDMI;
                }
index a04cbab9bc70dd4059b94f553b0389dd080603d9..1daf98a5849f7e74c0194e31fa51ff8ae79a500e 100644 (file)
@@ -103,6 +103,8 @@ struct mc_private {
        struct device *amp_dev1, *amp_dev2;
        /* To store SDW Pin index for each SoundWire link */
        unsigned int sdw_pin_index[SDW_MAX_LINKS];
+       bool append_dai_type;
+       bool ignore_pch_dmic;
 };
 
 extern unsigned long sof_sdw_quirk;