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 | |
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 |