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