• Home
  • Raw
  • Download

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 (conn->normal_link && 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 (snd_soc_dai_stream_active(cpu_dai, 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()
114 struct snd_soc_dapm_widget *widget = snd_soc_dai_get_widget(cpu_dai, conn->stream_dir); in mtk_sof_card_late_probe()
117 if (conn->stream_dir == SNDRV_PCM_STREAM_CAPTURE && widget) { in mtk_sof_card_late_probe()
119 route.source = conn->sof_dma; in mtk_sof_card_late_probe()
120 route.sink = p->sink->name; in mtk_sof_card_late_probe()
121 snd_soc_dapm_add_routes(&card->dapm, &route, 1); in mtk_sof_card_late_probe()
123 } else if (conn->stream_dir == SNDRV_PCM_STREAM_PLAYBACK && widget) { in mtk_sof_card_late_probe()
125 route.source = p->source->name; in mtk_sof_card_late_probe()
126 route.sink = conn->sof_dma; in mtk_sof_card_late_probe()
127 snd_soc_dapm_add_routes(&card->dapm, &route, 1); in mtk_sof_card_late_probe()
130 dev_err(cpu_dai->dev, "stream dir and widget not pair\n"); in mtk_sof_card_late_probe()
134 sof_rtd->dai_link->be_hw_params_fixup = in mtk_sof_card_late_probe()
135 sof_comp->driver->be_hw_params_fixup; in mtk_sof_card_late_probe()
136 if (sof_priv->sof_dai_link_fixup) in mtk_sof_card_late_probe()
137 normal_rtd->dai_link->be_hw_params_fixup = in mtk_sof_card_late_probe()
138 sof_priv->sof_dai_link_fixup; in mtk_sof_card_late_probe()
140 normal_rtd->dai_link->be_hw_params_fixup = mtk_sof_dai_link_fixup; in mtk_sof_card_late_probe()
152 struct device *dev = card->dev; in mtk_sof_dailink_parse_of()
157 num_links = of_property_count_strings(np, "mediatek,dai-link"); in mtk_sof_dailink_parse_of()
158 if (num_links < 0 || num_links > card->num_links) { in mtk_sof_dailink_parse_of()
159 dev_dbg(dev, "number of dai-link is invalid\n"); in mtk_sof_dailink_parse_of()
160 return -EINVAL; in mtk_sof_dailink_parse_of()
165 return -ENOMEM; in mtk_sof_dailink_parse_of()
185 return -EINVAL; in mtk_sof_dailink_parse_of()
187 card->dai_link = parsed_dai_link; in mtk_sof_dailink_parse_of()
188 card->num_links = parsed_num_links; in mtk_sof_dailink_parse_of()