1/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2/*
3 * This file is provided under a dual BSD/GPLv2 license. When using or
4 * redistributing this file, you may do so under either license.
5 *
6 * Copyright(c) 2021 Intel Corporation. All rights reserved.
7 */
8
9#ifndef __SOUND_SOC_SOF_IPC3_PRIV_H
10#define __SOUND_SOC_SOF_IPC3_PRIV_H
11
12#include "sof-priv.h"
13
14/* IPC3 specific ops */
15extern const struct sof_ipc_pcm_ops ipc3_pcm_ops;
16extern const struct sof_ipc_tplg_ops ipc3_tplg_ops;
17extern const struct sof_ipc_tplg_control_ops tplg_ipc3_control_ops;
18extern const struct sof_ipc_fw_loader_ops ipc3_loader_ops;
19extern const struct sof_ipc_fw_tracing_ops ipc3_dtrace_ops;
20
21/* helpers for fw_ready and ext_manifest parsing */
22int sof_ipc3_get_ext_windows(struct snd_sof_dev *sdev,
23 const struct sof_ipc_ext_data_hdr *ext_hdr);
24int sof_ipc3_get_cc_info(struct snd_sof_dev *sdev,
25 const struct sof_ipc_ext_data_hdr *ext_hdr);
26int sof_ipc3_validate_fw_version(struct snd_sof_dev *sdev);
27
28/* dtrace position update */
29int ipc3_dtrace_posn_update(struct snd_sof_dev *sdev,
30 struct sof_ipc_dma_trace_posn *posn);
31/* RX handler backend */
32void sof_ipc3_do_rx_work(struct snd_sof_dev *sdev, struct sof_ipc_cmd_hdr *hdr, void *msg_buf);
33
34/* dtrace platform callback wrappers */
35static inline int sof_dtrace_host_init(struct snd_sof_dev *sdev,
36 struct snd_dma_buffer *dmatb,
37 struct sof_ipc_dma_trace_params_ext *dtrace_params)
38{
39 struct snd_sof_dsp_ops *dsp_ops = sdev->pdata->desc->ops;
40
41 if (dsp_ops->trace_init)
42 return dsp_ops->trace_init(sdev, dmatb, dtrace_params);
43
44 return 0;
45}
46
47static inline int sof_dtrace_host_release(struct snd_sof_dev *sdev)
48{
49 struct snd_sof_dsp_ops *dsp_ops = sdev->pdata->desc->ops;
50
51 if (dsp_ops->trace_release)
52 return dsp_ops->trace_release(sdev);
53
54 return 0;
55}
56
57static inline int sof_dtrace_host_trigger(struct snd_sof_dev *sdev, int cmd)
58{
59 struct snd_sof_dsp_ops *dsp_ops = sdev->pdata->desc->ops;
60
61 if (dsp_ops->trace_trigger)
62 return dsp_ops->trace_trigger(sdev, cmd);
63
64 return 0;
65}
66
67#endif
68

source code of linux/sound/soc/sof/ipc3-priv.h