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 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 */ 15 extern const struct sof_ipc_pcm_ops ipc3_pcm_ops; 16 extern const struct sof_ipc_tplg_ops ipc3_tplg_ops; 17 extern const struct sof_ipc_tplg_control_ops tplg_ipc3_control_ops; 18 extern const struct sof_ipc_fw_loader_ops ipc3_loader_ops; 19 extern const struct sof_ipc_fw_tracing_ops ipc3_dtrace_ops; 20 21 /* helpers for fw_ready and ext_manifest parsing */ 22 int sof_ipc3_get_ext_windows(struct snd_sof_dev *sdev, 23 const struct sof_ipc_ext_data_hdr *ext_hdr); 24 int sof_ipc3_get_cc_info(struct snd_sof_dev *sdev, 25 const struct sof_ipc_ext_data_hdr *ext_hdr); 26 int sof_ipc3_validate_fw_version(struct snd_sof_dev *sdev); 27 28 /* dtrace position update */ 29 int ipc3_dtrace_posn_update(struct snd_sof_dev *sdev, 30 struct sof_ipc_dma_trace_posn *posn); 31 /* RX handler backend */ 32 void 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 */ 35 static 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 const 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 47 static inline int sof_dtrace_host_release(struct snd_sof_dev *sdev) 48 { 49 const 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 57 static inline int sof_dtrace_host_trigger(struct snd_sof_dev *sdev, int cmd) 58 { 59 const 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