1// SPDX-License-Identifier: GPL-2.0-only
2//
3// Copyright(c) 2022 Intel Corporation. All rights reserved.
4
5#include "sof-priv.h"
6
7int 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
21void 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
30void 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
39void 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
47int 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

source code of linux/sound/soc/sof/trace.c