Lines Matching refs:skl

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"
19 #include "skl-sst-ipc.h"
20 #include "skl.h"
23 #include "skl-topology.h"
39 void skl_dsp_set_astate_cfg(struct skl_dev *skl, u32 cnt, void *data)
47 skl_ipc_set_large_config(&skl->ipc, &msg, data);
251 int skl_init_dsp(struct skl_dev *skl)
254 struct hdac_bus *bus = skl_to_bus(skl);
266 mmio_base = pci_ioremap_bar(skl->pci, 4);
272 ops = skl_get_dsp_ops(skl->pci->device);
280 skl->fw_name, loader_ops,
281 &skl);
286 skl->dsp_ops = ops;
287 cores = &skl->cores;
316 int skl_free_dsp(struct skl_dev *skl)
318 struct hdac_bus *bus = skl_to_bus(skl);
323 skl->dsp_ops->cleanup(bus->dev, skl);
325 kfree(skl->cores.state);
326 kfree(skl->cores.usage_count);
328 if (skl->dsp->addr.lpe)
329 iounmap(skl->dsp->addr.lpe);
341 int skl_suspend_late_dsp(struct skl_dev *skl)
345 if (!skl)
348 dwork = &skl->d0i3.work;
351 if (skl->supend_active)
360 int skl_suspend_dsp(struct skl_dev *skl)
362 struct hdac_bus *bus = skl_to_bus(skl);
369 ret = skl_dsp_sleep(skl->dsp);
380 int skl_resume_dsp(struct skl_dev *skl)
382 struct hdac_bus *bus = skl_to_bus(skl);
394 if (skl->is_first_boot)
401 skl->enable_miscbdcge(skl->dev, false);
402 skl->clock_power_gating(skl->dev, false);
404 ret = skl_dsp_wake(skl->dsp);
405 skl->enable_miscbdcge(skl->dev, true);
406 skl->clock_power_gating(skl->dev, true);
410 if (skl->cfg.astate_cfg != NULL) {
411 skl_dsp_set_astate_cfg(skl, skl->cfg.astate_cfg->count,
412 skl->cfg.astate_cfg);
444 static void skl_set_base_module_format(struct skl_dev *skl,
461 dev_dbg(skl->dev, "bit_depth=%x valid_bd=%x ch_config=%x\n",
498 static u32 skl_get_node_id(struct skl_dev *skl,
555 static void skl_setup_cpr_gateway_cfg(struct skl_dev *skl,
563 cpr_mconfig->gtw_cfg.node_id = skl_get_node_id(skl, mconfig);
570 if (skl->nr_modules) {
594 dev_warn(skl->dev, "wrong connection type: %d\n",
620 int skl_dsp_set_dma_control(struct skl_dev *skl, u32 *caps,
653 err = skl_ipc_set_large_config(&skl->ipc, &msg, (u32 *)dma_ctrl);
660 static void skl_setup_out_format(struct skl_dev *skl,
678 dev_dbg(skl->dev, "copier out format chan=%d fre=%d bitdepth=%d\n",
687 static void skl_set_src_format(struct skl_dev *skl,
695 skl_set_base_module_format(skl, mconfig,
706 static void skl_set_updown_mixer_format(struct skl_dev *skl,
714 skl_set_base_module_format(skl, mconfig,
727 static void skl_set_copier_format(struct skl_dev *skl,
734 skl_set_base_module_format(skl, mconfig, base_cfg);
736 skl_setup_out_format(skl, mconfig, out_fmt);
737 skl_setup_cpr_gateway_cfg(skl, mconfig, cpr_mconfig);
745 static void skl_set_algo_format(struct skl_dev *skl,
751 skl_set_base_module_format(skl, mconfig, base_cfg);
769 static void skl_set_base_outfmt_format(struct skl_dev *skl,
777 skl_set_base_module_format(skl, mconfig, base_cfg);
778 skl_setup_out_format(skl, mconfig, out_fmt);
781 static u16 skl_get_module_param_size(struct skl_dev *skl,
829 static int skl_set_module_format(struct skl_dev *skl,
836 param_size = skl_get_module_param_size(skl, module_config);
846 skl_set_copier_format(skl, module_config, *param_data);
850 skl_set_src_format(skl, module_config, *param_data);
854 skl_set_updown_mixer_format(skl, module_config, *param_data);
858 skl_set_algo_format(skl, module_config, *param_data);
863 skl_set_base_outfmt_format(skl, module_config, *param_data);
868 skl_set_base_module_format(skl, module_config, *param_data);
872 skl_set_base_module_format(skl, module_config, *param_data);
877 dev_dbg(skl->dev, "Module type=%d id=%d config size: %d bytes\n",
979 int skl_init_module(struct skl_dev *skl,
987 dev_dbg(skl->dev, "%s: module_id = %d instance=%d\n", __func__,
991 dev_err(skl->dev, "Pipe not created state= %d pipe_id= %d\n",
996 ret = skl_set_module_format(skl, mconfig,
999 dev_err(skl->dev, "Failed to set module format ret=%d\n", ret);
1010 ret = skl_ipc_init_instance(&skl->ipc, &msg, param_data);
1012 dev_err(skl->dev, "Failed to init instance ret=%d\n", ret);
1021 static void skl_dump_bind_info(struct skl_dev *skl, struct skl_module_cfg
1024 dev_dbg(skl->dev, "%s: src module_id = %d src_instance=%d\n",
1026 dev_dbg(skl->dev, "%s: dst_module=%d dst_instance=%d\n", __func__,
1029 dev_dbg(skl->dev, "src_module state = %d dst module state = %d\n",
1038 int skl_unbind_modules(struct skl_dev *skl,
1050 skl_dump_bind_info(skl, src_mcfg, dst_mcfg);
1079 ret = skl_ipc_bind_unbind(&skl->ipc, &msg);
1117 int skl_bind_modules(struct skl_dev *skl,
1131 skl_dump_bind_info(skl, src_mcfg, dst_mcfg);
1163 ret = skl_set_module_params(skl, (void *)&pin_fmt,
1173 dev_dbg(skl->dev, "src queue = %d dst queue =%d\n",
1182 ret = skl_ipc_bind_unbind(&skl->ipc, &msg);
1198 static int skl_set_pipe_state(struct skl_dev *skl, struct skl_pipe *pipe,
1201 dev_dbg(skl->dev, "%s: pipe_state = %d\n", __func__, state);
1203 return skl_ipc_set_pipeline_state(&skl->ipc, pipe->ppl_id, state);
1212 int skl_create_pipeline(struct skl_dev *skl, struct skl_pipe *pipe)
1216 dev_dbg(skl->dev, "%s: pipe_id = %d\n", __func__, pipe->ppl_id);
1218 ret = skl_ipc_create_pipeline(&skl->ipc, pipe->memory_pages,
1222 dev_err(skl->dev, "Failed to create pipeline\n");
1237 int skl_delete_pipe(struct skl_dev *skl, struct skl_pipe *pipe)
1241 dev_dbg(skl->dev, "%s: pipe = %d\n", __func__, pipe->ppl_id);
1249 ret = skl_set_pipe_state(skl, pipe, PPL_PAUSED);
1251 dev_err(skl->dev, "Failed to stop pipeline\n");
1259 ret = skl_set_pipe_state(skl, pipe, PPL_RESET);
1261 dev_err(skl->dev, "Failed to reset pipe ret=%d\n", ret);
1267 ret = skl_ipc_delete_pipeline(&skl->ipc, pipe->ppl_id);
1269 dev_err(skl->dev, "Failed to delete pipeline\n");
1283 int skl_run_pipe(struct skl_dev *skl, struct skl_pipe *pipe)
1287 dev_dbg(skl->dev, "%s: pipe = %d\n", __func__, pipe->ppl_id);
1294 ret = skl_set_pipe_state(skl, pipe, PPL_PAUSED);
1296 dev_err(skl->dev, "Failed to pause pipe\n");
1302 ret = skl_set_pipe_state(skl, pipe, PPL_RUNNING);
1304 dev_err(skl->dev, "Failed to start pipe\n");
1317 int skl_stop_pipe(struct skl_dev *skl, struct skl_pipe *pipe)
1321 dev_dbg(skl->dev, "In %s pipe=%d\n", __func__, pipe->ppl_id);
1327 ret = skl_set_pipe_state(skl, pipe, PPL_PAUSED);
1329 dev_dbg(skl->dev, "Failed to stop pipe\n");
1342 int skl_reset_pipe(struct skl_dev *skl, struct skl_pipe *pipe)
1350 ret = skl_set_pipe_state(skl, pipe, PPL_RESET);
1352 dev_dbg(skl->dev, "Failed to reset pipe ret=%d\n", ret);
1362 int skl_set_module_params(struct skl_dev *skl, u32 *params, int size,
1372 return skl_ipc_set_large_config(&skl->ipc, &msg, params);
1375 int skl_get_module_params(struct skl_dev *skl, u32 *params, int size,
1386 return skl_ipc_get_large_config(&skl->ipc, &msg, &params, &bytes);