Lines Matching refs:skl

50 void skl_tplg_d0i3_get(struct skl_dev *skl, enum d0i3_capability caps)  in skl_tplg_d0i3_get()  argument
52 struct skl_d0i3_data *d0i3 = &skl->d0i3; in skl_tplg_d0i3_get()
69 void skl_tplg_d0i3_put(struct skl_dev *skl, enum d0i3_capability caps) in skl_tplg_d0i3_put() argument
71 struct skl_d0i3_data *d0i3 = &skl->d0i3; in skl_tplg_d0i3_put()
114 static void skl_dump_mconfig(struct skl_dev *skl, struct skl_module_cfg *mcfg) in skl_dump_mconfig() argument
118 dev_dbg(skl->dev, "Dumping config\n"); in skl_dump_mconfig()
119 dev_dbg(skl->dev, "Input Format:\n"); in skl_dump_mconfig()
120 dev_dbg(skl->dev, "channels = %d\n", iface->inputs[0].fmt.channels); in skl_dump_mconfig()
121 dev_dbg(skl->dev, "s_freq = %d\n", iface->inputs[0].fmt.s_freq); in skl_dump_mconfig()
122 dev_dbg(skl->dev, "ch_cfg = %d\n", iface->inputs[0].fmt.ch_cfg); in skl_dump_mconfig()
123 dev_dbg(skl->dev, "valid bit depth = %d\n", in skl_dump_mconfig()
125 dev_dbg(skl->dev, "Output Format:\n"); in skl_dump_mconfig()
126 dev_dbg(skl->dev, "channels = %d\n", iface->outputs[0].fmt.channels); in skl_dump_mconfig()
127 dev_dbg(skl->dev, "s_freq = %d\n", iface->outputs[0].fmt.s_freq); in skl_dump_mconfig()
128 dev_dbg(skl->dev, "valid bit depth = %d\n", in skl_dump_mconfig()
130 dev_dbg(skl->dev, "ch_cfg = %d\n", iface->outputs[0].fmt.ch_cfg); in skl_dump_mconfig()
232 static void skl_tplg_update_buffer_size(struct skl_dev *skl, in skl_tplg_update_buffer_size() argument
284 struct skl_dev *skl) in skl_tplg_update_be_blob() argument
298 dev_dbg(skl->dev, "Applying default cfg blob\n"); in skl_tplg_update_be_blob()
328 cfg = skl_get_ep_blob(skl, m_cfg->vbus_id, link_type, in skl_tplg_update_be_blob()
334 dev_err(skl->dev, "Blob NULL for id %x type %d dirn %d\n", in skl_tplg_update_be_blob()
336 dev_err(skl->dev, "PCM: ch %d, freq %d, fmt %d\n", in skl_tplg_update_be_blob()
345 struct skl_dev *skl) in skl_tplg_update_module_params() argument
355 dev_dbg(skl->dev, "Mconfig for widget=%s BEFORE updation\n", in skl_tplg_update_module_params()
358 skl_dump_mconfig(skl, m_cfg); in skl_tplg_update_module_params()
366 skl_tplg_update_buffer_size(skl, m_cfg); in skl_tplg_update_module_params()
368 dev_dbg(skl->dev, "Mconfig for widget=%s AFTER updation\n", in skl_tplg_update_module_params()
371 skl_dump_mconfig(skl, m_cfg); in skl_tplg_update_module_params()
380 struct skl_dev *skl) in skl_tplg_set_module_params() argument
392 ret = skl_set_module_params(skl, sp_cfg->caps, in skl_tplg_set_module_params()
406 ret = skl_set_module_params(skl, in skl_tplg_set_module_params()
451 static int skl_tplg_module_prepare(struct skl_dev *skl, struct skl_pipe *pipe, in skl_tplg_module_prepare() argument
456 return skl_pcm_host_dma_prepare(skl->dev, pipe->p_params); in skl_tplg_module_prepare()
459 return skl_pcm_link_dma_prepare(skl->dev, pipe->p_params); in skl_tplg_module_prepare()
471 skl_tplg_init_pipe_modules(struct skl_dev *skl, struct skl_pipe *pipe) in skl_tplg_init_pipe_modules() argument
486 dev_err(skl->dev, in skl_tplg_init_pipe_modules()
496 if (mconfig->module->loadable && skl->dsp->fw_ops.load_mod) { in skl_tplg_init_pipe_modules()
497 ret = skl->dsp->fw_ops.load_mod(skl->dsp, in skl_tplg_init_pipe_modules()
506 ret = skl_tplg_module_prepare(skl, pipe, w, mconfig); in skl_tplg_init_pipe_modules()
511 skl_tplg_update_be_blob(w, skl); in skl_tplg_init_pipe_modules()
517 skl_tplg_update_module_params(w, skl); in skl_tplg_init_pipe_modules()
519 mconfig->id.pvt_id = skl_get_pvt_id(skl, uuid_mod, in skl_tplg_init_pipe_modules()
525 ret = skl_dsp_get_core(skl->dsp, mconfig->core_id); in skl_tplg_init_pipe_modules()
527 dev_err(skl->dev, "Failed to wake up core %d ret=%d\n", in skl_tplg_init_pipe_modules()
532 ret = skl_init_module(skl, mconfig); in skl_tplg_init_pipe_modules()
534 skl_put_pvt_id(skl, uuid_mod, &mconfig->id.pvt_id); in skl_tplg_init_pipe_modules()
538 ret = skl_tplg_set_module_params(w, skl); in skl_tplg_init_pipe_modules()
545 skl_dsp_put_core(skl->dsp, mconfig->core_id); in skl_tplg_init_pipe_modules()
549 static int skl_tplg_unload_pipe_modules(struct skl_dev *skl, in skl_tplg_unload_pipe_modules() argument
561 if (mconfig->module->loadable && skl->dsp->fw_ops.unload_mod && in skl_tplg_unload_pipe_modules()
563 ret = skl->dsp->fw_ops.unload_mod(skl->dsp, in skl_tplg_unload_pipe_modules()
568 skl_put_pvt_id(skl, uuid_mod, &mconfig->id.pvt_id); in skl_tplg_unload_pipe_modules()
570 ret = skl_dsp_put_core(skl->dsp, mconfig->core_id); in skl_tplg_unload_pipe_modules()
573 dev_err(skl->dev, "Failed to sleep core %d ret=%d\n", in skl_tplg_unload_pipe_modules()
582 static bool skl_tplg_is_multi_fmt(struct skl_dev *skl, struct skl_pipe *pipe) in skl_tplg_is_multi_fmt() argument
622 skl_tplg_get_pipe_config(struct skl_dev *skl, struct skl_module_cfg *mconfig) in skl_tplg_get_pipe_config() argument
636 if (skl_tplg_is_multi_fmt(skl, pipe)) { in skl_tplg_get_pipe_config()
639 dev_dbg(skl->dev, "found pipe config idx:%d\n", in skl_tplg_get_pipe_config()
645 dev_dbg(skl->dev, "No conn_type detected, take 0th config\n"); in skl_tplg_get_pipe_config()
669 dev_dbg(skl->dev, "Using pipe config: %d\n", i); in skl_tplg_get_pipe_config()
675 dev_err(skl->dev, "Invalid pipe config: %d %d %d for pipe: %d\n", in skl_tplg_get_pipe_config()
688 struct skl_dev *skl) in skl_tplg_mixer_dapm_pre_pmu_event() argument
697 ret = skl_tplg_get_pipe_config(skl, mconfig); in skl_tplg_mixer_dapm_pre_pmu_event()
705 ret = skl_create_pipeline(skl, mconfig->pipe); in skl_tplg_mixer_dapm_pre_pmu_event()
710 ret = skl_tplg_init_pipe_modules(skl, s_pipe); in skl_tplg_mixer_dapm_pre_pmu_event()
723 ret = skl_bind_modules(skl, src_module, dst_module); in skl_tplg_mixer_dapm_pre_pmu_event()
735 if (list_empty(&skl->bind_list)) in skl_tplg_mixer_dapm_pre_pmu_event()
738 list_for_each_entry(modules, &skl->bind_list, node) { in skl_tplg_mixer_dapm_pre_pmu_event()
741 skl_bind_modules(skl, modules->src, in skl_tplg_mixer_dapm_pre_pmu_event()
749 static int skl_fill_sink_instance_id(struct skl_dev *skl, u32 *params, in skl_fill_sink_instance_id() argument
760 pvt_id = skl_get_pvt_instance_id_map(skl, inst->mod_id, in skl_fill_sink_instance_id()
780 struct skl_module_cfg *mcfg, struct skl_dev *skl) in skl_tplg_set_module_bind_params() argument
807 ret = skl_set_module_params(skl, sp_cfg->caps, in skl_tplg_set_module_bind_params()
825 skl_fill_sink_instance_id(skl, params, bc->max, in skl_tplg_set_module_bind_params()
828 ret = skl_set_module_params(skl, params, in skl_tplg_set_module_bind_params()
841 static int skl_get_module_id(struct skl_dev *skl, guid_t *uuid) in skl_get_module_id() argument
845 list_for_each_entry(module, &skl->uuid_list, list) { in skl_get_module_id()
853 static int skl_tplg_find_moduleid_from_uuid(struct skl_dev *skl, in skl_tplg_find_moduleid_from_uuid() argument
859 struct hdac_bus *bus = skl_to_bus(skl); in skl_tplg_find_moduleid_from_uuid()
873 module_id = skl_get_module_id(skl, in skl_tplg_find_moduleid_from_uuid()
897 void skl_tplg_add_moduleid_in_bind_params(struct skl_dev *skl, in skl_tplg_add_moduleid_in_bind_params() argument
914 (skl_tplg_find_moduleid_from_uuid(skl, in skl_tplg_add_moduleid_in_bind_params()
916 dev_err(skl->dev, in skl_tplg_add_moduleid_in_bind_params()
921 static int skl_tplg_module_add_deferred_bind(struct skl_dev *skl, in skl_tplg_module_add_deferred_bind() argument
937 if (!list_empty(&skl->bind_list)) { in skl_tplg_module_add_deferred_bind()
938 list_for_each_entry(modules, &skl->bind_list, node) { in skl_tplg_module_add_deferred_bind()
951 list_add(&m_list->node, &skl->bind_list); in skl_tplg_module_add_deferred_bind()
959 struct skl_dev *skl, in skl_tplg_bind_sinks() argument
972 dev_dbg(skl->dev, in skl_tplg_bind_sinks()
974 dev_dbg(skl->dev, in skl_tplg_bind_sinks()
979 if (!is_skl_dsp_widget_type(p->sink, skl->dev)) in skl_tplg_bind_sinks()
980 return skl_tplg_bind_sinks(p->sink, skl, src_w, src_mconfig); in skl_tplg_bind_sinks()
988 is_skl_dsp_widget_type(p->sink, skl->dev)) { in skl_tplg_bind_sinks()
1006 ret = skl_tplg_module_add_deferred_bind(skl, in skl_tplg_bind_sinks()
1020 ret = skl_bind_modules(skl, src_mconfig, sink_mconfig); in skl_tplg_bind_sinks()
1026 src_mconfig, skl); in skl_tplg_bind_sinks()
1028 sink_mconfig, skl); in skl_tplg_bind_sinks()
1034 ret = skl_run_pipe(skl, in skl_tplg_bind_sinks()
1043 return skl_tplg_bind_sinks(next_sink, skl, src_w, src_mconfig); in skl_tplg_bind_sinks()
1059 struct skl_dev *skl) in skl_tplg_pga_dapm_pre_pmu_event() argument
1071 ret = skl_tplg_bind_sinks(w, skl, w, src_mconfig); in skl_tplg_pga_dapm_pre_pmu_event()
1077 return skl_run_pipe(skl, src_mconfig->pipe); in skl_tplg_pga_dapm_pre_pmu_event()
1083 struct snd_soc_dapm_widget *w, struct skl_dev *skl) in skl_get_src_dsp_widget() argument
1093 dev_dbg(skl->dev, "sink widget=%s\n", w->name); in skl_get_src_dsp_widget()
1094 dev_dbg(skl->dev, "src widget=%s\n", p->source->name); in skl_get_src_dsp_widget()
1102 is_skl_dsp_widget_type(p->source, skl->dev)) { in skl_get_src_dsp_widget()
1108 return skl_get_src_dsp_widget(src_w, skl); in skl_get_src_dsp_widget()
1123 struct skl_dev *skl) in skl_tplg_mixer_dapm_post_pmu_event() argument
1138 source = skl_get_src_dsp_widget(w, skl); in skl_tplg_mixer_dapm_post_pmu_event()
1153 ret = skl_bind_modules(skl, src_mconfig, sink_mconfig); in skl_tplg_mixer_dapm_post_pmu_event()
1158 skl_tplg_set_module_bind_params(source, src_mconfig, skl); in skl_tplg_mixer_dapm_post_pmu_event()
1159 skl_tplg_set_module_bind_params(sink, sink_mconfig, skl); in skl_tplg_mixer_dapm_post_pmu_event()
1162 ret = skl_run_pipe(skl, sink_mconfig->pipe); in skl_tplg_mixer_dapm_post_pmu_event()
1175 struct skl_dev *skl) in skl_tplg_mixer_dapm_pre_pmd_event() argument
1183 ret = skl_stop_pipe(skl, sink_mconfig->pipe); in skl_tplg_mixer_dapm_pre_pmd_event()
1193 ret = skl_unbind_modules(skl, in skl_tplg_mixer_dapm_pre_pmd_event()
1208 struct skl_dev *skl) in skl_tplg_mixer_dapm_post_pmd_event() argument
1220 if (list_empty(&skl->bind_list)) in skl_tplg_mixer_dapm_post_pmd_event()
1225 list_for_each_entry_safe(modules, tmp, &skl->bind_list, node) { in skl_tplg_mixer_dapm_post_pmd_event()
1231 skl_unbind_modules(skl, modules->src, in skl_tplg_mixer_dapm_post_pmd_event()
1256 skl_unbind_modules(skl, src_module, dst_module); in skl_tplg_mixer_dapm_post_pmd_event()
1260 skl_delete_pipe(skl, mconfig->pipe); in skl_tplg_mixer_dapm_post_pmd_event()
1267 return skl_tplg_unload_pipe_modules(skl, s_pipe); in skl_tplg_mixer_dapm_post_pmd_event()
1276 struct skl_dev *skl) in skl_tplg_pga_dapm_post_pmd_event() argument
1284 ret = skl_stop_pipe(skl, src_mconfig->pipe); in skl_tplg_pga_dapm_post_pmd_event()
1297 ret = skl_unbind_modules(skl, src_mconfig, in skl_tplg_pga_dapm_post_pmd_event()
1315 struct skl_dev *skl = get_skl_ctx(dapm->dev); in skl_tplg_mixer_event() local
1319 return skl_tplg_mixer_dapm_pre_pmu_event(w, skl); in skl_tplg_mixer_event()
1322 return skl_tplg_mixer_dapm_post_pmu_event(w, skl); in skl_tplg_mixer_event()
1325 return skl_tplg_mixer_dapm_pre_pmd_event(w, skl); in skl_tplg_mixer_event()
1328 return skl_tplg_mixer_dapm_post_pmd_event(w, skl); in skl_tplg_mixer_event()
1345 struct skl_dev *skl = get_skl_ctx(dapm->dev); in skl_tplg_pga_event() local
1349 return skl_tplg_pga_dapm_pre_pmu_event(w, skl); in skl_tplg_pga_event()
1352 return skl_tplg_pga_dapm_post_pmd_event(w, skl); in skl_tplg_pga_event()
1365 struct skl_dev *skl = bus_to_skl(bus); in skl_tplg_multi_config_set_get() local
1379 list_for_each_entry(ppl, &skl->ppl_list, node) { in skl_tplg_multi_config_set_get()
1428 struct skl_dev *skl = get_skl_ctx(w->dapm->dev); in skl_tplg_tlv_control_get() local
1431 skl_get_module_params(skl, (u32 *)bc->params, in skl_tplg_tlv_control_get()
1463 struct skl_dev *skl = get_skl_ctx(w->dapm->dev); in skl_tplg_tlv_control_set() local
1480 return skl_set_module_params(skl, in skl_tplg_tlv_control_set()
1641 struct skl_dev *skl = get_skl_ctx(dev); in skl_tplg_update_pipe_params() local
1649 if (skl->nr_modules) in skl_tplg_update_pipe_params()
1838 struct skl_dev *skl = get_skl_ctx(dai->dev); in skl_tplg_be_fill_pipe_params() local
1848 cfg = skl_get_ep_blob(skl, mconfig->vbus_id, link_type, in skl_tplg_be_fill_pipe_params()
2062 struct skl_module_cfg *mconfig, struct skl_dev *skl, in skl_tplg_add_pipe() argument
2069 list_for_each_entry(ppl, &skl->ppl_list, node) { in skl_tplg_add_pipe()
2093 list_add(&ppl->node, &skl->ppl_list); in skl_tplg_add_pipe()
2370 struct skl_dev *skl, struct skl_module_cfg *mconfig) in skl_tplg_get_token() argument
2386 if (skl->nr_modules == 0) { in skl_tplg_get_token()
2482 mconfig, skl, tkn_elem); in skl_tplg_get_token()
2620 char *pvt_data, struct skl_dev *skl, in skl_tplg_get_tokens() argument
2648 ret = skl_tplg_get_token(dev, array->value, skl, in skl_tplg_get_tokens()
2667 skl, mconfig); in skl_tplg_get_tokens()
2716 struct skl_module_cfg *mconfig, struct skl_dev *skl, in skl_tplg_add_pipe_v4() argument
2723 list_for_each_entry(ppl, &skl->ppl_list, node) { in skl_tplg_add_pipe_v4()
2751 list_add(&ppl->node, &skl->ppl_list); in skl_tplg_add_pipe_v4()
2793 struct skl_dev *skl, struct device *dev, in skl_tplg_get_pvt_data_v4() argument
2825 ret = skl_tplg_add_pipe_v4(dev, mconfig, skl, &dfw->pipe); in skl_tplg_get_pvt_data_v4()
2875 struct skl_dev *skl, struct device *dev, in skl_tplg_get_pvt_data() argument
2888 return skl_tplg_get_pvt_data_v4(tplg_w, skl, dev, mconfig); in skl_tplg_get_pvt_data()
2927 skl, mconfig, block_size); in skl_tplg_get_pvt_data()
2970 void skl_cleanup_resources(struct skl_dev *skl) in skl_cleanup_resources() argument
2972 struct snd_soc_component *soc_component = skl->component; in skl_cleanup_resources()
2984 if (is_skl_dsp_widget_type(w, skl->dev) && w->priv != NULL) in skl_cleanup_resources()
2988 skl_clear_module_cnt(skl->dsp); in skl_cleanup_resources()
3004 struct skl_dev *skl = bus_to_skl(bus); in skl_tplg_widget_load() local
3015 if (skl->nr_modules == 0) { in skl_tplg_widget_load()
3031 ret = skl_tplg_get_pvt_data(tplg_w, skl, bus->dev, mconfig); in skl_tplg_widget_load()
3035 skl_debug_init_module(skl->debugfs, w, mconfig); in skl_tplg_widget_load()
3157 struct skl_dev *skl) in skl_tplg_fill_str_mfest_tkn() argument
3164 if (ref_count > skl->lib_count - 1) { in skl_tplg_fill_str_mfest_tkn()
3169 strncpy(skl->lib_info[ref_count].name, in skl_tplg_fill_str_mfest_tkn()
3171 ARRAY_SIZE(skl->lib_info[ref_count].name)); in skl_tplg_fill_str_mfest_tkn()
3186 struct skl_dev *skl) in skl_tplg_get_str_tkn() argument
3193 ret = skl_tplg_fill_str_mfest_tkn(dev, str_elem, skl); in skl_tplg_get_str_tkn()
3293 struct skl_dev *skl) in skl_tplg_get_int_tkn() argument
3305 if (skl->modules) { in skl_tplg_get_int_tkn()
3306 mod = skl->modules[mod_idx]; in skl_tplg_get_int_tkn()
3313 skl->lib_count = tkn_elem->value; in skl_tplg_get_int_tkn()
3317 skl->nr_modules = tkn_elem->value; in skl_tplg_get_int_tkn()
3318 skl->modules = devm_kcalloc(dev, skl->nr_modules, in skl_tplg_get_int_tkn()
3319 sizeof(*skl->modules), GFP_KERNEL); in skl_tplg_get_int_tkn()
3320 if (!skl->modules) in skl_tplg_get_int_tkn()
3323 for (i = 0; i < skl->nr_modules; i++) { in skl_tplg_get_int_tkn()
3324 skl->modules[i] = devm_kzalloc(dev, in skl_tplg_get_int_tkn()
3326 if (!skl->modules[i]) in skl_tplg_get_int_tkn()
3347 size = struct_size(skl->cfg.astate_cfg, astate_table, in skl_tplg_get_int_tkn()
3349 skl->cfg.astate_cfg = devm_kzalloc(dev, size, GFP_KERNEL); in skl_tplg_get_int_tkn()
3350 if (!skl->cfg.astate_cfg) in skl_tplg_get_int_tkn()
3353 astate_table = skl->cfg.astate_cfg->astate_table; in skl_tplg_get_int_tkn()
3354 count = skl->cfg.astate_cfg->count = tkn_elem->value; in skl_tplg_get_int_tkn()
3464 char *pvt_data, struct skl_dev *skl, in skl_tplg_get_manifest_tkn() argument
3481 ret = skl_tplg_get_str_tkn(dev, array, skl); in skl_tplg_get_manifest_tkn()
3497 if (uuid_index >= skl->nr_modules) { in skl_tplg_get_manifest_tkn()
3501 import_guid(&skl->modules[uuid_index++]->uuid, in skl_tplg_get_manifest_tkn()
3515 tkn_elem, skl); in skl_tplg_get_manifest_tkn()
3534 struct device *dev, struct skl_dev *skl) in skl_tplg_get_manifest_data() argument
3576 ret = skl_tplg_get_manifest_tkn(dev, data, skl, in skl_tplg_get_manifest_data()
3596 struct skl_dev *skl = bus_to_skl(bus); in skl_manifest_load() local
3602 skl_tplg_get_manifest_data(manifest, bus->dev, skl); in skl_manifest_load()
3604 if (skl->lib_count > SKL_MAX_LIB) { in skl_manifest_load()
3606 skl->lib_count); in skl_manifest_load()
3693 static void skl_tplg_set_pipe_type(struct skl_dev *skl, struct skl_pipe *pipe) in skl_tplg_set_pipe_type() argument
3723 struct skl_dev *skl = bus_to_skl(bus); in skl_tplg_init() local
3726 ret = request_firmware(&fw, skl->tplg_name, bus->dev); in skl_tplg_init()
3731 skl->mach->drv_name); in skl_tplg_init()
3733 skl->tplg_name, ret, alt_tplg_name); in skl_tplg_init()
3764 list_for_each_entry(ppl, &skl->ppl_list, node) in skl_tplg_init()
3765 skl_tplg_set_pipe_type(skl, ppl->pipe); in skl_tplg_init()
3774 struct skl_dev *skl = bus_to_skl(bus); in skl_tplg_exit() local
3777 list_for_each_entry_safe(ppl, tmp, &skl->ppl_list, node) in skl_tplg_exit()