Lines Matching +full:fw +full:- +full:cfg +full:- +full:mmio
1 // SPDX-License-Identifier: GPL-2.0-only
3 * skl-message.c - HDA DSP interface for FW registration, Pipe and Module
16 #include <uapi/sound/skl-tplg-interface.h>
17 #include "skl-sst-dsp.h"
18 #include "cnl-sst-dsp.h"
19 #include "skl-sst-ipc.h"
21 #include "../common/sst-dsp.h"
22 #include "../common/sst-dsp-priv.h"
23 #include "skl-topology.h"
47 skl_ipc_set_large_config(&skl->ipc, &msg, data); in skl_dsp_set_astate_cfg()
58 return -EINVAL; in skl_dsp_setup_spib()
61 snd_hdac_stream_spbcap_enable(bus, enable, stream->index); in skl_dsp_setup_spib()
79 return -ENODEV; in skl_dsp_prepare()
87 return -ENODEV; in skl_dsp_prepare()
96 skl_dsp_setup_spib(dev, size, stream->stream_tag, true); in skl_dsp_prepare()
98 return stream->stream_tag; in skl_dsp_prepare()
107 return -ENODEV; in skl_dsp_trigger()
112 return -EINVAL; in skl_dsp_trigger()
127 return -ENODEV; in skl_dsp_cleanup()
132 return -EINVAL; in skl_dsp_cleanup()
254 int irq = bus->irq; in skl_init_dsp()
263 /* read the BAR of the ADSP MMIO */ in skl_init_dsp()
264 mmio_base = pci_ioremap_bar(skl->pci, 4); in skl_init_dsp()
266 dev_err(bus->dev, "ioremap error\n"); in skl_init_dsp()
267 return -ENXIO; in skl_init_dsp()
270 ops = skl_get_dsp_ops(skl->pci->device); in skl_init_dsp()
272 ret = -EIO; in skl_init_dsp()
276 loader_ops = ops->loader_ops(); in skl_init_dsp()
277 ret = ops->init(bus->dev, mmio_base, irq, in skl_init_dsp()
278 skl->fw_name, loader_ops, in skl_init_dsp()
284 skl->dsp_ops = ops; in skl_init_dsp()
285 cores = &skl->cores; in skl_init_dsp()
286 cores->count = ops->num_cores; in skl_init_dsp()
288 cores->state = kcalloc(cores->count, sizeof(*cores->state), GFP_KERNEL); in skl_init_dsp()
289 if (!cores->state) { in skl_init_dsp()
290 ret = -ENOMEM; in skl_init_dsp()
294 cores->usage_count = kcalloc(cores->count, sizeof(*cores->usage_count), in skl_init_dsp()
296 if (!cores->usage_count) { in skl_init_dsp()
297 ret = -ENOMEM; in skl_init_dsp()
301 dev_dbg(bus->dev, "dsp registration status=%d\n", ret); in skl_init_dsp()
306 kfree(cores->state); in skl_init_dsp()
321 skl->dsp_ops->cleanup(bus->dev, skl); in skl_free_dsp()
323 kfree(skl->cores.state); in skl_free_dsp()
324 kfree(skl->cores.usage_count); in skl_free_dsp()
326 if (skl->dsp->addr.lpe) in skl_free_dsp()
327 iounmap(skl->dsp->addr.lpe); in skl_free_dsp()
346 dwork = &skl->d0i3.work; in skl_suspend_late_dsp()
348 if (dwork->work.func) { in skl_suspend_late_dsp()
349 if (skl->supend_active) in skl_suspend_late_dsp()
364 if (!bus->ppcap) in skl_suspend_dsp()
367 ret = skl_dsp_sleep(skl->dsp); in skl_suspend_dsp()
384 if (!bus->ppcap) in skl_resume_dsp()
392 if (skl->is_first_boot) in skl_resume_dsp()
399 skl->enable_miscbdcge(skl->dev, false); in skl_resume_dsp()
400 skl->clock_power_gating(skl->dev, false); in skl_resume_dsp()
402 ret = skl_dsp_wake(skl->dsp); in skl_resume_dsp()
403 skl->enable_miscbdcge(skl->dev, true); in skl_resume_dsp()
404 skl->clock_power_gating(skl->dev, true); in skl_resume_dsp()
408 if (skl->cfg.astate_cfg != NULL) { in skl_resume_dsp()
409 skl_dsp_set_astate_cfg(skl, skl->cfg.astate_cfg->count, in skl_resume_dsp()
410 skl->cfg.astate_cfg); in skl_resume_dsp()
446 struct skl_module *module = mconfig->module; in skl_set_base_module_format()
447 struct skl_module_res *res = &module->resources[mconfig->res_idx]; in skl_set_base_module_format()
448 struct skl_module_iface *fmt = &module->formats[mconfig->fmt_idx]; in skl_set_base_module_format()
449 struct skl_module_fmt *format = &fmt->inputs[0].fmt; in skl_set_base_module_format()
451 base_cfg->audio_fmt.number_of_channels = format->channels; in skl_set_base_module_format()
453 base_cfg->audio_fmt.s_freq = format->s_freq; in skl_set_base_module_format()
454 base_cfg->audio_fmt.bit_depth = format->bit_depth; in skl_set_base_module_format()
455 base_cfg->audio_fmt.valid_bit_depth = format->valid_bit_depth; in skl_set_base_module_format()
456 base_cfg->audio_fmt.ch_cfg = format->ch_cfg; in skl_set_base_module_format()
457 base_cfg->audio_fmt.sample_type = format->sample_type; in skl_set_base_module_format()
459 dev_dbg(skl->dev, "bit_depth=%x valid_bd=%x ch_config=%x\n", in skl_set_base_module_format()
460 format->bit_depth, format->valid_bit_depth, in skl_set_base_module_format()
461 format->ch_cfg); in skl_set_base_module_format()
463 base_cfg->audio_fmt.channel_map = format->ch_map; in skl_set_base_module_format()
465 base_cfg->audio_fmt.interleaving = format->interleaving_style; in skl_set_base_module_format()
467 base_cfg->cpc = res->cpc; in skl_set_base_module_format()
468 base_cfg->ibs = res->ibs; in skl_set_base_module_format()
469 base_cfg->obs = res->obs; in skl_set_base_module_format()
470 base_cfg->is_pages = res->is_pages; in skl_set_base_module_format()
476 pin_fmt->number_of_channels = format->channels; in fill_pin_params()
477 pin_fmt->s_freq = format->s_freq; in fill_pin_params()
478 pin_fmt->bit_depth = format->bit_depth; in fill_pin_params()
479 pin_fmt->valid_bit_depth = format->valid_bit_depth; in fill_pin_params()
480 pin_fmt->ch_cfg = format->ch_cfg; in fill_pin_params()
481 pin_fmt->sample_type = format->sample_type; in fill_pin_params()
482 pin_fmt->channel_map = format->ch_map; in fill_pin_params()
483 pin_fmt->interleaving = format->interleaving_style; in fill_pin_params()
495 struct skl_module *module = mconfig->module; in skl_set_base_ext_module_format()
497 struct skl_module_iface *fmt = &module->formats[mconfig->fmt_idx]; in skl_set_base_ext_module_format()
498 struct skl_module_res *res = &module->resources[mconfig->res_idx]; in skl_set_base_ext_module_format()
504 base_cfg_ext->nr_input_pins = res->nr_input_pins; in skl_set_base_ext_module_format()
505 base_cfg_ext->nr_output_pins = res->nr_output_pins; in skl_set_base_ext_module_format()
506 base_cfg_ext->priv_param_length = in skl_set_base_ext_module_format()
507 mconfig->formats_config[SKL_PARAM_INIT].caps_size; in skl_set_base_ext_module_format()
509 for (i = 0; i < res->nr_input_pins; i++) { in skl_set_base_ext_module_format()
510 pin_res = &res->input[i]; in skl_set_base_ext_module_format()
511 pin_fmt = &base_cfg_ext->pins_fmt[i]; in skl_set_base_ext_module_format()
513 pin_fmt->pin_idx = pin_res->pin_index; in skl_set_base_ext_module_format()
514 pin_fmt->buf_size = pin_res->buf_size; in skl_set_base_ext_module_format()
516 format = &fmt->inputs[pin_res->pin_index].fmt; in skl_set_base_ext_module_format()
517 fill_pin_params(&pin_fmt->audio_fmt, format); in skl_set_base_ext_module_format()
520 for (i = 0; i < res->nr_output_pins; i++) { in skl_set_base_ext_module_format()
521 pin_res = &res->output[i]; in skl_set_base_ext_module_format()
522 pin_fmt = &base_cfg_ext->pins_fmt[res->nr_input_pins + i]; in skl_set_base_ext_module_format()
524 pin_fmt->pin_idx = pin_res->pin_index; in skl_set_base_ext_module_format()
525 pin_fmt->buf_size = pin_res->buf_size; in skl_set_base_ext_module_format()
527 format = &fmt->outputs[pin_res->pin_index].fmt; in skl_set_base_ext_module_format()
528 fill_pin_params(&pin_fmt->audio_fmt, format); in skl_set_base_ext_module_format()
531 if (!base_cfg_ext->priv_param_length) in skl_set_base_ext_module_format()
535 params += (base_cfg_ext->nr_input_pins + base_cfg_ext->nr_output_pins) * in skl_set_base_ext_module_format()
538 memcpy(params, mconfig->formats_config[SKL_PARAM_INIT].caps, in skl_set_base_ext_module_format()
539 mconfig->formats_config[SKL_PARAM_INIT].caps_size); in skl_set_base_ext_module_format()
549 if (mconfig->formats_config[SKL_PARAM_INIT].caps_size == 0) in skl_copy_copier_caps()
552 memcpy(&cpr_mconfig->gtw_cfg.config_data, in skl_copy_copier_caps()
553 mconfig->formats_config[SKL_PARAM_INIT].caps, in skl_copy_copier_caps()
554 mconfig->formats_config[SKL_PARAM_INIT].caps_size); in skl_copy_copier_caps()
556 cpr_mconfig->gtw_cfg.config_length = in skl_copy_copier_caps()
557 (mconfig->formats_config[SKL_PARAM_INIT].caps_size) / 4; in skl_copy_copier_caps()
570 struct skl_pipe_params *params = mconfig->pipe->p_params; in skl_get_node_id()
572 switch (mconfig->dev_type) { in skl_get_node_id()
575 (SKL_CONN_SOURCE == mconfig->hw_conn_type) ? in skl_get_node_id()
578 node_id.node.vindex = params->host_dma_id + in skl_get_node_id()
579 (mconfig->vbus_id << 3); in skl_get_node_id()
584 (SKL_CONN_SOURCE == mconfig->hw_conn_type) ? in skl_get_node_id()
587 ssp_node.dma_node.time_slot_index = mconfig->time_slot; in skl_get_node_id()
588 ssp_node.dma_node.i2s_instance = mconfig->vbus_id; in skl_get_node_id()
594 node_id.node.vindex = mconfig->vbus_id + in skl_get_node_id()
595 (mconfig->time_slot); in skl_get_node_id()
600 (SKL_CONN_SOURCE == mconfig->hw_conn_type) ? in skl_get_node_id()
603 node_id.node.vindex = params->link_dma_id; in skl_get_node_id()
608 (SKL_CONN_SOURCE == mconfig->hw_conn_type) ? in skl_get_node_id()
611 node_id.node.vindex = params->host_dma_id; in skl_get_node_id()
628 int res_idx = mconfig->res_idx; in skl_setup_cpr_gateway_cfg()
630 cpr_mconfig->gtw_cfg.node_id = skl_get_node_id(skl, mconfig); in skl_setup_cpr_gateway_cfg()
632 if (cpr_mconfig->gtw_cfg.node_id == SKL_NON_GATEWAY_CPR_NODE_ID) { in skl_setup_cpr_gateway_cfg()
633 cpr_mconfig->cpr_feature_mask = 0; in skl_setup_cpr_gateway_cfg()
637 if (skl->nr_modules) { in skl_setup_cpr_gateway_cfg()
638 res = &mconfig->module->resources[mconfig->res_idx]; in skl_setup_cpr_gateway_cfg()
639 cpr_mconfig->gtw_cfg.dma_buffer_size = res->dma_buffer_size; in skl_setup_cpr_gateway_cfg()
642 res = &mconfig->module->resources[res_idx]; in skl_setup_cpr_gateway_cfg()
645 switch (mconfig->hw_conn_type) { in skl_setup_cpr_gateway_cfg()
647 if (mconfig->dev_type == SKL_DEVICE_HDAHOST) in skl_setup_cpr_gateway_cfg()
648 dma_io_buf = res->ibs; in skl_setup_cpr_gateway_cfg()
650 dma_io_buf = res->obs; in skl_setup_cpr_gateway_cfg()
654 if (mconfig->dev_type == SKL_DEVICE_HDAHOST) in skl_setup_cpr_gateway_cfg()
655 dma_io_buf = res->obs; in skl_setup_cpr_gateway_cfg()
657 dma_io_buf = res->ibs; in skl_setup_cpr_gateway_cfg()
661 dev_warn(skl->dev, "wrong connection type: %d\n", in skl_setup_cpr_gateway_cfg()
662 mconfig->hw_conn_type); in skl_setup_cpr_gateway_cfg()
666 cpr_mconfig->gtw_cfg.dma_buffer_size = in skl_setup_cpr_gateway_cfg()
667 mconfig->dma_buffer_size * dma_io_buf; in skl_setup_cpr_gateway_cfg()
670 if (!cpr_mconfig->gtw_cfg.dma_buffer_size) { in skl_setup_cpr_gateway_cfg()
671 if (mconfig->hw_conn_type == SKL_CONN_SOURCE) in skl_setup_cpr_gateway_cfg()
672 cpr_mconfig->gtw_cfg.dma_buffer_size = 2 * res->obs; in skl_setup_cpr_gateway_cfg()
674 cpr_mconfig->gtw_cfg.dma_buffer_size = 2 * res->ibs; in skl_setup_cpr_gateway_cfg()
678 cpr_mconfig->cpr_feature_mask = 0; in skl_setup_cpr_gateway_cfg()
679 cpr_mconfig->gtw_cfg.config_length = 0; in skl_setup_cpr_gateway_cfg()
706 return -ENOMEM; in skl_dsp_set_dma_control()
708 dma_ctrl->node_id = node_id; in skl_dsp_set_dma_control()
716 dma_ctrl->config_length = DMA_I2S_BLOB_SIZE; in skl_dsp_set_dma_control()
718 memcpy(dma_ctrl->config_data, caps, caps_size); in skl_dsp_set_dma_control()
720 err = skl_ipc_set_large_config(&skl->ipc, &msg, (u32 *)dma_ctrl); in skl_dsp_set_dma_control()
731 struct skl_module *module = mconfig->module; in skl_setup_out_format()
732 struct skl_module_iface *fmt = &module->formats[mconfig->fmt_idx]; in skl_setup_out_format()
733 struct skl_module_fmt *format = &fmt->outputs[0].fmt; in skl_setup_out_format()
735 out_fmt->number_of_channels = (u8)format->channels; in skl_setup_out_format()
736 out_fmt->s_freq = format->s_freq; in skl_setup_out_format()
737 out_fmt->bit_depth = format->bit_depth; in skl_setup_out_format()
738 out_fmt->valid_bit_depth = format->valid_bit_depth; in skl_setup_out_format()
739 out_fmt->ch_cfg = format->ch_cfg; in skl_setup_out_format()
741 out_fmt->channel_map = format->ch_map; in skl_setup_out_format()
742 out_fmt->interleaving = format->interleaving_style; in skl_setup_out_format()
743 out_fmt->sample_type = format->sample_type; in skl_setup_out_format()
745 dev_dbg(skl->dev, "copier out format chan=%d fre=%d bitdepth=%d\n", in skl_setup_out_format()
746 out_fmt->number_of_channels, format->s_freq, format->bit_depth); in skl_setup_out_format()
758 struct skl_module *module = mconfig->module; in skl_set_src_format()
759 struct skl_module_iface *iface = &module->formats[mconfig->fmt_idx]; in skl_set_src_format()
760 struct skl_module_fmt *fmt = &iface->outputs[0].fmt; in skl_set_src_format()
765 src_mconfig->src_cfg = fmt->s_freq; in skl_set_src_format()
777 struct skl_module *module = mconfig->module; in skl_set_updown_mixer_format()
778 struct skl_module_iface *iface = &module->formats[mconfig->fmt_idx]; in skl_set_updown_mixer_format()
779 struct skl_module_fmt *fmt = &iface->outputs[0].fmt; in skl_set_updown_mixer_format()
783 mixer_mconfig->out_ch_cfg = fmt->ch_cfg; in skl_set_updown_mixer_format()
784 mixer_mconfig->ch_map = fmt->ch_map; in skl_set_updown_mixer_format()
798 struct skl_audio_data_format *out_fmt = &cpr_mconfig->out_fmt; in skl_set_copier_format()
811 * Mic select module take base module configuration and out-format
818 struct skl_audio_data_format *out_fmt = &base_outfmt_mcfg->out_fmt; in skl_set_base_outfmt_format()
830 struct skl_module *module = mconfig->module; in skl_get_module_param_size()
833 switch (mconfig->m_type) { in skl_get_module_param_size()
836 param_size += mconfig->formats_config[SKL_PARAM_INIT].caps_size; in skl_get_module_param_size()
855 res = &module->resources[mconfig->res_idx]; in skl_get_module_param_size()
858 param_size += (res->nr_input_pins + res->nr_output_pins) * in skl_get_module_param_size()
860 param_size += mconfig->formats_config[SKL_PARAM_INIT].caps_size; in skl_get_module_param_size()
886 return -ENOMEM; in skl_set_module_format()
890 switch (module_config->m_type) { in skl_set_module_format()
922 dev_dbg(skl->dev, "Module type=%d id=%d config size: %d bytes\n", in skl_set_module_format()
923 module_config->m_type, module_config->id.module_id, in skl_set_module_format()
941 return -EINVAL; in skl_get_queue_index()
953 struct skl_module_inst_id id = tgt_cfg->id; in skl_alloc_queue()
983 return -EINVAL; in skl_alloc_queue()
1014 mcfg->m_state = SKL_MODULE_INIT_DONE; in skl_clear_module_state()
1032 dev_dbg(skl->dev, "%s: module_id = %d instance=%d\n", __func__, in skl_init_module()
1033 mconfig->id.module_id, mconfig->id.pvt_id); in skl_init_module()
1035 if (mconfig->pipe->state != SKL_PIPE_CREATED) { in skl_init_module()
1036 dev_err(skl->dev, "Pipe not created state= %d pipe_id= %d\n", in skl_init_module()
1037 mconfig->pipe->state, mconfig->pipe->ppl_id); in skl_init_module()
1038 return -EIO; in skl_init_module()
1044 dev_err(skl->dev, "Failed to set module format ret=%d\n", ret); in skl_init_module()
1048 msg.module_id = mconfig->id.module_id; in skl_init_module()
1049 msg.instance_id = mconfig->id.pvt_id; in skl_init_module()
1050 msg.ppl_instance_id = mconfig->pipe->ppl_id; in skl_init_module()
1052 msg.core_id = mconfig->core_id; in skl_init_module()
1053 msg.domain = mconfig->domain; in skl_init_module()
1055 ret = skl_ipc_init_instance(&skl->ipc, &msg, param_data); in skl_init_module()
1057 dev_err(skl->dev, "Failed to init instance ret=%d\n", ret); in skl_init_module()
1061 mconfig->m_state = SKL_MODULE_INIT_DONE; in skl_init_module()
1069 dev_dbg(skl->dev, "%s: src module_id = %d src_instance=%d\n", in skl_dump_bind_info()
1070 __func__, src_module->id.module_id, src_module->id.pvt_id); in skl_dump_bind_info()
1071 dev_dbg(skl->dev, "%s: dst_module=%d dst_instance=%d\n", __func__, in skl_dump_bind_info()
1072 dst_module->id.module_id, dst_module->id.pvt_id); in skl_dump_bind_info()
1074 dev_dbg(skl->dev, "src_module state = %d dst module state = %d\n", in skl_dump_bind_info()
1075 src_module->m_state, dst_module->m_state); in skl_dump_bind_info()
1089 struct skl_module_inst_id src_id = src_mcfg->id; in skl_unbind_modules()
1090 struct skl_module_inst_id dst_id = dst_mcfg->id; in skl_unbind_modules()
1091 int in_max = dst_mcfg->module->max_input_pins; in skl_unbind_modules()
1092 int out_max = src_mcfg->module->max_output_pins; in skl_unbind_modules()
1098 src_index = skl_get_queue_index(src_mcfg->m_out_pin, dst_id, out_max); in skl_unbind_modules()
1105 dst_index = skl_get_queue_index(dst_mcfg->m_in_pin, src_id, in_max); in skl_unbind_modules()
1111 src_pin_state = src_mcfg->m_out_pin[src_index].pin_state; in skl_unbind_modules()
1112 dst_pin_state = dst_mcfg->m_in_pin[dst_index].pin_state; in skl_unbind_modules()
1118 msg.module_id = src_mcfg->id.module_id; in skl_unbind_modules()
1119 msg.instance_id = src_mcfg->id.pvt_id; in skl_unbind_modules()
1120 msg.dst_module_id = dst_mcfg->id.module_id; in skl_unbind_modules()
1121 msg.dst_instance_id = dst_mcfg->id.pvt_id; in skl_unbind_modules()
1124 ret = skl_ipc_bind_unbind(&skl->ipc, &msg); in skl_unbind_modules()
1127 skl_free_queue(src_mcfg->m_out_pin, src_index); in skl_unbind_modules()
1128 skl_free_queue(dst_mcfg->m_in_pin, dst_index); in skl_unbind_modules()
1132 * always from src -> sink in skl_unbind_modules()
1134 skl_clear_module_state(src_mcfg->m_out_pin, out_max, src_mcfg); in skl_unbind_modules()
1155 int in_max = dst_mcfg->module->max_input_pins; in skl_bind_modules()
1156 int out_max = src_mcfg->module->max_output_pins; in skl_bind_modules()
1165 if (src_mcfg->m_state < SKL_MODULE_INIT_DONE || in skl_bind_modules()
1166 dst_mcfg->m_state < SKL_MODULE_INIT_DONE) in skl_bind_modules()
1169 src_index = skl_alloc_queue(src_mcfg->m_out_pin, dst_mcfg, out_max); in skl_bind_modules()
1171 return -EINVAL; in skl_bind_modules()
1174 dst_index = skl_alloc_queue(dst_mcfg->m_in_pin, src_mcfg, in_max); in skl_bind_modules()
1176 skl_free_queue(src_mcfg->m_out_pin, src_index); in skl_bind_modules()
1177 return -EINVAL; in skl_bind_modules()
1184 if (src_mcfg->m_type == SKL_MODULE_TYPE_COPIER && src_index > 0) { in skl_bind_modules()
1186 module = src_mcfg->module; in skl_bind_modules()
1187 fmt = &module->formats[src_mcfg->fmt_idx]; in skl_bind_modules()
1189 /* Input fmt is same as that of src module input cfg */ in skl_bind_modules()
1190 format = &fmt->inputs[0].fmt; in skl_bind_modules()
1193 format = &fmt->outputs[src_index].fmt; in skl_bind_modules()
1205 dev_dbg(skl->dev, "src queue = %d dst queue =%d\n", in skl_bind_modules()
1208 msg.module_id = src_mcfg->id.module_id; in skl_bind_modules()
1209 msg.instance_id = src_mcfg->id.pvt_id; in skl_bind_modules()
1210 msg.dst_module_id = dst_mcfg->id.module_id; in skl_bind_modules()
1211 msg.dst_instance_id = dst_mcfg->id.pvt_id; in skl_bind_modules()
1214 ret = skl_ipc_bind_unbind(&skl->ipc, &msg); in skl_bind_modules()
1217 src_mcfg->m_state = SKL_MODULE_BIND_DONE; in skl_bind_modules()
1218 src_mcfg->m_out_pin[src_index].pin_state = SKL_PIN_BIND_DONE; in skl_bind_modules()
1219 dst_mcfg->m_in_pin[dst_index].pin_state = SKL_PIN_BIND_DONE; in skl_bind_modules()
1224 skl_free_queue(src_mcfg->m_out_pin, src_index); in skl_bind_modules()
1225 skl_free_queue(dst_mcfg->m_in_pin, dst_index); in skl_bind_modules()
1233 dev_dbg(skl->dev, "%s: pipe_state = %d\n", __func__, state); in skl_set_pipe_state()
1235 return skl_ipc_set_pipeline_state(&skl->ipc, pipe->ppl_id, state); in skl_set_pipe_state()
1242 * to FW
1248 dev_dbg(skl->dev, "%s: pipe_id = %d\n", __func__, pipe->ppl_id); in skl_create_pipeline()
1250 ret = skl_ipc_create_pipeline(&skl->ipc, pipe->memory_pages, in skl_create_pipeline()
1251 pipe->pipe_priority, pipe->ppl_id, in skl_create_pipeline()
1252 pipe->lp_mode); in skl_create_pipeline()
1254 dev_err(skl->dev, "Failed to create pipeline\n"); in skl_create_pipeline()
1258 pipe->state = SKL_PIPE_CREATED; in skl_create_pipeline()
1273 dev_dbg(skl->dev, "%s: pipe = %d\n", __func__, pipe->ppl_id); in skl_delete_pipe()
1275 /* If pipe was not created in FW, do not try to delete it */ in skl_delete_pipe()
1276 if (pipe->state < SKL_PIPE_CREATED) in skl_delete_pipe()
1279 /* If pipe is started, do stop the pipe in FW. */ in skl_delete_pipe()
1280 if (pipe->state >= SKL_PIPE_STARTED) { in skl_delete_pipe()
1283 dev_err(skl->dev, "Failed to stop pipeline\n"); in skl_delete_pipe()
1287 pipe->state = SKL_PIPE_PAUSED; in skl_delete_pipe()
1293 dev_err(skl->dev, "Failed to reset pipe ret=%d\n", ret); in skl_delete_pipe()
1297 pipe->state = SKL_PIPE_RESET; in skl_delete_pipe()
1299 ret = skl_ipc_delete_pipeline(&skl->ipc, pipe->ppl_id); in skl_delete_pipe()
1301 dev_err(skl->dev, "Failed to delete pipeline\n"); in skl_delete_pipe()
1305 pipe->state = SKL_PIPE_INVALID; in skl_delete_pipe()
1319 dev_dbg(skl->dev, "%s: pipe = %d\n", __func__, pipe->ppl_id); in skl_run_pipe()
1321 /* If pipe was not created in FW, do not try to pause or delete */ in skl_run_pipe()
1322 if (pipe->state < SKL_PIPE_CREATED) in skl_run_pipe()
1328 dev_err(skl->dev, "Failed to pause pipe\n"); in skl_run_pipe()
1332 pipe->state = SKL_PIPE_PAUSED; in skl_run_pipe()
1336 dev_err(skl->dev, "Failed to start pipe\n"); in skl_run_pipe()
1340 pipe->state = SKL_PIPE_STARTED; in skl_run_pipe()
1353 dev_dbg(skl->dev, "In %s pipe=%d\n", __func__, pipe->ppl_id); in skl_stop_pipe()
1355 /* If pipe was not created in FW, do not try to pause or delete */ in skl_stop_pipe()
1356 if (pipe->state < SKL_PIPE_PAUSED) in skl_stop_pipe()
1361 dev_dbg(skl->dev, "Failed to stop pipe\n"); in skl_stop_pipe()
1365 pipe->state = SKL_PIPE_PAUSED; in skl_stop_pipe()
1378 /* If pipe was not created in FW, do not try to pause or delete */ in skl_reset_pipe()
1379 if (pipe->state < SKL_PIPE_PAUSED) in skl_reset_pipe()
1384 dev_dbg(skl->dev, "Failed to reset pipe ret=%d\n", ret); in skl_reset_pipe()
1388 pipe->state = SKL_PIPE_RESET; in skl_reset_pipe()
1399 msg.module_id = mcfg->id.module_id; in skl_set_module_params()
1400 msg.instance_id = mcfg->id.pvt_id; in skl_set_module_params()
1404 return skl_ipc_set_large_config(&skl->ipc, &msg, params); in skl_set_module_params()
1413 msg.module_id = mcfg->id.module_id; in skl_get_module_params()
1414 msg.instance_id = mcfg->id.pvt_id; in skl_get_module_params()
1418 return skl_ipc_get_large_config(&skl->ipc, &msg, ¶ms, &bytes); in skl_get_module_params()