Lines Matching defs:sdev
21 static void ipc_trace_message(struct snd_sof_dev *sdev, u32 msg_id);
22 static void ipc_stream_message(struct snd_sof_dev *sdev, u32 msg_cmd);
30 struct snd_sof_dev *sdev;
209 struct snd_sof_dev *sdev = ipc->sdev;
215 msecs_to_jiffies(sdev->ipc_timeout));
218 dev_err(sdev->dev, "error: ipc timed out for 0x%x size %d\n",
220 snd_sof_handle_fw_exception(ipc->sdev);
225 dev_err(sdev->dev, "error: ipc error for 0x%x size %zu\n",
228 ipc_log_header(sdev->dev, "ipc tx succeeded", hdr->cmd);
244 struct snd_sof_dev *sdev = ipc->sdev;
255 spin_lock_irq(&sdev->ipc_lock);
269 sdev->msg = msg;
271 ret = snd_sof_dsp_send_msg(sdev, msg);
276 spin_unlock_irq(&sdev->ipc_lock);
279 dev_err_ratelimited(sdev->dev,
285 ipc_log_header(sdev->dev, "ipc tx", msg->header);
305 ret = snd_sof_dsp_set_power_state(ipc->sdev, &target_state);
307 dev_err(ipc->sdev->dev, "error: resuming DSP %d\n", ret);
344 void snd_sof_ipc_reply(struct snd_sof_dev *sdev, u32 msg_id)
346 struct snd_sof_ipc_msg *msg = &sdev->ipc->msg;
349 dev_dbg(sdev->dev,
362 void snd_sof_ipc_msgs_rx(struct snd_sof_dev *sdev)
369 snd_sof_ipc_msg_data(sdev, NULL, &hdr, sizeof(hdr));
370 ipc_log_header(sdev->dev, "ipc rx", hdr.cmd);
378 dev_err(sdev->dev, "error: ipc reply unknown\n");
382 if (sdev->fw_state == SOF_FW_BOOT_IN_PROGRESS) {
383 err = sof_ops(sdev)->fw_ready(sdev, cmd);
385 sdev->fw_state = SOF_FW_BOOT_READY_FAILED;
387 sdev->fw_state = SOF_FW_BOOT_COMPLETE;
390 wake_up(&sdev->boot_wait);
400 ipc_stream_message(sdev, hdr.cmd);
403 ipc_trace_message(sdev, type);
406 dev_err(sdev->dev, "error: unknown DSP message 0x%x\n", cmd);
410 ipc_log_header(sdev->dev, "ipc rx done", hdr.cmd);
418 static void ipc_trace_message(struct snd_sof_dev *sdev, u32 msg_id)
425 snd_sof_ipc_msg_data(sdev, NULL, &posn, sizeof(posn));
426 snd_sof_trace_update_pos(sdev, &posn);
429 dev_err(sdev->dev, "error: unhandled trace message %x\n",
439 static void ipc_period_elapsed(struct snd_sof_dev *sdev, u32 msg_id)
441 struct snd_soc_component *scomp = sdev->component;
449 dev_err(sdev->dev,
456 snd_sof_ipc_msg_data(sdev, stream->substream, &posn, sizeof(posn));
458 dev_vdbg(sdev->dev, "posn : host 0x%llx dai 0x%llx wall 0x%llx\n",
469 static void ipc_xrun(struct snd_sof_dev *sdev, u32 msg_id)
471 struct snd_soc_component *scomp = sdev->component;
479 dev_err(sdev->dev, "error: XRUN for unknown stream, msg_id %d\n",
485 snd_sof_ipc_msg_data(sdev, stream->substream, &posn, sizeof(posn));
487 dev_dbg(sdev->dev, "posn XRUN: host %llx comp %d size %d\n",
498 static void ipc_stream_message(struct snd_sof_dev *sdev, u32 msg_cmd)
506 ipc_period_elapsed(sdev, msg_id);
509 ipc_xrun(sdev, msg_id);
512 dev_err(sdev->dev, "error: unhandled stream message %x\n",
523 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
533 err = sof_ipc_tx_message(sdev->ipc,
537 dev_err(sdev->dev, "error: failed to get stream %d position\n",
578 static int sof_set_get_large_ctrl_data(struct snd_sof_dev *sdev,
614 mutex_lock(&sdev->ipc->tx_mutex);
628 err = sof_ipc_tx_message_unlocked(sdev->ipc,
643 mutex_unlock(&sdev->ipc->tx_mutex);
660 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
661 struct sof_ipc_fw_ready *ready = &sdev->fw_ready;
673 snd_sof_dsp_block_write(sdev, sdev->mmio_bar,
678 snd_sof_dsp_block_read(sdev, sdev->mmio_bar,
723 err = sof_ipc_tx_message(sdev->ipc, cdata->rhdr.hdr.cmd, cdata,
728 dev_err(sdev->dev, "error: set/get ctrl ipc comp %d\n",
735 dev_dbg(sdev->dev, "large ipc size %u, control size %u\n",
740 dev_err(sdev->dev, "error: incompatible FW ABI version\n");
744 err = sof_set_get_large_ctrl_data(sdev, cdata, &sparams, send);
747 dev_err(sdev->dev, "error: set/get large ctrl ipc comp %d\n",
758 int snd_sof_dsp_mailbox_init(struct snd_sof_dev *sdev, u32 dspbox,
762 sdev->dsp_box.offset = dspbox;
763 sdev->dsp_box.size = dspbox_size;
764 sdev->host_box.offset = hostbox;
765 sdev->host_box.size = hostbox_size;
770 int snd_sof_ipc_valid(struct snd_sof_dev *sdev)
772 struct sof_ipc_fw_ready *ready = &sdev->fw_ready;
775 dev_info(sdev->dev,
778 dev_info(sdev->dev,
786 dev_err(sdev->dev, "error: incompatible FW ABI version\n");
792 dev_warn(sdev->dev, "warn: FW ABI is more recent than kernel\n");
794 dev_err(sdev->dev, "error: FW ABI is more recent than kernel\n");
800 dev_info(sdev->dev,
815 memcpy(&sdev->fw_version, v, sizeof(*v));
821 struct snd_sof_ipc *snd_sof_ipc_init(struct snd_sof_dev *sdev)
826 ipc = devm_kzalloc(sdev->dev, sizeof(*ipc), GFP_KERNEL);
831 ipc->sdev = sdev;
838 msg->msg_data = devm_kzalloc(sdev->dev, SOF_IPC_MSG_MAX_SIZE,
843 msg->reply_data = devm_kzalloc(sdev->dev, SOF_IPC_MSG_MAX_SIZE,
854 void snd_sof_ipc_free(struct snd_sof_dev *sdev)
856 struct snd_sof_ipc *ipc = sdev->ipc;