1 // SPDX-License-Identifier: GPL-2.0-only 2 // 3 // Copyright(c) 2022 Intel Corporation 4 5 #include "sof-priv.h" 6 7 int sof_fw_trace_init(struct snd_sof_dev *sdev) 8 { 9 const struct sof_ipc_fw_tracing_ops *fw_tracing = sof_ipc_get_ops(sdev, fw_tracing); 10 11 if (!fw_tracing) { 12 dev_info(sdev->dev, "Firmware tracing is not available\n"); 13 sdev->fw_trace_is_supported = false; 14 15 return 0; 16 } 17 18 return fw_tracing->init(sdev); 19 } 20 21 void sof_fw_trace_free(struct snd_sof_dev *sdev) 22 { 23 if (!sdev->fw_trace_is_supported) 24 return; 25 26 if (sdev->ipc->ops->fw_tracing->free) 27 sdev->ipc->ops->fw_tracing->free(sdev); 28 } 29 30 void sof_fw_trace_fw_crashed(struct snd_sof_dev *sdev) 31 { 32 if (!sdev->fw_trace_is_supported) 33 return; 34 35 if (sdev->ipc->ops->fw_tracing->fw_crashed) 36 sdev->ipc->ops->fw_tracing->fw_crashed(sdev); 37 } 38 39 void sof_fw_trace_suspend(struct snd_sof_dev *sdev, pm_message_t pm_state) 40 { 41 if (!sdev->fw_trace_is_supported) 42 return; 43 44 sdev->ipc->ops->fw_tracing->suspend(sdev, pm_state); 45 } 46 47 int sof_fw_trace_resume(struct snd_sof_dev *sdev) 48 { 49 if (!sdev->fw_trace_is_supported) 50 return 0; 51 52 return sdev->ipc->ops->fw_tracing->resume(sdev); 53 } 54