Lines Matching +full:dsp +full:- +full:ctrl

1 // SPDX-License-Identifier: GPL-2.0
3 * mtk-dsp-sof-common.c -- MediaTek dsp sof common ctrl
9 #include "mtk-dsp-sof-common.h"
10 #include "mtk-soc-card.h"
16 struct snd_soc_card *card = rtd->card; in mtk_sof_dai_link_fixup()
18 struct mtk_sof_priv *sof_priv = soc_card_data->sof_priv; in mtk_sof_dai_link_fixup()
21 for (i = 0; i < sof_priv->num_streams; i++) { in mtk_sof_dai_link_fixup()
25 const struct sof_conn_stream *conn = &sof_priv->conn_streams[i]; in mtk_sof_dai_link_fixup()
27 if (strcmp(rtd->dai_link->name, conn->normal_link)) in mtk_sof_dai_link_fixup()
31 if (strcmp(runtime->dai_link->name, conn->sof_link)) in mtk_sof_dai_link_fixup()
35 if (cpu_dai->stream_active[conn->stream_dir] > 0) { in mtk_sof_dai_link_fixup()
36 sof_dai_link = runtime->dai_link; in mtk_sof_dai_link_fixup()
43 if (sof_dai_link && sof_dai_link->be_hw_params_fixup) in mtk_sof_dai_link_fixup()
44 ret = sof_dai_link->be_hw_params_fixup(runtime, params); in mtk_sof_dai_link_fixup()
60 if (dai_link->no_pcm && !dai_link->stream_name && dai_link->name) in mtk_sof_card_probe()
61 dai_link->stream_name = dai_link->name; in mtk_sof_card_probe()
74 struct mtk_sof_priv *sof_priv = soc_card_data->sof_priv; in mtk_sof_card_late_probe()
79 sof_comp = snd_soc_rtdcom_lookup(rtd, "sof-audio-component"); in mtk_sof_card_late_probe()
85 dev_info(card->dev, "probe without sof-audio-component\n"); in mtk_sof_card_late_probe()
90 for (i = 0; i < sof_priv->num_streams; i++) { in mtk_sof_card_late_probe()
91 const struct sof_conn_stream *conn = &sof_priv->conn_streams[i]; in mtk_sof_card_late_probe()
96 if (!strcmp(rtd->dai_link->name, conn->sof_link)) { in mtk_sof_card_late_probe()
100 if (!strcmp(rtd->dai_link->name, conn->normal_link)) { in mtk_sof_card_late_probe()
115 cpu_dai->playback_widget; in mtk_sof_card_late_probe()
117 cpu_dai->capture_widget; in mtk_sof_card_late_probe()
119 if (conn->stream_dir == SNDRV_PCM_STREAM_CAPTURE && in mtk_sof_card_late_probe()
122 route.source = conn->sof_dma; in mtk_sof_card_late_probe()
123 route.sink = p->sink->name; in mtk_sof_card_late_probe()
124 snd_soc_dapm_add_routes(&card->dapm, &route, 1); in mtk_sof_card_late_probe()
126 } else if (conn->stream_dir == SNDRV_PCM_STREAM_PLAYBACK && in mtk_sof_card_late_probe()
129 route.source = p->source->name; in mtk_sof_card_late_probe()
130 route.sink = conn->sof_dma; in mtk_sof_card_late_probe()
131 snd_soc_dapm_add_routes(&card->dapm, &route, 1); in mtk_sof_card_late_probe()
134 dev_err(cpu_dai->dev, "stream dir and widget not pair\n"); in mtk_sof_card_late_probe()
138 sof_rtd->dai_link->be_hw_params_fixup = in mtk_sof_card_late_probe()
139 sof_comp->driver->be_hw_params_fixup; in mtk_sof_card_late_probe()
140 if (sof_priv->sof_dai_link_fixup) in mtk_sof_card_late_probe()
141 normal_rtd->dai_link->be_hw_params_fixup = in mtk_sof_card_late_probe()
142 sof_priv->sof_dai_link_fixup; in mtk_sof_card_late_probe()
144 normal_rtd->dai_link->be_hw_params_fixup = mtk_sof_dai_link_fixup; in mtk_sof_card_late_probe()
156 struct device *dev = card->dev; in mtk_sof_dailink_parse_of()
161 num_links = of_property_count_strings(np, "mediatek,dai-link"); in mtk_sof_dailink_parse_of()
162 if (num_links < 0 || num_links > card->num_links) { in mtk_sof_dailink_parse_of()
163 dev_dbg(dev, "number of dai-link is invalid\n"); in mtk_sof_dailink_parse_of()
164 return -EINVAL; in mtk_sof_dailink_parse_of()
169 return -ENOMEM; in mtk_sof_dailink_parse_of()
189 return -EINVAL; in mtk_sof_dailink_parse_of()
191 card->dai_link = parsed_dai_link; in mtk_sof_dailink_parse_of()
192 card->num_links = parsed_num_links; in mtk_sof_dailink_parse_of()