Lines Matching refs:swidget

184 sof_ipc4_get_input_pin_audio_fmt(struct snd_sof_widget *swidget, int pin_index)  in sof_ipc4_get_input_pin_audio_fmt()  argument
190 if (swidget->id != snd_soc_dapm_effect) { in sof_ipc4_get_input_pin_audio_fmt()
191 struct sof_ipc4_base_module_cfg *base = swidget->private; in sof_ipc4_get_input_pin_audio_fmt()
197 process = swidget->private; in sof_ipc4_get_input_pin_audio_fmt()
224 struct snd_sof_widget *swidget, in sof_ipc4_get_audio_fmt() argument
233 SOF_AUDIO_FMT_NUM_TOKENS, swidget->tuples, in sof_ipc4_get_audio_fmt()
234 swidget->num_tuples, sizeof(*available_fmt), 1); in sof_ipc4_get_audio_fmt()
250 ret = sof_update_ipc_object(scomp, module_base_cfg, SOF_COMP_TOKENS, swidget->tuples, in sof_ipc4_get_audio_fmt()
251 swidget->num_tuples, sizeof(*module_base_cfg), 1); in sof_ipc4_get_audio_fmt()
254 swidget->widget->name, ret); in sof_ipc4_get_audio_fmt()
258 dev_dbg(scomp->dev, "widget %s: is_pages: %d\n", swidget->widget->name, in sof_ipc4_get_audio_fmt()
269 SOF_IN_AUDIO_FORMAT_TOKENS, swidget->tuples, in sof_ipc4_get_audio_fmt()
270 swidget->num_tuples, sizeof(*in_format), in sof_ipc4_get_audio_fmt()
277 dev_dbg(scomp->dev, "Input audio formats for %s\n", swidget->widget->name); in sof_ipc4_get_audio_fmt()
291 SOF_OUT_AUDIO_FORMAT_TOKENS, swidget->tuples, in sof_ipc4_get_audio_fmt()
292 swidget->num_tuples, sizeof(*out_format), in sof_ipc4_get_audio_fmt()
300 dev_dbg(scomp->dev, "Output audio formats for %s\n", swidget->widget->name); in sof_ipc4_get_audio_fmt()
325 static void sof_ipc4_widget_free_comp_pipeline(struct snd_sof_widget *swidget) in sof_ipc4_widget_free_comp_pipeline() argument
327 kfree(swidget->private); in sof_ipc4_widget_free_comp_pipeline()
330 static int sof_ipc4_widget_set_module_info(struct snd_sof_widget *swidget) in sof_ipc4_widget_set_module_info() argument
332 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_widget_set_module_info()
335 swidget->module_info = sof_ipc4_find_module_by_uuid(sdev, &swidget->uuid); in sof_ipc4_widget_set_module_info()
337 if (swidget->module_info) in sof_ipc4_widget_set_module_info()
341 swidget->widget->name, &swidget->uuid); in sof_ipc4_widget_set_module_info()
345 static int sof_ipc4_widget_setup_msg(struct snd_sof_widget *swidget, struct sof_ipc4_msg *msg) in sof_ipc4_widget_setup_msg() argument
351 ret = sof_ipc4_widget_set_module_info(swidget); in sof_ipc4_widget_setup_msg()
355 fw_module = swidget->module_info; in sof_ipc4_widget_setup_msg()
362 msg->extension = SOF_IPC4_MOD_EXT_CORE_ID(swidget->core); in sof_ipc4_widget_setup_msg()
370 static void sof_ipc4_widget_update_kcontrol_module_id(struct snd_sof_widget *swidget) in sof_ipc4_widget_update_kcontrol_module_id() argument
372 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_widget_update_kcontrol_module_id()
374 struct sof_ipc4_fw_module *fw_module = swidget->module_info; in sof_ipc4_widget_update_kcontrol_module_id()
379 if (scontrol->comp_id == swidget->comp_id) { in sof_ipc4_widget_update_kcontrol_module_id()
388 static int sof_ipc4_widget_setup_pcm(struct snd_sof_widget *swidget) in sof_ipc4_widget_setup_pcm() argument
391 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_widget_setup_pcm()
400 swidget->private = ipc4_copier; in sof_ipc4_widget_setup_pcm()
403 dev_dbg(scomp->dev, "Updating IPC structure for %s\n", swidget->widget->name); in sof_ipc4_widget_setup_pcm()
405 ret = sof_ipc4_get_audio_fmt(scomp, swidget, available_fmt, in sof_ipc4_widget_setup_pcm()
414 if (!WIDGET_IS_AIF(swidget->id)) in sof_ipc4_widget_setup_pcm()
418 SOF_COPIER_TOKENS, swidget->tuples, in sof_ipc4_widget_setup_pcm()
419 swidget->num_tuples, sizeof(node_type), 1); in sof_ipc4_widget_setup_pcm()
426 dev_dbg(scomp->dev, "host copier '%s' node_type %u\n", swidget->widget->name, node_type); in sof_ipc4_widget_setup_pcm()
439 switch (swidget->id) { in sof_ipc4_widget_setup_pcm()
449 dev_err(scomp->dev, "invalid widget type %d\n", swidget->id); in sof_ipc4_widget_setup_pcm()
455 ret = sof_ipc4_widget_setup_msg(swidget, &ipc4_copier->msg); in sof_ipc4_widget_setup_pcm()
467 swidget->private = NULL; in sof_ipc4_widget_setup_pcm()
471 static void sof_ipc4_widget_free_comp_pcm(struct snd_sof_widget *swidget) in sof_ipc4_widget_free_comp_pcm() argument
473 struct sof_ipc4_copier *ipc4_copier = swidget->private; in sof_ipc4_widget_free_comp_pcm()
483 swidget->private = NULL; in sof_ipc4_widget_free_comp_pcm()
486 static int sof_ipc4_widget_setup_comp_dai(struct snd_sof_widget *swidget) in sof_ipc4_widget_setup_comp_dai() argument
489 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_widget_setup_comp_dai()
490 struct snd_sof_dai *dai = swidget->private; in sof_ipc4_widget_setup_comp_dai()
503 dev_dbg(scomp->dev, "Updating IPC structure for %s\n", swidget->widget->name); in sof_ipc4_widget_setup_comp_dai()
505 ret = sof_ipc4_get_audio_fmt(scomp, swidget, available_fmt, in sof_ipc4_widget_setup_comp_dai()
511 SOF_COPIER_TOKENS, swidget->tuples, in sof_ipc4_widget_setup_comp_dai()
512 swidget->num_tuples, sizeof(node_type), 1); in sof_ipc4_widget_setup_comp_dai()
519 SOF_DAI_TOKENS, swidget->tuples, in sof_ipc4_widget_setup_comp_dai()
520 swidget->num_tuples, sizeof(u32), 1); in sof_ipc4_widget_setup_comp_dai()
526 dev_dbg(scomp->dev, "dai %s node_type %u dai_type %u dai_index %d\n", swidget->widget->name, in sof_ipc4_widget_setup_comp_dai()
531 pipe_widget = swidget->spipe->pipe_widget; in sof_ipc4_widget_setup_comp_dai()
550 snd_soc_dapm_widget_for_each_source_path(swidget->widget, p) in sof_ipc4_widget_setup_comp_dai()
553 if (swidget->id == snd_soc_dapm_dai_in && src_num == 0) { in sof_ipc4_widget_setup_comp_dai()
572 strcmp(w->widget->sname, swidget->widget->sname)) in sof_ipc4_widget_setup_comp_dai()
609 ret = sof_ipc4_widget_setup_msg(swidget, &ipc4_copier->msg); in sof_ipc4_widget_setup_comp_dai()
626 static void sof_ipc4_widget_free_comp_dai(struct snd_sof_widget *swidget) in sof_ipc4_widget_free_comp_dai() argument
629 struct snd_sof_dai *dai = swidget->private; in sof_ipc4_widget_free_comp_dai()
637 swidget->private = NULL; in sof_ipc4_widget_free_comp_dai()
650 swidget->private = NULL; in sof_ipc4_widget_free_comp_dai()
653 static int sof_ipc4_widget_setup_comp_pipeline(struct snd_sof_widget *swidget) in sof_ipc4_widget_setup_comp_pipeline() argument
655 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_widget_setup_comp_pipeline()
663 ret = sof_update_ipc_object(scomp, pipeline, SOF_SCHED_TOKENS, swidget->tuples, in sof_ipc4_widget_setup_comp_pipeline()
664 swidget->num_tuples, sizeof(*pipeline), 1); in sof_ipc4_widget_setup_comp_pipeline()
670 swidget->core = pipeline->core_id; in sof_ipc4_widget_setup_comp_pipeline()
673 dev_dbg(scomp->dev, "Set up chain DMA for %s\n", swidget->widget->name); in sof_ipc4_widget_setup_comp_pipeline()
674 swidget->private = pipeline; in sof_ipc4_widget_setup_comp_pipeline()
679 ret = sof_update_ipc_object(scomp, swidget, SOF_PIPELINE_TOKENS, swidget->tuples, in sof_ipc4_widget_setup_comp_pipeline()
680 swidget->num_tuples, sizeof(*swidget), 1); in sof_ipc4_widget_setup_comp_pipeline()
690 swidget->widget->name, swidget->pipeline_id, in sof_ipc4_widget_setup_comp_pipeline()
693 swidget->private = pipeline; in sof_ipc4_widget_setup_comp_pipeline()
710 static int sof_ipc4_widget_setup_comp_pga(struct snd_sof_widget *swidget) in sof_ipc4_widget_setup_comp_pga() argument
712 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_widget_setup_comp_pga()
720 swidget->private = gain; in sof_ipc4_widget_setup_comp_pga()
725 ret = sof_ipc4_get_audio_fmt(scomp, swidget, &gain->available_fmt, &gain->base_config); in sof_ipc4_widget_setup_comp_pga()
729 ret = sof_update_ipc_object(scomp, &gain->data, SOF_GAIN_TOKENS, swidget->tuples, in sof_ipc4_widget_setup_comp_pga()
730 swidget->num_tuples, sizeof(gain->data), 1); in sof_ipc4_widget_setup_comp_pga()
738 swidget->widget->name, gain->data.curve_type, gain->data.curve_duration_l, in sof_ipc4_widget_setup_comp_pga()
741 ret = sof_ipc4_widget_setup_msg(swidget, &gain->msg); in sof_ipc4_widget_setup_comp_pga()
745 sof_ipc4_widget_update_kcontrol_module_id(swidget); in sof_ipc4_widget_setup_comp_pga()
751 swidget->private = NULL; in sof_ipc4_widget_setup_comp_pga()
755 static void sof_ipc4_widget_free_comp_pga(struct snd_sof_widget *swidget) in sof_ipc4_widget_free_comp_pga() argument
757 struct sof_ipc4_gain *gain = swidget->private; in sof_ipc4_widget_free_comp_pga()
763 kfree(swidget->private); in sof_ipc4_widget_free_comp_pga()
764 swidget->private = NULL; in sof_ipc4_widget_free_comp_pga()
767 static int sof_ipc4_widget_setup_comp_mixer(struct snd_sof_widget *swidget) in sof_ipc4_widget_setup_comp_mixer() argument
769 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_widget_setup_comp_mixer()
773 dev_dbg(scomp->dev, "Updating IPC structure for %s\n", swidget->widget->name); in sof_ipc4_widget_setup_comp_mixer()
779 swidget->private = mixer; in sof_ipc4_widget_setup_comp_mixer()
781 ret = sof_ipc4_get_audio_fmt(scomp, swidget, &mixer->available_fmt, in sof_ipc4_widget_setup_comp_mixer()
786 ret = sof_ipc4_widget_setup_msg(swidget, &mixer->msg); in sof_ipc4_widget_setup_comp_mixer()
794 swidget->private = NULL; in sof_ipc4_widget_setup_comp_mixer()
798 static int sof_ipc4_widget_setup_comp_src(struct snd_sof_widget *swidget) in sof_ipc4_widget_setup_comp_src() argument
800 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_widget_setup_comp_src()
804 dev_dbg(scomp->dev, "Updating IPC structure for %s\n", swidget->widget->name); in sof_ipc4_widget_setup_comp_src()
810 swidget->private = src; in sof_ipc4_widget_setup_comp_src()
812 ret = sof_ipc4_get_audio_fmt(scomp, swidget, &src->available_fmt, &src->base_config); in sof_ipc4_widget_setup_comp_src()
816 ret = sof_update_ipc_object(scomp, src, SOF_SRC_TOKENS, swidget->tuples, in sof_ipc4_widget_setup_comp_src()
817 swidget->num_tuples, sizeof(*src), 1); in sof_ipc4_widget_setup_comp_src()
825 ret = sof_ipc4_widget_setup_msg(swidget, &src->msg); in sof_ipc4_widget_setup_comp_src()
833 swidget->private = NULL; in sof_ipc4_widget_setup_comp_src()
837 static void sof_ipc4_widget_free_comp_src(struct snd_sof_widget *swidget) in sof_ipc4_widget_free_comp_src() argument
839 struct sof_ipc4_src *src = swidget->private; in sof_ipc4_widget_free_comp_src()
845 kfree(swidget->private); in sof_ipc4_widget_free_comp_src()
846 swidget->private = NULL; in sof_ipc4_widget_free_comp_src()
849 static void sof_ipc4_widget_free_comp_mixer(struct snd_sof_widget *swidget) in sof_ipc4_widget_free_comp_mixer() argument
851 struct sof_ipc4_mixer *mixer = swidget->private; in sof_ipc4_widget_free_comp_mixer()
857 kfree(swidget->private); in sof_ipc4_widget_free_comp_mixer()
858 swidget->private = NULL; in sof_ipc4_widget_free_comp_mixer()
864 static int sof_ipc4_widget_setup_comp_process(struct snd_sof_widget *swidget) in sof_ipc4_widget_setup_comp_process() argument
866 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_widget_setup_comp_process()
876 swidget->private = process; in sof_ipc4_widget_setup_comp_process()
878 ret = sof_ipc4_get_audio_fmt(scomp, swidget, &process->available_fmt, in sof_ipc4_widget_setup_comp_process()
883 ret = sof_ipc4_widget_setup_msg(swidget, &process->msg); in sof_ipc4_widget_setup_comp_process()
888 fw_module = swidget->module_info; in sof_ipc4_widget_setup_comp_process()
898 swidget->num_input_pins + swidget->num_output_pins); in sof_ipc4_widget_setup_comp_process()
906 base_cfg_ext->num_input_pin_fmts = swidget->num_input_pins; in sof_ipc4_widget_setup_comp_process()
907 base_cfg_ext->num_output_pin_fmts = swidget->num_output_pins; in sof_ipc4_widget_setup_comp_process()
921 sof_ipc4_widget_update_kcontrol_module_id(swidget); in sof_ipc4_widget_setup_comp_process()
931 swidget->private = NULL; in sof_ipc4_widget_setup_comp_process()
935 static void sof_ipc4_widget_free_comp_process(struct snd_sof_widget *swidget) in sof_ipc4_widget_free_comp_process() argument
937 struct sof_ipc4_process *process = swidget->private; in sof_ipc4_widget_free_comp_process()
945 kfree(swidget->private); in sof_ipc4_widget_free_comp_process()
946 swidget->private = NULL; in sof_ipc4_widget_free_comp_process()
950 sof_ipc4_update_resource_usage(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget, in sof_ipc4_update_resource_usage() argument
953 struct sof_ipc4_fw_module *fw_module = swidget->module_info; in sof_ipc4_update_resource_usage()
979 pipe_widget = swidget->spipe->pipe_widget; in sof_ipc4_update_resource_usage()
988 swidget->widget->name, base_config->ibs, base_config->obs, in sof_ipc4_update_resource_usage()
993 swidget->widget->name, base_config->ibs, base_config->obs, in sof_ipc4_update_resource_usage()
999 struct snd_sof_widget *swidget) in sof_ipc4_widget_assign_instance_id() argument
1001 struct sof_ipc4_fw_module *fw_module = swidget->module_info; in sof_ipc4_widget_assign_instance_id()
1004 swidget->instance_id = ida_alloc_max(&fw_module->m_ida, max_instances, GFP_KERNEL); in sof_ipc4_widget_assign_instance_id()
1005 if (swidget->instance_id < 0) { in sof_ipc4_widget_assign_instance_id()
1007 swidget->widget->name); in sof_ipc4_widget_assign_instance_id()
1008 return swidget->instance_id; in sof_ipc4_widget_assign_instance_id()
1144 struct snd_sof_widget *swidget, in sof_ipc4_init_input_audio_fmt() argument
1159 dev_err(sdev->dev, "no input formats for %s\n", swidget->widget->name); in sof_ipc4_init_input_audio_fmt()
1208 dev_dbg(sdev->dev, "Init input audio formats for %s\n", swidget->widget->name); in sof_ipc4_init_input_audio_fmt()
1215 static void sof_ipc4_unprepare_copier_module(struct snd_sof_widget *swidget) in sof_ipc4_unprepare_copier_module() argument
1222 pipe_widget = swidget->spipe->pipe_widget; in sof_ipc4_unprepare_copier_module()
1226 if (WIDGET_IS_AIF(swidget->id) || swidget->id == snd_soc_dapm_buffer) { in sof_ipc4_unprepare_copier_module()
1231 ipc4_copier = swidget->private; in sof_ipc4_unprepare_copier_module()
1232 } else if (WIDGET_IS_DAI(swidget->id)) { in sof_ipc4_unprepare_copier_module()
1233 struct snd_sof_dai *dai = swidget->private; in sof_ipc4_unprepare_copier_module()
1398 sof_ipc4_prepare_copier_module(struct snd_sof_widget *swidget, in sof_ipc4_prepare_copier_module() argument
1404 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_prepare_copier_module()
1421 dev_dbg(sdev->dev, "copier %s, type %d", swidget->widget->name, swidget->id); in sof_ipc4_prepare_copier_module()
1423 switch (swidget->id) { in sof_ipc4_prepare_copier_module()
1433 SOF_COPIER_DEEP_BUFFER_TOKENS, swidget->tuples, in sof_ipc4_prepare_copier_module()
1434 swidget->num_tuples, sizeof(u32), 1); in sof_ipc4_prepare_copier_module()
1437 swidget->widget->name); in sof_ipc4_prepare_copier_module()
1441 ipc4_copier = (struct sof_ipc4_copier *)swidget->private; in sof_ipc4_prepare_copier_module()
1446 pipe_widget = swidget->spipe->pipe_widget; in sof_ipc4_prepare_copier_module()
1499 struct snd_sof_widget *pipe_widget = swidget->spipe->pipe_widget; in sof_ipc4_prepare_copier_module()
1505 dai = swidget->private; in sof_ipc4_prepare_copier_module()
1533 ipc4_copier = (struct sof_ipc4_copier *)swidget->private; in sof_ipc4_prepare_copier_module()
1542 swidget->id, swidget->widget->name); in sof_ipc4_prepare_copier_module()
1547 ret = sof_ipc4_init_input_audio_fmt(sdev, swidget, &copier_data->base_config, ref_params, in sof_ipc4_prepare_copier_module()
1556 switch (swidget->id) { in sof_ipc4_prepare_copier_module()
1603 swidget->widget->name, out_ref_rate, out_ref_channels, out_ref_valid_bits); in sof_ipc4_prepare_copier_module()
1610 swidget->widget->name); in sof_ipc4_prepare_copier_module()
1624 dev_dbg(sdev->dev, "Output audio format for %s\n", swidget->widget->name); in sof_ipc4_prepare_copier_module()
1627 switch (swidget->id) { in sof_ipc4_prepare_copier_module()
1670 strcmp(w->widget->sname, swidget->widget->sname)) in sof_ipc4_prepare_copier_module()
1723 switch (swidget->id) { in sof_ipc4_prepare_copier_module()
1769 dev_dbg(sdev->dev, "copier %s, IPC size is %d", swidget->widget->name, ipc_size); in sof_ipc4_prepare_copier_module()
1778 sof_ipc4_update_resource_usage(sdev, swidget, &copier_data->base_config); in sof_ipc4_prepare_copier_module()
1801 static int sof_ipc4_prepare_gain_module(struct snd_sof_widget *swidget, in sof_ipc4_prepare_gain_module() argument
1806 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_prepare_gain_module()
1808 struct sof_ipc4_gain *gain = swidget->private; in sof_ipc4_prepare_gain_module()
1814 ret = sof_ipc4_init_input_audio_fmt(sdev, swidget, &gain->base_config, in sof_ipc4_prepare_gain_module()
1828 swidget->widget->name); in sof_ipc4_prepare_gain_module()
1833 sof_ipc4_update_resource_usage(sdev, swidget, &gain->base_config); in sof_ipc4_prepare_gain_module()
1838 static int sof_ipc4_prepare_mixer_module(struct snd_sof_widget *swidget, in sof_ipc4_prepare_mixer_module() argument
1843 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_prepare_mixer_module()
1845 struct sof_ipc4_mixer *mixer = swidget->private; in sof_ipc4_prepare_mixer_module()
1851 ret = sof_ipc4_init_input_audio_fmt(sdev, swidget, &mixer->base_config, in sof_ipc4_prepare_mixer_module()
1865 swidget->widget->name); in sof_ipc4_prepare_mixer_module()
1870 sof_ipc4_update_resource_usage(sdev, swidget, &mixer->base_config); in sof_ipc4_prepare_mixer_module()
1875 static int sof_ipc4_prepare_src_module(struct snd_sof_widget *swidget, in sof_ipc4_prepare_src_module() argument
1880 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_prepare_src_module()
1882 struct sof_ipc4_src *src = swidget->private; in sof_ipc4_prepare_src_module()
1889 input_format_index = sof_ipc4_init_input_audio_fmt(sdev, swidget, &src->base_config, in sof_ipc4_prepare_src_module()
1900 available_fmt->num_output_formats, swidget->widget->name); in sof_ipc4_prepare_src_module()
1924 swidget->widget->name); in sof_ipc4_prepare_src_module()
1929 sof_ipc4_update_resource_usage(sdev, swidget, &src->base_config); in sof_ipc4_prepare_src_module()
1939 sof_ipc4_process_set_pin_formats(struct snd_sof_widget *swidget, int pin_type) in sof_ipc4_process_set_pin_formats() argument
1941 struct sof_ipc4_process *process = swidget->private; in sof_ipc4_process_set_pin_formats()
1945 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_process_set_pin_formats()
1952 num_pins = swidget->num_input_pins; in sof_ipc4_process_set_pin_formats()
1956 num_pins = swidget->num_output_pins; in sof_ipc4_process_set_pin_formats()
1957 pin_format_offset = swidget->num_input_pins; in sof_ipc4_process_set_pin_formats()
1994 i - pin_format_offset, swidget->widget->name); in sof_ipc4_process_set_pin_formats()
2002 static int sof_ipc4_process_add_base_cfg_extn(struct snd_sof_widget *swidget) in sof_ipc4_process_add_base_cfg_extn() argument
2008 ret = sof_ipc4_process_set_pin_formats(swidget, i); in sof_ipc4_process_add_base_cfg_extn()
2016 static int sof_ipc4_prepare_process_module(struct snd_sof_widget *swidget, in sof_ipc4_prepare_process_module() argument
2021 struct snd_soc_component *scomp = swidget->scomp; in sof_ipc4_prepare_process_module()
2023 struct sof_ipc4_process *process = swidget->private; in sof_ipc4_prepare_process_module()
2031 ret = sof_ipc4_init_input_audio_fmt(sdev, swidget, &process->base_config, in sof_ipc4_prepare_process_module()
2046 swidget->widget->name); in sof_ipc4_prepare_process_module()
2065 sof_ipc4_update_resource_usage(sdev, swidget, &process->base_config); in sof_ipc4_prepare_process_module()
2074 ret = sof_ipc4_process_add_base_cfg_extn(swidget); in sof_ipc4_prepare_process_module()
2197 static int sof_ipc4_widget_setup(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget) in sof_ipc4_widget_setup() argument
2199 struct snd_sof_widget *pipe_widget = swidget->spipe->pipe_widget; in sof_ipc4_widget_setup()
2207 switch (swidget->id) { in sof_ipc4_widget_setup()
2209 pipeline = swidget->private; in sof_ipc4_widget_setup()
2213 swidget->widget->name); in sof_ipc4_widget_setup()
2217 dev_dbg(sdev->dev, "pipeline: %d memory pages: %d\n", swidget->pipeline_id, in sof_ipc4_widget_setup()
2223 swidget->instance_id = ida_alloc_max(&pipeline_ida, ipc4_data->max_num_pipelines, in sof_ipc4_widget_setup()
2225 if (swidget->instance_id < 0) { in sof_ipc4_widget_setup()
2227 swidget->widget->name, swidget->instance_id); in sof_ipc4_widget_setup()
2228 return swidget->instance_id; in sof_ipc4_widget_setup()
2231 msg->primary |= SOF_IPC4_GLB_PIPE_INSTANCE_ID(swidget->instance_id); in sof_ipc4_widget_setup()
2237 struct sof_ipc4_copier *ipc4_copier = swidget->private; in sof_ipc4_widget_setup()
2252 struct snd_sof_dai *dai = swidget->private; in sof_ipc4_widget_setup()
2267 struct sof_ipc4_gain *gain = swidget->private; in sof_ipc4_widget_setup()
2278 struct sof_ipc4_mixer *mixer = swidget->private; in sof_ipc4_widget_setup()
2288 struct sof_ipc4_src *src = swidget->private; in sof_ipc4_widget_setup()
2298 struct sof_ipc4_process *process = swidget->private; in sof_ipc4_widget_setup()
2302 swidget->widget->name); in sof_ipc4_widget_setup()
2313 dev_err(sdev->dev, "widget type %d not supported", swidget->id); in sof_ipc4_widget_setup()
2317 if (swidget->id != snd_soc_dapm_scheduler) { in sof_ipc4_widget_setup()
2318 ret = sof_ipc4_widget_assign_instance_id(sdev, swidget); in sof_ipc4_widget_setup()
2321 swidget->widget->name); in sof_ipc4_widget_setup()
2326 msg->primary |= SOF_IPC4_MOD_INSTANCE(swidget->instance_id); in sof_ipc4_widget_setup()
2335 swidget->widget->name, swidget->instance_id, swidget->pipeline_id, swidget->core); in sof_ipc4_widget_setup()
2342 dev_err(sdev->dev, "failed to create module %s\n", swidget->widget->name); in sof_ipc4_widget_setup()
2344 if (swidget->id != snd_soc_dapm_scheduler) { in sof_ipc4_widget_setup()
2345 struct sof_ipc4_fw_module *fw_module = swidget->module_info; in sof_ipc4_widget_setup()
2347 ida_free(&fw_module->m_ida, swidget->instance_id); in sof_ipc4_widget_setup()
2349 ida_free(&pipeline_ida, swidget->instance_id); in sof_ipc4_widget_setup()
2356 static int sof_ipc4_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget) in sof_ipc4_widget_free() argument
2358 struct sof_ipc4_fw_module *fw_module = swidget->module_info; in sof_ipc4_widget_free()
2365 if (swidget->id == snd_soc_dapm_scheduler) { in sof_ipc4_widget_free()
2366 struct sof_ipc4_pipeline *pipeline = swidget->private; in sof_ipc4_widget_free()
2372 swidget->widget->name); in sof_ipc4_widget_free()
2377 header = SOF_IPC4_GLB_PIPE_INSTANCE_ID(swidget->instance_id); in sof_ipc4_widget_free()
2387 swidget->widget->name); in sof_ipc4_widget_free()
2391 ida_free(&pipeline_ida, swidget->instance_id); in sof_ipc4_widget_free()
2392 swidget->instance_id = -EINVAL; in sof_ipc4_widget_free()
2394 struct snd_sof_widget *pipe_widget = swidget->spipe->pipe_widget; in sof_ipc4_widget_free()
2398 ida_free(&fw_module->m_ida, swidget->instance_id); in sof_ipc4_widget_free()
2464 static void sof_ipc4_put_queue_id(struct snd_sof_widget *swidget, int queue_id, in sof_ipc4_put_queue_id() argument
2472 pin_binding = swidget->output_pin_binding; in sof_ipc4_put_queue_id()
2473 queue_ida = &swidget->output_queue_ida; in sof_ipc4_put_queue_id()
2474 num_pins = swidget->num_output_pins; in sof_ipc4_put_queue_id()
2476 pin_binding = swidget->input_pin_binding; in sof_ipc4_put_queue_id()
2477 queue_ida = &swidget->input_queue_ida; in sof_ipc4_put_queue_id()
2478 num_pins = swidget->num_input_pins; in sof_ipc4_put_queue_id()
2692 static int sof_ipc4_dai_config(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget, in sof_ipc4_dai_config() argument
2695 struct snd_sof_widget *pipe_widget = swidget->spipe->pipe_widget; in sof_ipc4_dai_config()
2697 struct snd_sof_dai *dai = swidget->private; in sof_ipc4_dai_config()
2704 swidget->widget->name); in sof_ipc4_dai_config()