Lines Matching full:dai

39 avs_dai_find_path_template(struct snd_soc_dai *dai, bool is_fe, int direction)  in avs_dai_find_path_template()  argument
41 struct snd_soc_dapm_widget *dw = snd_soc_dai_get_widget(dai, direction); in avs_dai_find_path_template()
71 struct snd_soc_dai *dai = snd_soc_rtd_to_cpu(rtd, 0); in avs_period_elapsed() local
72 struct avs_dma_data *data = snd_soc_dai_get_dma_data(dai, substream); in avs_period_elapsed()
77 static int avs_dai_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_startup() argument
80 struct avs_dev *adev = to_avs_dev(dai->component->dev); in avs_dai_startup()
84 template = avs_dai_find_path_template(dai, !rtd->dai_link->no_pcm, substream->stream); in avs_dai_startup()
86 dev_err(dai->dev, "no %s path for dai %s, invalid tplg?\n", in avs_dai_startup()
87 snd_pcm_stream_str(substream), dai->name); in avs_dai_startup()
99 snd_soc_dai_set_dma_data(dai, substream, data); in avs_dai_startup()
107 static void avs_dai_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_shutdown() argument
112 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_shutdown()
117 snd_soc_dai_set_dma_data(dai, substream, NULL); in avs_dai_shutdown()
123 struct snd_pcm_hw_params *be_hw_params, struct snd_soc_dai *dai, in avs_dai_hw_params() argument
130 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_hw_params()
132 dev_dbg(dai->dev, "%s FE hw_params str %p rtd %p", in avs_dai_hw_params()
134 dev_dbg(dai->dev, "rate %d chn %d vbd %d bd %d\n", in avs_dai_hw_params()
138 dev_dbg(dai->dev, "%s BE hw_params str %p rtd %p", in avs_dai_hw_params()
140 dev_dbg(dai->dev, "rate %d chn %d vbd %d bd %d\n", in avs_dai_hw_params()
147 dev_err(dai->dev, "create path failed: %d\n", ret); in avs_dai_hw_params()
156 struct snd_pcm_hw_params *be_hw_params, struct snd_soc_dai *dai, in avs_dai_be_hw_params() argument
170 return avs_dai_hw_params(substream, fe_hw_params, be_hw_params, dai, dma_id); in avs_dai_be_hw_params()
173 static int avs_dai_prepare(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_prepare() argument
178 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_prepare()
184 dev_err(dai->dev, "reset path failed: %d\n", ret); in avs_dai_prepare()
190 dev_err(dai->dev, "pause path failed: %d\n", ret); in avs_dai_prepare()
195 struct snd_pcm_hw_params *hw_params, struct snd_soc_dai *dai) in avs_dai_nonhda_be_hw_params() argument
199 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_nonhda_be_hw_params()
204 return avs_dai_be_hw_params(substream, hw_params, dai, 0); in avs_dai_nonhda_be_hw_params()
207 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
211 dev_dbg(dai->dev, "%s: %s\n", __func__, dai->name); in avs_dai_nonhda_be_hw_free()
213 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_nonhda_be_hw_free()
223 struct snd_soc_dai *dai) in avs_dai_nonhda_be_trigger() argument
229 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_nonhda_be_trigger()
240 dev_err(dai->dev, "pause BE path failed: %d\n", ret); in avs_dai_nonhda_be_trigger()
246 dev_err(dai->dev, "run BE path failed: %d\n", ret); in avs_dai_nonhda_be_trigger()
257 dev_err(dai->dev, "pause BE path failed: %d\n", ret); in avs_dai_nonhda_be_trigger()
261 dev_err(dai->dev, "reset BE path failed: %d\n", ret); in avs_dai_nonhda_be_trigger()
281 static int avs_dai_hda_be_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_hda_be_startup() argument
289 ret = avs_dai_startup(substream, dai); in avs_dai_hda_be_startup()
297 avs_dai_shutdown(substream, dai); in avs_dai_hda_be_startup()
301 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_hda_be_startup()
307 static void avs_dai_hda_be_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_hda_be_shutdown() argument
309 struct avs_dma_data *data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_hda_be_shutdown()
313 avs_dai_shutdown(substream, dai); in avs_dai_hda_be_shutdown()
317 struct snd_pcm_hw_params *hw_params, struct snd_soc_dai *dai) in avs_dai_hda_be_hw_params() argument
321 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_hda_be_hw_params()
325 return avs_dai_be_hw_params(substream, hw_params, dai, in avs_dai_hda_be_hw_params()
329 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
337 dev_dbg(dai->dev, "%s: %s\n", __func__, dai->name); in avs_dai_hda_be_hw_free()
339 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_hda_be_hw_free()
360 static int avs_dai_hda_be_prepare(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_hda_be_prepare() argument
374 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_hda_be_prepare()
382 stream_info = snd_soc_dai_get_pcm_stream(dai, substream->stream); in avs_dai_hda_be_prepare()
398 ret = avs_dai_prepare(substream, dai); in avs_dai_hda_be_prepare()
407 struct snd_soc_dai *dai) in avs_dai_hda_be_trigger() argument
413 dev_dbg(dai->dev, "entry %s cmd=%d\n", __func__, cmd); in avs_dai_hda_be_trigger()
415 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_hda_be_trigger()
428 dev_err(dai->dev, "pause BE path failed: %d\n", ret); in avs_dai_hda_be_trigger()
434 dev_err(dai->dev, "run BE path failed: %d\n", ret); in avs_dai_hda_be_trigger()
445 dev_err(dai->dev, "pause BE path failed: %d\n", ret); in avs_dai_hda_be_trigger()
451 dev_err(dai->dev, "reset BE path failed: %d\n", ret); in avs_dai_hda_be_trigger()
516 static int avs_dai_fe_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_fe_startup() argument
527 ret = avs_dai_startup(substream, dai); in avs_dai_fe_startup()
531 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_fe_startup()
536 avs_dai_shutdown(substream, dai); in avs_dai_fe_startup()
543 dev_dbg(dai->dev, "%s fe STARTUP tag %d str %p", in avs_dai_fe_startup()
549 static void avs_dai_fe_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_fe_shutdown() argument
553 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_fe_shutdown()
556 avs_dai_shutdown(substream, dai); in avs_dai_fe_shutdown()
560 struct snd_pcm_hw_params *hw_params, struct snd_soc_dai *dai) in avs_dai_fe_hw_params() argument
569 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_fe_hw_params()
586 ret = avs_dai_hw_params(substream, hw_params, be_hw_params, dai, in avs_dai_fe_hw_params()
593 dev_err(dai->dev, "bind FE <-> BE failed: %d\n", ret); in avs_dai_fe_hw_params()
607 static int __avs_dai_fe_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in __avs_dai_fe_hw_free() argument
613 dev_dbg(dai->dev, "%s fe HW_FREE str %p rtd %p", in __avs_dai_fe_hw_free()
616 data = snd_soc_dai_get_dma_data(dai, substream); in __avs_dai_fe_hw_free()
624 dev_err(dai->dev, "unbind FE <-> BE failed: %d\n", ret); in __avs_dai_fe_hw_free()
634 static int avs_dai_fe_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_fe_hw_free() argument
638 ret = __avs_dai_fe_hw_free(substream, dai); in avs_dai_fe_hw_free()
644 static int avs_dai_fe_prepare(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) in avs_dai_fe_prepare() argument
655 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_fe_prepare()
665 stream_info = snd_soc_dai_get_pcm_stream(dai, substream->stream); in avs_dai_fe_prepare()
678 ret = avs_dai_prepare(substream, dai); in avs_dai_fe_prepare()
759 static int avs_dai_fe_trigger(struct snd_pcm_substream *substream, int cmd, struct snd_soc_dai *dai) in avs_dai_fe_trigger() argument
768 data = snd_soc_dai_get_dma_data(dai, substream); in avs_dai_fe_trigger()
789 dev_err(dai->dev, "pause FE path failed: %d\n", ret); in avs_dai_fe_trigger()
795 dev_err(dai->dev, "run FE path failed: %d\n", ret); in avs_dai_fe_trigger()
807 dev_err(dai->dev, "pause FE path failed: %d\n", ret); in avs_dai_fe_trigger()
815 dev_err(dai->dev, "reset FE path failed: %d\n", ret); in avs_dai_fe_trigger()
985 static int avs_dai_resume_hw_params(struct snd_soc_dai *dai, struct avs_dma_data *data) in avs_dai_resume_hw_params() argument
994 ret = dai->driver->ops->hw_params(substream, &rtd->dpcm[substream->stream].hw_params, dai); in avs_dai_resume_hw_params()
996 dev_err(dai->dev, "hw_params on resume failed: %d\n", ret); in avs_dai_resume_hw_params()
1001 static int avs_dai_resume_fe_prepare(struct snd_soc_dai *dai, struct avs_dma_data *data) in avs_dai_resume_fe_prepare() argument
1015 ret = dai->driver->ops->prepare(data->substream, dai); in avs_dai_resume_fe_prepare()
1017 dev_err(dai->dev, "prepare FE on resume failed: %d\n", ret); in avs_dai_resume_fe_prepare()
1033 static int avs_dai_resume_be_prepare(struct snd_soc_dai *dai, struct avs_dma_data *data) in avs_dai_resume_be_prepare() argument
1037 ret = dai->driver->ops->prepare(data->substream, dai); in avs_dai_resume_be_prepare()
1039 dev_err(dai->dev, "prepare BE on resume failed: %d\n", ret); in avs_dai_resume_be_prepare()
1044 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
1058 ret = __avs_dai_fe_hw_free(data->substream, dai); in avs_dai_suspend_fe_hw_free()
1060 dev_err(dai->dev, "hw_free FE on suspend failed: %d\n", ret); in avs_dai_suspend_fe_hw_free()
1065 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
1069 ret = dai->driver->ops->hw_free(data->substream, dai); in avs_dai_suspend_be_hw_free()
1071 dev_err(dai->dev, "hw_free BE on suspend failed: %d\n", ret); in avs_dai_suspend_be_hw_free()
1081 struct snd_soc_dai *dai; in avs_component_pm_op() local
1084 for_each_component_dais(component, dai) { in avs_component_pm_op()
1085 data = snd_soc_dai_dma_data_get_playback(dai); in avs_component_pm_op()
1089 ret = op(dai, data); in avs_component_pm_op()
1098 data = snd_soc_dai_dma_data_get_capture(dai); in avs_component_pm_op()
1102 ret = op(dai, data); in avs_component_pm_op()
1122 int (*prepare_cb)(struct snd_soc_dai *dai, struct avs_dma_data *data); in avs_component_resume_prepare()
1134 int (*hw_free_cb)(struct snd_soc_dai *dai, struct avs_dma_data *data); in avs_component_suspend_hw_free()
1208 /* only FE DAI links are handled here */ in avs_component_open()
1254 struct snd_soc_dai *dai = snd_soc_rtd_to_cpu(rtd, 0); in avs_component_construct() local
1257 if (dai->driver->playback.channels_min) in avs_component_construct()
1262 if (dai->driver->capture.channels_min) in avs_component_construct()
1370 struct snd_soc_dai_driver *cpus, *dai; in avs_i2s_platform_register() local
1388 dai = cpus; in avs_i2s_platform_register()
1391 memcpy(dai, &i2s_dai_template, sizeof(*dai)); in avs_i2s_platform_register()
1393 dai->name = in avs_i2s_platform_register()
1395 dai->playback.stream_name = in avs_i2s_platform_register()
1397 dai->capture.stream_name = in avs_i2s_platform_register()
1400 if (!dai->name || !dai->playback.stream_name || !dai->capture.stream_name) in avs_i2s_platform_register()
1402 dai++; in avs_i2s_platform_register()
1411 memcpy(dai, &i2s_dai_template, sizeof(*dai)); in avs_i2s_platform_register()
1413 dai->name = in avs_i2s_platform_register()
1415 dai->playback.stream_name = in avs_i2s_platform_register()
1417 dai->capture.stream_name = in avs_i2s_platform_register()
1420 if (!dai->name || !dai->playback.stream_name || !dai->capture.stream_name) in avs_i2s_platform_register()
1422 dai++; in avs_i2s_platform_register()
1430 /* HD-Audio CPU DAI template */
1458 struct snd_soc_dai *dai, *save; in avs_component_hda_unregister_dais() local
1466 for_each_component_dais_safe(component, dai, save) { in avs_component_hda_unregister_dais()
1469 if (!strstr(dai->driver->name, name)) in avs_component_hda_unregister_dais()
1473 snd_soc_dapm_free_widget(snd_soc_dai_get_widget(dai, stream)); in avs_component_hda_unregister_dais()
1475 snd_soc_unregister_dai(dai); in avs_component_hda_unregister_dais()
1509 struct snd_soc_dai *dai; in avs_component_hda_probe() local
1558 dai = snd_soc_register_dai(component, &dais[i], false); in avs_component_hda_probe()
1559 if (!dai) { in avs_component_hda_probe()
1560 dev_err(component->dev, "register dai for %s failed\n", in avs_component_hda_probe()
1566 ret = snd_soc_dapm_new_dai_widgets(dapm, dai); in avs_component_hda_probe()
1570 snd_soc_unregister_dai(dai); in avs_component_hda_probe()