Lines Matching defs:sdev
106 struct snd_sof_dev *sdev;
120 struct snd_sof_dev *sdev;
192 struct snd_sof_dev *sdev = core_data->sdev;
193 struct sof_mtrace_priv *priv = sdev->fw_trace_data;
242 dev_dbg(sdev->dev,
248 sof_mailbox_read(sdev, log_buffer_offset + read_ptr, log_buffer, avail);
251 sof_mailbox_read(sdev, log_buffer_offset + read_ptr, log_buffer,
255 sof_mailbox_read(sdev, log_buffer_offset,
274 sof_mailbox_write(sdev, core_data->slot_offset, &read_ptr, sizeof(read_ptr));
392 static int mtrace_debugfs_create(struct snd_sof_dev *sdev)
394 struct sof_mtrace_priv *priv = sdev->fw_trace_data;
399 dfs_root = debugfs_create_dir("mtrace", sdev->debugfs_root);
412 for (i = 0; i < sdev->num_cores; i++) {
421 static int ipc4_mtrace_enable(struct snd_sof_dev *sdev)
423 struct sof_mtrace_priv *priv = sdev->fw_trace_data;
424 const struct sof_ipc_ops *iops = sdev->ipc->ops;
444 ret = iops->set_get_data(sdev, &msg, msg.data_size, true);
456 ret = iops->set_get_data(sdev, &msg, msg.data_size, true);
467 static void ipc4_mtrace_disable(struct snd_sof_dev *sdev)
469 struct sof_mtrace_priv *priv = sdev->fw_trace_data;
470 const struct sof_ipc_ops *iops = sdev->ipc->ops;
487 iops->set_get_data(sdev, &msg, msg.data_size, true);
491 for (i = 0; i < sdev->num_cores; i++) {
506 static void sof_mtrace_find_core_slots(struct snd_sof_dev *sdev)
508 struct sof_mtrace_priv *priv = sdev->fw_trace_data;
515 slot_desc_type_offset = sdev->debug_box.offset;
517 sof_mailbox_read(sdev, slot_desc_type_offset, &type, sizeof(type));
522 if (core >= sdev->num_cores) {
523 dev_dbg(sdev->dev, "core%u is invalid for slot%d\n",
535 core_data->slot_offset = sdev->debug_box.offset;
537 dev_dbg(sdev->dev, "slot%d is used for core%u\n", i, core);
539 sof_ipc4_mtrace_update_pos(sdev, core);
543 dev_dbg(sdev->dev, "slot%d is not a log slot (%#x)\n", i, type);
548 static int ipc4_mtrace_init(struct snd_sof_dev *sdev)
550 struct sof_ipc4_fw_data *ipc4_data = sdev->private;
554 if (sdev->fw_trace_data) {
555 dev_err(sdev->dev, "fw_trace_data has been already allocated\n");
561 sdev->fw_trace_is_supported = false;
565 priv = devm_kzalloc(sdev->dev, struct_size(priv, cores, sdev->num_cores),
570 sdev->fw_trace_data = priv;
578 for (i = 0; i < sdev->num_cores; i++) {
583 core_data->sdev = sdev;
587 ret = ipc4_mtrace_enable(sdev);
593 sdev->fw_trace_is_supported = false;
594 dev_dbg(sdev->dev, "initialization failed, fw tracing is disabled\n");
598 sof_mtrace_find_core_slots(sdev);
600 ret = mtrace_debugfs_create(sdev);
602 ipc4_mtrace_disable(sdev);
607 static void ipc4_mtrace_free(struct snd_sof_dev *sdev)
609 ipc4_mtrace_disable(sdev);
612 static int sof_ipc4_mtrace_update_pos_all_cores(struct snd_sof_dev *sdev)
616 for (i = 0; i < sdev->num_cores; i++)
617 sof_ipc4_mtrace_update_pos(sdev, i);
622 int sof_ipc4_mtrace_update_pos(struct snd_sof_dev *sdev, int core)
624 struct sof_mtrace_priv *priv = sdev->fw_trace_data;
627 if (!sdev->fw_trace_is_supported ||
631 if (core >= sdev->num_cores)
642 sof_mailbox_read(sdev, core_data->slot_offset + sizeof(u32),
647 dev_dbg(sdev->dev, "core%d, host read: %#x, dsp write: %#x",
655 static void ipc4_mtrace_fw_crashed(struct snd_sof_dev *sdev)
662 sof_ipc4_mtrace_update_pos_all_cores(sdev);
665 static int ipc4_mtrace_resume(struct snd_sof_dev *sdev)
667 return ipc4_mtrace_enable(sdev);
670 static void ipc4_mtrace_suspend(struct snd_sof_dev *sdev, pm_message_t pm_state)
672 ipc4_mtrace_disable(sdev);