ASoC: mediatek: common: Constify struct mtk_sof_priv
authorAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Tue, 16 Apr 2024 07:13:54 +0000 (09:13 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 16 Apr 2024 10:59:55 +0000 (19:59 +0900)
Apart from a dai_link_list variable, the mtk_sof_priv currently holds
data that never gets modified during runtime.

Constify the mtk_sof_priv structure and move the SOF dai_link_list as
sof_dai_link_list in struct mtk_soc_card_data, which is a structure
that already holds the card's machine specific, runtime modified data.

This allows to safely pass the mtk_sof_priv structure as platform data
for the commonized card probe mechanism.

Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20240416071410.75620-3-angelogioacchino.delregno@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/mediatek/common/mtk-dsp-sof-common.c
sound/soc/mediatek/common/mtk-dsp-sof-common.h
sound/soc/mediatek/common/mtk-soc-card.h
sound/soc/mediatek/common/mtk-soundcard-driver.h

index 7ec8965a70c06ba1b48ece52b5099832544e842a..bca758dca2c9a6f2aea082978b6827a0e54ea7e5 100644 (file)
@@ -15,7 +15,7 @@ int mtk_sof_dai_link_fixup(struct snd_soc_pcm_runtime *rtd,
 {
        struct snd_soc_card *card = rtd->card;
        struct mtk_soc_card_data *soc_card_data = snd_soc_card_get_drvdata(card);
-       struct mtk_sof_priv *sof_priv = soc_card_data->sof_priv;
+       const struct mtk_sof_priv *sof_priv = soc_card_data->sof_priv;
        int i, j, ret = 0;
 
        for (i = 0; i < sof_priv->num_streams; i++) {
@@ -55,7 +55,6 @@ int mtk_sof_card_probe(struct snd_soc_card *card)
        int i;
        struct snd_soc_dai_link *dai_link;
        struct mtk_soc_card_data *soc_card_data = snd_soc_card_get_drvdata(card);
-       struct mtk_sof_priv *sof_priv = soc_card_data->sof_priv;
 
        /* Set stream_name to help sof bind widgets */
        for_each_card_prelinks(card, i, dai_link) {
@@ -63,7 +62,7 @@ int mtk_sof_card_probe(struct snd_soc_card *card)
                        dai_link->stream_name = dai_link->name;
        }
 
-       INIT_LIST_HEAD(&sof_priv->dai_link_list);
+       INIT_LIST_HEAD(&soc_card_data->sof_dai_link_list);
 
        return 0;
 }
@@ -73,7 +72,7 @@ static struct snd_soc_pcm_runtime *mtk_sof_find_tplg_be(struct snd_soc_pcm_runti
 {
        struct snd_soc_card *card = rtd->card;
        struct mtk_soc_card_data *soc_card_data = snd_soc_card_get_drvdata(card);
-       struct mtk_sof_priv *sof_priv = soc_card_data->sof_priv;
+       const struct mtk_sof_priv *sof_priv = soc_card_data->sof_priv;
        struct snd_soc_pcm_runtime *fe;
        struct snd_soc_pcm_runtime *be;
        struct snd_soc_dpcm *dpcm;
@@ -113,7 +112,7 @@ static int mtk_sof_check_tplg_be_dai_link_fixup(struct snd_soc_pcm_runtime *rtd,
 {
        struct snd_soc_card *card = rtd->card;
        struct mtk_soc_card_data *soc_card_data = snd_soc_card_get_drvdata(card);
-       struct mtk_sof_priv *sof_priv = soc_card_data->sof_priv;
+       const struct mtk_sof_priv *sof_priv = soc_card_data->sof_priv;
        struct snd_soc_pcm_runtime *sof_be;
        struct mtk_dai_link *dai_link;
        int ret = 0;
@@ -125,7 +124,7 @@ static int mtk_sof_check_tplg_be_dai_link_fixup(struct snd_soc_pcm_runtime *rtd,
                else if (sof_be->dai_link->be_hw_params_fixup)
                        ret = sof_be->dai_link->be_hw_params_fixup(sof_be, params);
        } else {
-               list_for_each_entry(dai_link, &sof_priv->dai_link_list, list) {
+               list_for_each_entry(dai_link, &soc_card_data->sof_dai_link_list, list) {
                        if (strcmp(dai_link->name, rtd->dai_link->name) == 0) {
                                if (dai_link->be_hw_params_fixup)
                                        ret = dai_link->be_hw_params_fixup(rtd, params);
@@ -144,7 +143,7 @@ int mtk_sof_card_late_probe(struct snd_soc_card *card)
        struct snd_soc_component *sof_comp = NULL;
        struct mtk_soc_card_data *soc_card_data =
                snd_soc_card_get_drvdata(card);
-       struct mtk_sof_priv *sof_priv = soc_card_data->sof_priv;
+       const struct mtk_sof_priv *sof_priv = soc_card_data->sof_priv;
        struct snd_soc_dai_link *dai_link;
        struct mtk_dai_link *mtk_dai_link;
        int i;
@@ -173,7 +172,7 @@ int mtk_sof_card_late_probe(struct snd_soc_card *card)
                        mtk_dai_link->be_hw_params_fixup = dai_link->be_hw_params_fixup;
                        mtk_dai_link->name = dai_link->name;
 
-                       list_add(&mtk_dai_link->list, &sof_priv->dai_link_list);
+                       list_add(&mtk_dai_link->list, &soc_card_data->sof_dai_link_list);
                }
 
                if (dai_link->no_pcm)
index 4bc5e1c0c8ed9b016b48e64e74afe9de747e7a99..8784ee471132a95ebe6d00e063c3b8a451f675ce 100644 (file)
@@ -30,7 +30,6 @@ struct mtk_sof_priv {
        int num_streams;
        int (*sof_dai_link_fixup)(struct snd_soc_pcm_runtime *rtd,
                                  struct snd_pcm_hw_params *params);
-       struct list_head dai_link_list;
 };
 
 int mtk_sof_dai_link_fixup(struct snd_soc_pcm_runtime *rtd,
index d92dc36d45774b41cb7862c7b2c0fb6fbf7f5be6..3f6e24dd22df13ddb3aef1625a77d2e29e46fccf 100644 (file)
@@ -13,7 +13,7 @@ struct mtk_platform_card_data;
 struct mtk_sof_priv;
 
 struct mtk_soc_card_data {
-       struct mtk_sof_priv *sof_priv;
+       const struct mtk_sof_priv *sof_priv;
        struct list_head sof_dai_link_list;
        struct mtk_platform_card_data *card_data;
        void *mach_priv;
index 44320efff5f81da6e568591cc8e03fec6b19d49c..4fd2ffb7e486f604979d18bc92c9a74ea030aeaa 100644 (file)
@@ -22,7 +22,7 @@ struct mtk_platform_card_data {
 struct mtk_soundcard_pdata {
        const char *card_name;
        struct mtk_platform_card_data *card_data;
-       struct mtk_sof_priv *sof_priv;
+       const struct mtk_sof_priv *sof_priv;
        int (*soc_probe)(struct mtk_soc_card_data *card_data, bool legacy);
 };