Lines Matching full:dai

37 avs_dai_find_path_template(struct snd_soc_dai *dai, bool is_fe, int direction)  in avs_dai_find_path_template()  argument
39 struct snd_soc_dapm_widget *dw = snd_soc_dai_get_widget(dai, direction); in avs_dai_find_path_template()
59 static int avs_dai_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai, bool is_fe, in avs_dai_startup() argument
63 struct avs_dev *adev = to_avs_dev(dai->dev); in avs_dai_startup()
67 template = avs_dai_find_path_template(dai, is_fe, substream->stream); in avs_dai_startup()
69 dev_err(dai->dev, "no %s path for dai %s, invalid tplg?\n", in avs_dai_startup()
70 snd_pcm_stream_str(substream), dai->name); in avs_dai_startup()
80 snd_soc_dai_set_dma_data(dai, substream, data); in avs_dai_startup()
90 struct snd_pcm_hw_params *be_hw_params, struct snd_soc_dai *dai, in avs_dai_hw_params() argument
95 struct avs_dev *adev = to_avs_dev(dai->dev); in avs_dai_hw_params()
98 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_hw_params()
100 dev_dbg(dai->dev, "%s FE hw_params str %p rtd %p", in avs_dai_hw_params()
102 dev_dbg(dai->dev, "rate %d chn %d vbd %d bd %d\n", in avs_dai_hw_params()
106 dev_dbg(dai->dev, "%s BE hw_params str %p rtd %p", in avs_dai_hw_params()
108 dev_dbg(dai->dev, "rate %d chn %d vbd %d bd %d\n", in avs_dai_hw_params()
115 dev_err(dai->dev, "create path failed: %d\n", ret); in avs_dai_hw_params()
124 struct snd_pcm_hw_params *be_hw_params, struct snd_soc_dai *dai, in avs_dai_be_hw_params() argument
137 return avs_dai_hw_params(substream, fe_hw_params, be_hw_params, dai, dma_id); in avs_dai_be_hw_params()
141 struct snd_soc_dai *dai) in avs_dai_prepare() argument
146 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_prepare()
152 dev_err(dai->dev, "reset path failed: %d\n", ret); in avs_dai_prepare()
158 dev_err(dai->dev, "pause path failed: %d\n", ret); in avs_dai_prepare()
164 static int avs_dai_nonhda_be_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_nonhda_be_startup() argument
166 return avs_dai_startup(substream, dai, false, &avs_dai_nonhda_be_ops); in avs_dai_nonhda_be_startup()
169 static void avs_dai_nonhda_be_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_nonhda_be_shutdown() argument
172 struct avs_dev *adev = to_avs_dev(dai->dev); in avs_dai_nonhda_be_shutdown()
178 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_nonhda_be_shutdown()
180 snd_soc_dai_set_dma_data(dai, substream, NULL); in avs_dai_nonhda_be_shutdown()
185 struct snd_pcm_hw_params *hw_params, struct snd_soc_dai *dai) in avs_dai_nonhda_be_hw_params() argument
189 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_nonhda_be_hw_params()
194 return avs_dai_be_hw_params(substream, hw_params, dai, 0); in avs_dai_nonhda_be_hw_params()
197 static int avs_dai_nonhda_be_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_nonhda_be_hw_free() argument
201 dev_dbg(dai->dev, "%s: %s\n", __func__, dai->name); in avs_dai_nonhda_be_hw_free()
203 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_nonhda_be_hw_free()
212 static int avs_dai_nonhda_be_prepare(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_nonhda_be_prepare() argument
214 return avs_dai_prepare(to_avs_dev(dai->dev), substream, dai); in avs_dai_nonhda_be_prepare()
218 struct snd_soc_dai *dai) in avs_dai_nonhda_be_trigger() argument
224 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_nonhda_be_trigger()
235 dev_err(dai->dev, "pause BE path failed: %d\n", ret); in avs_dai_nonhda_be_trigger()
241 dev_err(dai->dev, "run BE path failed: %d\n", ret); in avs_dai_nonhda_be_trigger()
252 dev_err(dai->dev, "pause BE path failed: %d\n", ret); in avs_dai_nonhda_be_trigger()
256 dev_err(dai->dev, "reset BE path failed: %d\n", ret); in avs_dai_nonhda_be_trigger()
278 static int avs_dai_hda_be_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_hda_be_startup() argument
280 return avs_dai_startup(substream, dai, false, &avs_dai_hda_be_ops); in avs_dai_hda_be_startup()
283 static void avs_dai_hda_be_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_hda_be_shutdown() argument
285 return avs_dai_nonhda_be_shutdown(substream, dai); in avs_dai_hda_be_shutdown()
289 struct snd_pcm_hw_params *hw_params, struct snd_soc_dai *dai) in avs_dai_hda_be_hw_params() argument
294 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_hda_be_hw_params()
300 return avs_dai_be_hw_params(substream, hw_params, dai, in avs_dai_hda_be_hw_params()
304 static int avs_dai_hda_be_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_hda_be_hw_free() argument
312 dev_dbg(dai->dev, "%s: %s\n", __func__, dai->name); in avs_dai_hda_be_hw_free()
314 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_hda_be_hw_free()
335 static int avs_dai_hda_be_prepare(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_hda_be_prepare() argument
354 stream_info = snd_soc_dai_get_pcm_stream(dai, substream->stream); in avs_dai_hda_be_prepare()
369 ret = avs_dai_prepare(to_avs_dev(dai->dev), substream, dai); in avs_dai_hda_be_prepare()
378 struct snd_soc_dai *dai) in avs_dai_hda_be_trigger() argument
385 dev_dbg(dai->dev, "entry %s cmd=%d\n", __func__, cmd); in avs_dai_hda_be_trigger()
387 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_hda_be_trigger()
401 dev_err(dai->dev, "pause BE path failed: %d\n", ret); in avs_dai_hda_be_trigger()
407 dev_err(dai->dev, "run BE path failed: %d\n", ret); in avs_dai_hda_be_trigger()
418 dev_err(dai->dev, "pause BE path failed: %d\n", ret); in avs_dai_hda_be_trigger()
424 dev_err(dai->dev, "reset BE path failed: %d\n", ret); in avs_dai_hda_be_trigger()
459 static int avs_dai_fe_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_fe_startup() argument
463 struct avs_dev *adev = to_avs_dev(dai->dev); in avs_dai_fe_startup()
468 ret = avs_dai_startup(substream, dai, true, &avs_dai_fe_ops); in avs_dai_fe_startup()
472 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_fe_startup()
496 dev_dbg(dai->dev, "%s fe STARTUP tag %d str %p", in avs_dai_fe_startup()
506 static void avs_dai_fe_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_fe_shutdown() argument
509 struct avs_dev *adev = to_avs_dev(dai->dev); in avs_dai_fe_shutdown()
515 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_fe_shutdown()
517 snd_soc_dai_set_dma_data(dai, substream, NULL); in avs_dai_fe_shutdown()
523 struct snd_pcm_hw_params *hw_params, struct snd_soc_dai *dai) in avs_dai_fe_hw_params() argument
532 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_fe_hw_params()
548 ret = avs_dai_hw_params(substream, hw_params, be_hw_params, dai, in avs_dai_fe_hw_params()
555 dev_err(dai->dev, "bind FE <-> BE failed: %d\n", ret); in avs_dai_fe_hw_params()
569 static int __avs_dai_fe_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in __avs_dai_fe_hw_free() argument
575 dev_dbg(dai->dev, "%s fe HW_FREE str %p rtd %p", in __avs_dai_fe_hw_free()
578 data = snd_soc_dai_get_dma_data(dai, substream); in __avs_dai_fe_hw_free()
586 dev_err(dai->dev, "unbind FE <-> BE failed: %d\n", ret); in __avs_dai_fe_hw_free()
596 static int avs_dai_fe_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_fe_hw_free() argument
600 ret = __avs_dai_fe_hw_free(substream, dai); in avs_dai_fe_hw_free()
606 static int avs_dai_fe_prepare(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_fe_prepare() argument
611 struct avs_dev *adev = to_avs_dev(dai->dev); in avs_dai_fe_prepare()
617 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_fe_prepare()
625 stream_info = snd_soc_dai_get_pcm_stream(dai, substream->stream); in avs_dai_fe_prepare()
638 ret = avs_dai_prepare(adev, substream, dai); in avs_dai_fe_prepare()
646 static int avs_dai_fe_trigger(struct snd_pcm_substream *substream, int cmd, struct snd_soc_dai *dai) in avs_dai_fe_trigger() argument
655 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_fe_trigger()
676 dev_err(dai->dev, "pause FE path failed: %d\n", ret); in avs_dai_fe_trigger()
682 dev_err(dai->dev, "run FE path failed: %d\n", ret); in avs_dai_fe_trigger()
694 dev_err(dai->dev, "pause FE path failed: %d\n", ret); in avs_dai_fe_trigger()
702 dev_err(dai->dev, "reset FE path failed: %d\n", ret); in avs_dai_fe_trigger()
871 static int avs_dai_resume_hw_params(struct snd_soc_dai *dai, struct avs_dma_data *data) in avs_dai_resume_hw_params() argument
880 ret = dai->driver->ops->hw_params(substream, &rtd->dpcm[substream->stream].hw_params, dai); in avs_dai_resume_hw_params()
882 dev_err(dai->dev, "hw_params on resume failed: %d\n", ret); in avs_dai_resume_hw_params()
887 static int avs_dai_resume_fe_prepare(struct snd_soc_dai *dai, struct avs_dma_data *data) in avs_dai_resume_fe_prepare() argument
901 ret = dai->driver->ops->prepare(data->substream, dai); in avs_dai_resume_fe_prepare()
903 dev_err(dai->dev, "prepare FE on resume failed: %d\n", ret); in avs_dai_resume_fe_prepare()
919 static int avs_dai_resume_be_prepare(struct snd_soc_dai *dai, struct avs_dma_data *data) in avs_dai_resume_be_prepare() argument
923 ret = dai->driver->ops->prepare(data->substream, dai); in avs_dai_resume_be_prepare()
925 dev_err(dai->dev, "prepare BE on resume failed: %d\n", ret); in avs_dai_resume_be_prepare()
930 static int avs_dai_suspend_fe_hw_free(struct snd_soc_dai *dai, struct avs_dma_data *data) in avs_dai_suspend_fe_hw_free() argument
944 ret = __avs_dai_fe_hw_free(data->substream, dai); in avs_dai_suspend_fe_hw_free()
946 dev_err(dai->dev, "hw_free FE on suspend failed: %d\n", ret); in avs_dai_suspend_fe_hw_free()
951 static int avs_dai_suspend_be_hw_free(struct snd_soc_dai *dai, struct avs_dma_data *data) in avs_dai_suspend_be_hw_free() argument
955 ret = dai->driver->ops->hw_free(data->substream, dai); in avs_dai_suspend_be_hw_free()
957 dev_err(dai->dev, "hw_free BE on suspend failed: %d\n", ret); in avs_dai_suspend_be_hw_free()
967 struct snd_soc_dai *dai; in avs_component_pm_op() local
970 for_each_component_dais(component, dai) { in avs_component_pm_op()
971 data = snd_soc_dai_dma_data_get_playback(dai); in avs_component_pm_op()
975 ret = op(dai, data); in avs_component_pm_op()
984 data = snd_soc_dai_dma_data_get_capture(dai); in avs_component_pm_op()
988 ret = op(dai, data); in avs_component_pm_op()
1008 int (*prepare_cb)(struct snd_soc_dai *dai, struct avs_dma_data *data); in avs_component_resume_prepare()
1020 int (*hw_free_cb)(struct snd_soc_dai *dai, struct avs_dma_data *data); in avs_component_suspend_hw_free()
1094 /* only FE DAI links are handled here */ in avs_component_open()
1140 struct snd_soc_dai *dai = snd_soc_rtd_to_cpu(rtd, 0); in avs_component_construct() local
1143 if (dai->driver->playback.channels_min) in avs_component_construct()
1148 if (dai->driver->capture.channels_min) in avs_component_construct()
1252 struct snd_soc_dai_driver *cpus, *dai; in avs_i2s_platform_register() local
1270 dai = cpus; in avs_i2s_platform_register()
1273 memcpy(dai, &i2s_dai_template, sizeof(*dai)); in avs_i2s_platform_register()
1275 dai->name = in avs_i2s_platform_register()
1277 dai->playback.stream_name = in avs_i2s_platform_register()
1279 dai->capture.stream_name = in avs_i2s_platform_register()
1282 if (!dai->name || !dai->playback.stream_name || !dai->capture.stream_name) in avs_i2s_platform_register()
1284 dai++; in avs_i2s_platform_register()
1293 memcpy(dai, &i2s_dai_template, sizeof(*dai)); in avs_i2s_platform_register()
1295 dai->name = in avs_i2s_platform_register()
1297 dai->playback.stream_name = in avs_i2s_platform_register()
1299 dai->capture.stream_name = in avs_i2s_platform_register()
1302 if (!dai->name || !dai->playback.stream_name || !dai->capture.stream_name) in avs_i2s_platform_register()
1304 dai++; in avs_i2s_platform_register()
1312 /* HD-Audio CPU DAI template */
1340 struct snd_soc_dai *dai, *save; in avs_component_hda_unregister_dais() local
1348 for_each_component_dais_safe(component, dai, save) { in avs_component_hda_unregister_dais()
1351 if (!strstr(dai->driver->name, name)) in avs_component_hda_unregister_dais()
1355 snd_soc_dapm_free_widget(snd_soc_dai_get_widget(dai, stream)); in avs_component_hda_unregister_dais()
1357 snd_soc_unregister_dai(dai); in avs_component_hda_unregister_dais()
1391 struct snd_soc_dai *dai; in avs_component_hda_probe() local
1440 dai = snd_soc_register_dai(component, &dais[i], false); in avs_component_hda_probe()
1441 if (!dai) { in avs_component_hda_probe()
1442 dev_err(component->dev, "register dai for %s failed\n", in avs_component_hda_probe()
1448 ret = snd_soc_dapm_new_dai_widgets(dapm, dai); in avs_component_hda_probe()
1523 /* only BE DAI links are handled here */ in avs_component_hda_close()