Lines Matching defs:adev
17 /* Must be called with adev->comp_list_mutex held. */
19 avs_path_find_tplg(struct avs_dev *adev, const char *name)
23 list_for_each_entry(acomp, &adev->comp_list, node)
52 avs_path_find_path(struct avs_dev *adev, const char *name, u32 template_id)
58 tplg = avs_path_find_tplg(adev, name);
71 spin_lock(&adev->path_list_lock);
73 list_for_each_entry(path, &adev->path_list, node) {
75 spin_unlock(&adev->path_list_lock);
80 spin_unlock(&adev->path_list_lock);
94 avs_path_find_variant(struct avs_dev *adev,
102 dev_dbg(adev->dev, "check FE rate %d chn %d vbd %d bd %d\n",
105 dev_dbg(adev->dev, "check BE rate %d chn %d vbd %d bd %d\n",
144 static int avs_copier_create(struct avs_dev *adev, struct avs_path_module *mod)
146 struct nhlt_acpi_table *nhlt = adev->nhlt;
177 ep_blob = intel_nhlt_get_endpoint_blob(adev->dev,
183 dev_err(adev->dev, "no I2S ep_blob found\n");
202 ep_blob = intel_nhlt_get_endpoint_blob(adev->dev, nhlt, 0,
207 dev_err(adev->dev, "no DMIC ep_blob found\n");
261 ret = avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id,
291 static int avs_peakvol_create(struct avs_dev *adev, struct avs_path_module *mod)
320 ret = avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id, t->core_id,
327 static int avs_updown_mix_create(struct avs_dev *adev, struct avs_path_module *mod)
344 return avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id,
349 static int avs_src_create(struct avs_dev *adev, struct avs_path_module *mod)
361 return avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id,
366 static int avs_asrc_create(struct avs_dev *adev, struct avs_path_module *mod)
380 return avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id,
385 static int avs_aec_create(struct avs_dev *adev, struct avs_path_module *mod)
399 return avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id,
404 static int avs_mux_create(struct avs_dev *adev, struct avs_path_module *mod)
417 return avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id,
422 static int avs_wov_create(struct avs_dev *adev, struct avs_path_module *mod)
434 return avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id,
439 static int avs_micsel_create(struct avs_dev *adev, struct avs_path_module *mod)
451 return avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id,
456 static int avs_modbase_create(struct avs_dev *adev, struct avs_path_module *mod)
467 return avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id,
472 static int avs_modext_create(struct avs_dev *adev, struct avs_path_module *mod)
505 ret = avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id,
512 static int avs_probe_create(struct avs_dev *adev, struct avs_path_module *mod)
514 dev_err(adev->dev, "Probe module can't be instantiated by topology");
520 int (*create)(struct avs_dev *adev, struct avs_path_module *mod);
540 static int avs_path_module_type_create(struct avs_dev *adev, struct avs_path_module *mod)
546 return avs_module_create[i].create(adev, mod);
548 return avs_modext_create(adev, mod);
551 static void avs_path_module_free(struct avs_dev *adev, struct avs_path_module *mod)
557 avs_path_module_create(struct avs_dev *adev,
564 module_id = avs_get_module_id(adev, &template->cfg_ext->type);
577 ret = avs_path_module_type_create(adev, mod);
579 dev_err(adev->dev, "module-type create failed: %d\n", ret);
587 static int avs_path_binding_arm(struct avs_dev *adev, struct avs_path_binding *binding)
598 dev_err(adev->dev, "path mod %d not found\n", t->mod_id);
603 target_path = avs_path_find_path(adev, t->target_tplg_name,
606 dev_err(adev->dev, "target path %s:%d not found\n",
614 dev_err(adev->dev, "target ppl %d not found\n", t->target_ppl_id);
620 dev_err(adev->dev, "target mod %d not found\n", t->target_mod_id);
639 static void avs_path_binding_free(struct avs_dev *adev, struct avs_path_binding *binding)
644 static struct avs_path_binding *avs_path_binding_create(struct avs_dev *adev,
661 static int avs_path_pipeline_arm(struct avs_dev *adev,
684 ret = avs_ipc_bind(adev, source->module_id, source->instance_id,
693 static void avs_path_pipeline_free(struct avs_dev *adev,
701 avs_path_binding_free(adev, binding);
704 avs_dsp_delete_pipeline(adev, ppl->instance_id);
708 avs_dsp_delete_module(adev, mod->module_id, mod->instance_id,
711 avs_path_module_free(adev, mod);
719 avs_path_pipeline_create(struct avs_dev *adev, struct avs_path *owner,
737 ret = avs_dsp_create_pipeline(adev, cfg->req_size, cfg->priority,
741 dev_err(adev->dev, "error creating pipeline %d\n", ret);
749 mod = avs_path_module_create(adev, ppl, tmod);
752 dev_err(adev->dev, "error creating module %d\n", ret);
762 binding = avs_path_binding_create(adev, ppl, template->bindings[i]);
765 dev_err(adev->dev, "error creating binding %d\n", ret);
775 avs_path_pipeline_free(adev, ppl);
779 static int avs_path_init(struct avs_dev *adev, struct avs_path *path,
784 path->owner = adev;
794 ppl = avs_path_pipeline_create(adev, path, tppl);
801 spin_lock(&adev->path_list_lock);
802 list_add_tail(&path->node, &adev->path_list);
803 spin_unlock(&adev->path_list_lock);
808 static int avs_path_arm(struct avs_dev *adev, struct avs_path *path)
820 ret = avs_path_binding_arm(adev, binding);
825 ret = avs_path_pipeline_arm(adev, ppl);
847 static struct avs_path *avs_path_create_unlocked(struct avs_dev *adev, u32 dma_id,
857 ret = avs_path_init(adev, path, template, dma_id);
861 ret = avs_path_arm(adev, path);
874 struct avs_dev *adev = path->owner;
876 mutex_lock(&adev->path_mutex);
878 mutex_unlock(&adev->path_mutex);
881 struct avs_path *avs_path_create(struct avs_dev *adev, u32 dma_id,
889 variant = avs_path_find_variant(adev, template, fe_params, be_params);
891 dev_err(adev->dev, "no matching variant found\n");
896 mutex_lock(&adev->path_mutex);
898 mutex_lock(&adev->comp_list_mutex);
900 path = avs_path_create_unlocked(adev, dma_id, variant);
902 mutex_unlock(&adev->comp_list_mutex);
903 mutex_unlock(&adev->path_mutex);
908 static int avs_path_bind_prepare(struct avs_dev *adev,
928 ret = avs_ipc_copier_set_sink_format(adev, source->module_id,
932 dev_err(adev->dev, "config copier failed: %d\n", ret);
942 struct avs_dev *adev = path->owner;
954 ret = avs_path_bind_prepare(adev, binding);
958 ret = avs_ipc_bind(adev, source->module_id,
963 dev_err(adev->dev, "bind path failed: %d\n", ret);
975 struct avs_dev *adev = path->owner;
987 ret = avs_ipc_unbind(adev, source->module_id,
992 dev_err(adev->dev, "unbind path failed: %d\n", ret);
1004 struct avs_dev *adev = path->owner;
1011 ret = avs_ipc_set_pipeline_state(adev, ppl->instance_id,
1014 dev_err(adev->dev, "reset path failed: %d\n", ret);
1027 struct avs_dev *adev = path->owner;
1034 ret = avs_ipc_set_pipeline_state(adev, ppl->instance_id,
1037 dev_err(adev->dev, "pause path failed: %d\n", ret);
1050 struct avs_dev *adev = path->owner;
1060 ret = avs_ipc_set_pipeline_state(adev, ppl->instance_id,
1063 dev_err(adev->dev, "run path failed: %d\n", ret);