Home
last modified time | relevance | path

Searched refs:ipc (Results 1 – 25 of 66) sorted by relevance

123

/sound/soc/intel/common/
Dsst-ipc.c32 static struct ipc_message *msg_get_empty(struct sst_generic_ipc *ipc) in msg_get_empty() argument
36 if (!list_empty(&ipc->empty_list)) { in msg_get_empty()
37 msg = list_first_entry(&ipc->empty_list, struct ipc_message, in msg_get_empty()
45 static int tx_wait_done(struct sst_generic_ipc *ipc, in tx_wait_done() argument
55 spin_lock_irqsave(&ipc->dsp->spinlock, flags); in tx_wait_done()
57 if (ipc->ops.shim_dbg != NULL) in tx_wait_done()
58 ipc->ops.shim_dbg(ipc, "message timeout"); in tx_wait_done()
73 list_add_tail(&msg->list, &ipc->empty_list); in tx_wait_done()
74 spin_unlock_irqrestore(&ipc->dsp->spinlock, flags); in tx_wait_done()
78 static int ipc_tx_message(struct sst_generic_ipc *ipc, in ipc_tx_message() argument
[all …]
Dsst-ipc.h68 int sst_ipc_tx_message_wait(struct sst_generic_ipc *ipc,
71 int sst_ipc_tx_message_nowait(struct sst_generic_ipc *ipc,
74 int sst_ipc_tx_message_nopm(struct sst_generic_ipc *ipc,
77 struct ipc_message *sst_ipc_reply_find_msg(struct sst_generic_ipc *ipc,
80 void sst_ipc_tx_msg_reply_complete(struct sst_generic_ipc *ipc,
83 int sst_ipc_init(struct sst_generic_ipc *ipc);
84 void sst_ipc_fini(struct sst_generic_ipc *ipc);
DMakefile3 snd-soc-sst-ipc-objs := sst-ipc.o
16 obj-$(CONFIG_SND_SOC_INTEL_SST) += snd-soc-sst-dsp.o snd-soc-sst-ipc.o
/sound/soc/intel/avs/
Dipc.c23 struct avs_ipc *ipc = adev->ipc; in avs_dsp_set_d0ix() local
27 if (ipc->in_d0ix == enable) in avs_dsp_set_d0ix()
34 atomic_inc(&ipc->d0ix_disable_depth); in avs_dsp_set_d0ix()
36 ipc->in_d0ix = false; in avs_dsp_set_d0ix()
40 ipc->in_d0ix = enable; in avs_dsp_set_d0ix()
46 if (atomic_read(&adev->ipc->d0ix_disable_depth)) in avs_dsp_schedule_d0ix()
49 mod_delayed_work(system_power_efficient_wq, &adev->ipc->d0ix_work, in avs_dsp_schedule_d0ix()
55 struct avs_ipc *ipc = container_of(work, struct avs_ipc, d0ix_work.work); in avs_dsp_d0ix_work() local
57 avs_dsp_set_d0ix(to_avs_dev(ipc->dev), true); in avs_dsp_d0ix_work()
62 struct avs_ipc *ipc = adev->ipc; in avs_dsp_wake_d0i0() local
[all …]
Dcore.c356 struct avs_ipc *ipc; in avs_bus_init() local
371 ipc = devm_kzalloc(dev, sizeof(*ipc), GFP_KERNEL); in avs_bus_init()
372 if (!ipc) in avs_bus_init()
374 ret = avs_ipc_init(ipc, dev); in avs_bus_init()
380 adev->ipc = ipc; in avs_bus_init()
485 avs_ipc_block(adev->ipc); in avs_pci_shutdown()
509 avs_ipc_block(adev->ipc); in avs_pci_remove()
579 avs_ipc_block(adev->ipc); in avs_suspend_common()
/sound/soc/intel/catpt/
Dipc.c16 void catpt_ipc_init(struct catpt_ipc *ipc, struct device *dev) in catpt_ipc_init() argument
18 ipc->dev = dev; in catpt_ipc_init()
19 ipc->ready = false; in catpt_ipc_init()
20 ipc->default_timeout = CATPT_IPC_TIMEOUT_MS; in catpt_ipc_init()
21 init_completion(&ipc->done_completion); in catpt_ipc_init()
22 init_completion(&ipc->busy_completion); in catpt_ipc_init()
23 spin_lock_init(&ipc->lock); in catpt_ipc_init()
24 mutex_init(&ipc->mutex); in catpt_ipc_init()
27 static int catpt_ipc_arm(struct catpt_ipc *ipc, struct catpt_fw_ready *config) in catpt_ipc_arm() argument
34 ipc->rx.data = devm_kzalloc(ipc->dev, config->outbox_size, GFP_KERNEL); in catpt_ipc_arm()
[all …]
/sound/soc/sof/
Dipc.c39 struct snd_sof_ipc *ipc = sdev->ipc; in sof_ipc_send_msg() local
43 if (ipc->disable_ipc_tx || sdev->fw_state != SOF_FW_BOOT_COMPLETE) in sof_ipc_send_msg()
53 msg = &ipc->msg; in sof_ipc_send_msg()
75 int sof_ipc_tx_message(struct snd_sof_ipc *ipc, void *msg_data, size_t msg_bytes, in sof_ipc_tx_message() argument
78 if (msg_bytes > ipc->max_payload_size || in sof_ipc_tx_message()
79 reply_bytes > ipc->max_payload_size) in sof_ipc_tx_message()
82 return ipc->ops->tx_msg(ipc->sdev, msg_data, msg_bytes, reply_data, in sof_ipc_tx_message()
92 int sof_ipc_tx_message_no_pm(struct snd_sof_ipc *ipc, void *msg_data, size_t msg_bytes, in sof_ipc_tx_message_no_pm() argument
95 if (msg_bytes > ipc->max_payload_size || in sof_ipc_tx_message_no_pm()
96 reply_bytes > ipc->max_payload_size) in sof_ipc_tx_message_no_pm()
[all …]
Dtrace.c9 if (!sdev->ipc->ops->fw_tracing) { in sof_fw_trace_init()
16 return sdev->ipc->ops->fw_tracing->init(sdev); in sof_fw_trace_init()
21 if (!sdev->fw_trace_is_supported || !sdev->ipc->ops->fw_tracing) in sof_fw_trace_free()
24 if (sdev->ipc->ops->fw_tracing->free) in sof_fw_trace_free()
25 sdev->ipc->ops->fw_tracing->free(sdev); in sof_fw_trace_free()
33 if (sdev->ipc->ops->fw_tracing->fw_crashed) in sof_fw_trace_fw_crashed()
34 sdev->ipc->ops->fw_tracing->fw_crashed(sdev); in sof_fw_trace_fw_crashed()
42 sdev->ipc->ops->fw_tracing->suspend(sdev, pm_state); in sof_fw_trace_suspend()
50 return sdev->ipc->ops->fw_tracing->resume(sdev); in sof_fw_trace_resume()
Dipc4.c285 static int ipc4_wait_tx_done(struct snd_sof_ipc *ipc, void *reply_data) in ipc4_wait_tx_done() argument
287 struct snd_sof_ipc_msg *msg = &ipc->msg; in ipc4_wait_tx_done()
289 struct snd_sof_dev *sdev = ipc->sdev; in ipc4_wait_tx_done()
298 snd_sof_handle_fw_exception(ipc->sdev, "IPC timeout"); in ipc4_wait_tx_done()
334 static int ipc4_tx_msg_unlocked(struct snd_sof_ipc *ipc, in ipc4_tx_msg_unlocked() argument
339 struct snd_sof_dev *sdev = ipc->sdev; in ipc4_tx_msg_unlocked()
342 if (msg_bytes > ipc->max_payload_size || reply_bytes > ipc->max_payload_size) in ipc4_tx_msg_unlocked()
356 return ipc4_wait_tx_done(ipc, reply_data); in ipc4_tx_msg_unlocked()
362 struct snd_sof_ipc *ipc = sdev->ipc; in sof_ipc4_tx_msg() local
372 mutex_lock(&ipc->tx_mutex); in sof_ipc4_tx_msg()
[all …]
DMakefile3 snd-sof-objs := core.o ops.o loader.o ipc.o pcm.o pm.o debug.o topology.o\
4 control.o trace.o iomem-utils.o sof-audio.o stream-ipc.o
27 snd-sof-ipc-flood-test-objs := sof-client-ipc-flood-test.o
28 snd-sof-ipc-msg-injector-objs := sof-client-ipc-msg-injector.o
44 obj-$(CONFIG_SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST) += snd-sof-ipc-flood-test.o
45 obj-$(CONFIG_SND_SOC_SOF_DEBUG_IPC_MSG_INJECTOR) += snd-sof-ipc-msg-injector.o
Dcontrol.c25 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in snd_sof_volume_get()
40 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in snd_sof_volume_put()
77 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in snd_sof_switch_get()
92 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in snd_sof_switch_put()
107 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in snd_sof_enum_get()
122 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in snd_sof_enum_put()
137 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in snd_sof_bytes_get()
152 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in snd_sof_bytes_put()
168 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in snd_sof_bytes_ext_put()
187 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in snd_sof_bytes_ext_volatile_get()
[all …]
Dipc3.c281 static int ipc3_wait_tx_done(struct snd_sof_ipc *ipc, void *reply_data) in ipc3_wait_tx_done() argument
283 struct snd_sof_ipc_msg *msg = &ipc->msg; in ipc3_wait_tx_done()
285 struct snd_sof_dev *sdev = ipc->sdev; in ipc3_wait_tx_done()
296 snd_sof_handle_fw_exception(ipc->sdev, "IPC timeout"); in ipc3_wait_tx_done()
324 static int ipc3_tx_msg_unlocked(struct snd_sof_ipc *ipc, in ipc3_tx_msg_unlocked() argument
329 struct snd_sof_dev *sdev = ipc->sdev; in ipc3_tx_msg_unlocked()
344 return ipc3_wait_tx_done(ipc, reply_data); in ipc3_tx_msg_unlocked()
350 struct snd_sof_ipc *ipc = sdev->ipc; in sof_ipc3_tx_msg() local
373 mutex_lock(&ipc->tx_mutex); in sof_ipc3_tx_msg()
375 ret = ipc3_tx_msg_unlocked(ipc, msg_data, msg_bytes, reply_data, reply_bytes); in sof_ipc3_tx_msg()
[all …]
Dloader.c48 ext_man_size = sdev->ipc->ops->fw_loader->parse_ext_manifest(sdev); in snd_sof_load_firmware_raw()
78 ret = sdev->ipc->ops->fw_loader->validate(sdev); in snd_sof_load_firmware_memcpy()
92 if (sdev->ipc->ops->fw_loader->load_fw_to_dsp) { in snd_sof_load_firmware_memcpy()
93 ret = sdev->ipc->ops->fw_loader->load_fw_to_dsp(sdev); in snd_sof_load_firmware_memcpy()
178 if (sdev->first_boot && sdev->ipc->ops->fw_loader->query_fw_configuration) in snd_sof_run_firmware()
179 return sdev->ipc->ops->fw_loader->query_fw_configuration(sdev); in snd_sof_run_firmware()
Dpm.c76 const struct sof_ipc_pm_ops *pm_ops = sdev->ipc->ops->pm; in sof_resume()
77 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in sof_resume()
194 const struct sof_ipc_pm_ops *pm_ops = sdev->ipc->ops->pm; in sof_suspend()
195 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in sof_suspend()
297 const struct sof_ipc_pm_ops *pm_ops = sdev->ipc->ops->pm; in snd_sof_dsp_power_down_notify()
Dsof-audio.c19 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in sof_reset_route_setup_status()
33 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in sof_widget_free()
85 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in sof_widget_setup()
172 const struct sof_ipc_tplg_ops *ipc_tplg_ops = sdev->ipc->ops->tplg; in sof_route_setup()
269 const struct sof_ipc_tplg_ops *ipc_tplg_ops = sdev->ipc->ops->tplg; in sof_unprepare_widgets_in_path()
301 const struct sof_ipc_tplg_ops *ipc_tplg_ops = sdev->ipc->ops->tplg; in sof_prepare_widgets_in_path()
488 const struct sof_ipc_tplg_ops *ipc_tplg_ops = sdev->ipc->ops->tplg; in sof_widget_list_setup()
631 const struct sof_ipc_pcm_ops *pcm_ops = sdev->ipc->ops->pcm; in sof_pcm_stream_free()
765 const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; in sof_dai_get_clk()
/sound/soc/intel/skylake/
Dskl-sst-ipc.c296 static void skl_ipc_tx_msg(struct sst_generic_ipc *ipc, struct ipc_message *msg) in skl_ipc_tx_msg() argument
301 sst_dsp_outbox_write(ipc->dsp, msg->tx.data, msg->tx.size); in skl_ipc_tx_msg()
302 sst_dsp_shim_write_unlocked(ipc->dsp, SKL_ADSP_REG_HIPCIE, in skl_ipc_tx_msg()
304 sst_dsp_shim_write_unlocked(ipc->dsp, SKL_ADSP_REG_HIPCI, in skl_ipc_tx_msg()
325 static struct ipc_message *skl_ipc_reply_get_msg(struct sst_generic_ipc *ipc, in skl_ipc_reply_get_msg() argument
331 if (list_empty(&ipc->rx_list)) { in skl_ipc_reply_get_msg()
332 dev_err(ipc->dev, "ipc: rx list is empty but received 0x%x\n", in skl_ipc_reply_get_msg()
337 msg = list_first_entry(&ipc->rx_list, struct ipc_message, list); in skl_ipc_reply_get_msg()
345 int skl_ipc_process_notification(struct sst_generic_ipc *ipc, in skl_ipc_process_notification() argument
348 struct skl_dev *skl = container_of(ipc, struct skl_dev, ipc); in skl_ipc_process_notification()
[all …]
Dskl-sst-ipc.h110 int skl_ipc_create_pipeline(struct sst_generic_ipc *ipc,
113 int skl_ipc_delete_pipeline(struct sst_generic_ipc *ipc, u8 instance_id);
115 int skl_ipc_set_pipeline_state(struct sst_generic_ipc *ipc,
118 int skl_ipc_save_pipeline(struct sst_generic_ipc *ipc,
121 int skl_ipc_restore_pipeline(struct sst_generic_ipc *ipc, u8 instance_id);
123 int skl_ipc_init_instance(struct sst_generic_ipc *ipc,
126 int skl_ipc_bind_unbind(struct sst_generic_ipc *ipc,
129 int skl_ipc_load_modules(struct sst_generic_ipc *ipc,
132 int skl_ipc_unload_modules(struct sst_generic_ipc *ipc,
135 int skl_ipc_set_dx(struct sst_generic_ipc *ipc,
[all …]
Dskl-ssp-clk.c77 union skl_clk_ctrl_ipc *ipc; in skl_fill_clk_ipc() local
83 ipc = &rcfg->dma_ctl_ipc; in skl_fill_clk_ipc()
89 ipc->sclk_fs.hdr.size = sizeof(struct skl_dmactrl_sclkfs_cfg) - in skl_fill_clk_ipc()
91 ipc->sclk_fs.sampling_frequency = wfmt->samples_per_sec; in skl_fill_clk_ipc()
92 ipc->sclk_fs.bit_depth = wfmt->bits_per_sample; in skl_fill_clk_ipc()
93 ipc->sclk_fs.valid_bit_depth = in skl_fill_clk_ipc()
95 ipc->sclk_fs.number_of_channels = wfmt->channels; in skl_fill_clk_ipc()
97 ipc->mclk.hdr.type = DMA_CLK_CONTROLS; in skl_fill_clk_ipc()
99 ipc->mclk.hdr.size = sizeof(struct skl_dmactrl_mclk_cfg) - in skl_fill_clk_ipc()
113 union skl_clk_ctrl_ipc *ipc; in skl_send_clk_dma_control() local
[all …]
Dcnl-sst.c234 ret = skl_ipc_set_dx(&cnl->ipc, CNL_INSTANCE_ID, in cnl_set_dsp_D0()
261 ret = skl_ipc_set_dx(&cnl->ipc, CNL_INSTANCE_ID, in cnl_set_dsp_D3()
316 struct sst_generic_ipc *ipc = &cnl->ipc; in cnl_dsp_irq_thread_handler() local
356 skl_ipc_process_reply(ipc, header); in cnl_dsp_irq_thread_handler()
359 skl_ipc_process_notification(ipc, header); in cnl_dsp_irq_thread_handler()
377 schedule_work(&ipc->kwork); in cnl_dsp_irq_thread_handler()
387 static void cnl_ipc_tx_msg(struct sst_generic_ipc *ipc, struct ipc_message *msg) in cnl_ipc_tx_msg() argument
392 sst_dsp_outbox_write(ipc->dsp, msg->tx.data, msg->tx.size); in cnl_ipc_tx_msg()
393 sst_dsp_shim_write_unlocked(ipc->dsp, CNL_ADSP_REG_HIPCIDD, in cnl_ipc_tx_msg()
395 sst_dsp_shim_write_unlocked(ipc->dsp, CNL_ADSP_REG_HIPCIDR, in cnl_ipc_tx_msg()
[all …]
Dcnl-sst-dsp.c262 void cnl_ipc_free(struct sst_generic_ipc *ipc) in cnl_ipc_free() argument
264 cnl_ipc_op_int_disable(ipc->dsp); in cnl_ipc_free()
265 sst_ipc_fini(ipc); in cnl_ipc_free()
Dbxt-sst.c73 ret = skl_sst_ipc_load_library(&skl->ipc, dma_id, i, true); in bxt_load_library()
314 ret = skl_ipc_set_d0ix(&skl->ipc, &msg); in bxt_set_dsp_D0i3()
375 ret = skl_ipc_set_d0ix(&skl->ipc, &msg); in bxt_set_dsp_D0i0()
463 ret = skl_ipc_set_dx(&skl->ipc, BXT_INSTANCE_ID, in bxt_set_dsp_D0()
495 ret = skl_ipc_set_dx(&skl->ipc, BXT_INSTANCE_ID, in bxt_set_dsp_D3()
578 skl->ipc.ops.check_dsp_lp_on = skl_ipc_check_D0i0; in bxt_sst_dsp_init()
623 skl_ipc_free(&skl->ipc); in bxt_sst_dsp_cleanup()
Dskl-sst.c200 ret = skl_ipc_set_dx(&skl->ipc, SKL_INSTANCE_ID, in skl_set_dsp_D0()
224 ret = skl_ipc_set_dx(&skl->ipc, SKL_INSTANCE_ID, SKL_BASE_FW_MODULE_ID, &dx); in skl_set_dsp_D3()
344 ret = skl_ipc_load_modules(&skl->ipc, SKL_NUM_MODULES, &mod_id); in skl_transfer_module()
346 ret = skl_sst_ipc_load_library(&skl->ipc, 0, table_id, false); in skl_transfer_module()
458 ret = skl_ipc_unload_modules(&skl->ipc, in skl_unload_module()
589 skl_ipc_free(&skl->ipc); in skl_sst_dsp_cleanup()
Dskl-messages.c47 skl_ipc_set_large_config(&skl->ipc, &msg, data); in skl_dsp_set_astate_cfg()
722 err = skl_ipc_set_large_config(&skl->ipc, &msg, (u32 *)dma_ctrl); in skl_dsp_set_dma_control()
1057 ret = skl_ipc_init_instance(&skl->ipc, &msg, param_data); in skl_init_module()
1126 ret = skl_ipc_bind_unbind(&skl->ipc, &msg); in skl_unbind_modules()
1216 ret = skl_ipc_bind_unbind(&skl->ipc, &msg); in skl_bind_modules()
1237 return skl_ipc_set_pipeline_state(&skl->ipc, pipe->ppl_id, state); in skl_set_pipe_state()
1252 ret = skl_ipc_create_pipeline(&skl->ipc, pipe->memory_pages, in skl_create_pipeline()
1301 ret = skl_ipc_delete_pipeline(&skl->ipc, pipe->ppl_id); in skl_delete_pipe()
1406 return skl_ipc_set_large_config(&skl->ipc, &msg, params); in skl_set_module_params()
1420 return skl_ipc_get_large_config(&skl->ipc, &msg, &params, &bytes); in skl_get_module_params()
/sound/soc/sof/imx/
Dimx8ulp.c84 static void imx8ulp_dsp_handle_reply(struct imx_dsp_ipc *ipc) in imx8ulp_dsp_handle_reply() argument
86 struct imx8ulp_priv *priv = imx_dsp_get_data(ipc); in imx8ulp_dsp_handle_reply()
96 static void imx8ulp_dsp_handle_request(struct imx_dsp_ipc *ipc) in imx8ulp_dsp_handle_request() argument
98 struct imx8ulp_priv *priv = imx_dsp_get_data(ipc); in imx8ulp_dsp_handle_request()
Dimx8m.c73 static void imx8m_dsp_handle_reply(struct imx_dsp_ipc *ipc) in imx8m_dsp_handle_reply() argument
75 struct imx8m_priv *priv = imx_dsp_get_data(ipc); in imx8m_dsp_handle_reply()
83 static void imx8m_dsp_handle_request(struct imx_dsp_ipc *ipc) in imx8m_dsp_handle_request() argument
85 struct imx8m_priv *priv = imx_dsp_get_data(ipc); in imx8m_dsp_handle_request()

123