Commit f8782f77 authored by AngeloGioacchino Del Regno's avatar AngeloGioacchino Del Regno Committed by Mark Brown

ASoC: mediatek: common: Constify struct mtk_sof_priv

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: default avatarAlexandre Mergnat <amergnat@baylibre.com>
Signed-off-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20240416071410.75620-3-angelogioacchino.delregno@collabora.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent bce93a16
...@@ -15,7 +15,7 @@ int mtk_sof_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, ...@@ -15,7 +15,7 @@ int mtk_sof_dai_link_fixup(struct snd_soc_pcm_runtime *rtd,
{ {
struct snd_soc_card *card = rtd->card; struct snd_soc_card *card = rtd->card;
struct mtk_soc_card_data *soc_card_data = snd_soc_card_get_drvdata(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; int i, j, ret = 0;
for (i = 0; i < sof_priv->num_streams; i++) { for (i = 0; i < sof_priv->num_streams; i++) {
...@@ -55,7 +55,6 @@ int mtk_sof_card_probe(struct snd_soc_card *card) ...@@ -55,7 +55,6 @@ int mtk_sof_card_probe(struct snd_soc_card *card)
int i; int i;
struct snd_soc_dai_link *dai_link; struct snd_soc_dai_link *dai_link;
struct mtk_soc_card_data *soc_card_data = snd_soc_card_get_drvdata(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;
/* Set stream_name to help sof bind widgets */ /* Set stream_name to help sof bind widgets */
for_each_card_prelinks(card, i, dai_link) { for_each_card_prelinks(card, i, dai_link) {
...@@ -63,7 +62,7 @@ int mtk_sof_card_probe(struct snd_soc_card *card) ...@@ -63,7 +62,7 @@ int mtk_sof_card_probe(struct snd_soc_card *card)
dai_link->stream_name = dai_link->name; 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; return 0;
} }
...@@ -73,7 +72,7 @@ static struct snd_soc_pcm_runtime *mtk_sof_find_tplg_be(struct snd_soc_pcm_runti ...@@ -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 snd_soc_card *card = rtd->card;
struct mtk_soc_card_data *soc_card_data = snd_soc_card_get_drvdata(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 *fe;
struct snd_soc_pcm_runtime *be; struct snd_soc_pcm_runtime *be;
struct snd_soc_dpcm *dpcm; 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, ...@@ -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 snd_soc_card *card = rtd->card;
struct mtk_soc_card_data *soc_card_data = snd_soc_card_get_drvdata(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 snd_soc_pcm_runtime *sof_be;
struct mtk_dai_link *dai_link; struct mtk_dai_link *dai_link;
int ret = 0; int ret = 0;
...@@ -125,7 +124,7 @@ static int mtk_sof_check_tplg_be_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, ...@@ -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) else if (sof_be->dai_link->be_hw_params_fixup)
ret = sof_be->dai_link->be_hw_params_fixup(sof_be, params); ret = sof_be->dai_link->be_hw_params_fixup(sof_be, params);
} else { } 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 (strcmp(dai_link->name, rtd->dai_link->name) == 0) {
if (dai_link->be_hw_params_fixup) if (dai_link->be_hw_params_fixup)
ret = dai_link->be_hw_params_fixup(rtd, params); ret = dai_link->be_hw_params_fixup(rtd, params);
...@@ -144,7 +143,7 @@ int mtk_sof_card_late_probe(struct snd_soc_card *card) ...@@ -144,7 +143,7 @@ int mtk_sof_card_late_probe(struct snd_soc_card *card)
struct snd_soc_component *sof_comp = NULL; struct snd_soc_component *sof_comp = NULL;
struct mtk_soc_card_data *soc_card_data = struct mtk_soc_card_data *soc_card_data =
snd_soc_card_get_drvdata(card); 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 snd_soc_dai_link *dai_link;
struct mtk_dai_link *mtk_dai_link; struct mtk_dai_link *mtk_dai_link;
int i; int i;
...@@ -173,7 +172,7 @@ int mtk_sof_card_late_probe(struct snd_soc_card *card) ...@@ -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->be_hw_params_fixup = dai_link->be_hw_params_fixup;
mtk_dai_link->name = dai_link->name; 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) if (dai_link->no_pcm)
......
...@@ -30,7 +30,6 @@ struct mtk_sof_priv { ...@@ -30,7 +30,6 @@ struct mtk_sof_priv {
int num_streams; int num_streams;
int (*sof_dai_link_fixup)(struct snd_soc_pcm_runtime *rtd, int (*sof_dai_link_fixup)(struct snd_soc_pcm_runtime *rtd,
struct snd_pcm_hw_params *params); struct snd_pcm_hw_params *params);
struct list_head dai_link_list;
}; };
int mtk_sof_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, int mtk_sof_dai_link_fixup(struct snd_soc_pcm_runtime *rtd,
......
...@@ -13,7 +13,7 @@ struct mtk_platform_card_data; ...@@ -13,7 +13,7 @@ struct mtk_platform_card_data;
struct mtk_sof_priv; struct mtk_sof_priv;
struct mtk_soc_card_data { 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 list_head sof_dai_link_list;
struct mtk_platform_card_data *card_data; struct mtk_platform_card_data *card_data;
void *mach_priv; void *mach_priv;
......
...@@ -22,7 +22,7 @@ struct mtk_platform_card_data { ...@@ -22,7 +22,7 @@ struct mtk_platform_card_data {
struct mtk_soundcard_pdata { struct mtk_soundcard_pdata {
const char *card_name; const char *card_name;
struct mtk_platform_card_data *card_data; 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); int (*soc_probe)(struct mtk_soc_card_data *card_data, bool legacy);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment