xref: /OK3568_Linux_fs/kernel/sound/soc/sof/probe.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * This file is provided under a dual BSD/GPLv2 license.  When using or
4*4882a593Smuzhiyun  * redistributing this file, you may do so under either license.
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Copyright(c) 2019-2020 Intel Corporation. All rights reserved.
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  * Author: Cezary Rojewski <cezary.rojewski@intel.com>
9*4882a593Smuzhiyun  */
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #ifndef __SOF_PROBE_H
12*4882a593Smuzhiyun #define __SOF_PROBE_H
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #include <sound/sof/header.h>
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun struct snd_sof_dev;
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #define SOF_PROBE_INVALID_NODE_ID UINT_MAX
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun struct sof_probe_dma {
21*4882a593Smuzhiyun 	unsigned int stream_tag;
22*4882a593Smuzhiyun 	unsigned int dma_buffer_size;
23*4882a593Smuzhiyun } __packed;
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun enum sof_connection_purpose {
26*4882a593Smuzhiyun 	SOF_CONNECTION_PURPOSE_EXTRACT = 1,
27*4882a593Smuzhiyun 	SOF_CONNECTION_PURPOSE_INJECT,
28*4882a593Smuzhiyun };
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun struct sof_probe_point_desc {
31*4882a593Smuzhiyun 	unsigned int buffer_id;
32*4882a593Smuzhiyun 	unsigned int purpose;
33*4882a593Smuzhiyun 	unsigned int stream_tag;
34*4882a593Smuzhiyun } __packed;
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun struct sof_ipc_probe_dma_add_params {
37*4882a593Smuzhiyun 	struct sof_ipc_cmd_hdr hdr;
38*4882a593Smuzhiyun 	unsigned int num_elems;
39*4882a593Smuzhiyun 	struct sof_probe_dma dma[];
40*4882a593Smuzhiyun } __packed;
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun struct sof_ipc_probe_info_params {
43*4882a593Smuzhiyun 	struct sof_ipc_reply rhdr;
44*4882a593Smuzhiyun 	unsigned int num_elems;
45*4882a593Smuzhiyun 	union {
46*4882a593Smuzhiyun 		struct sof_probe_dma dma[0];
47*4882a593Smuzhiyun 		struct sof_probe_point_desc desc[0];
48*4882a593Smuzhiyun 	};
49*4882a593Smuzhiyun } __packed;
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun struct sof_ipc_probe_dma_remove_params {
52*4882a593Smuzhiyun 	struct sof_ipc_cmd_hdr hdr;
53*4882a593Smuzhiyun 	unsigned int num_elems;
54*4882a593Smuzhiyun 	unsigned int stream_tag[];
55*4882a593Smuzhiyun } __packed;
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun struct sof_ipc_probe_point_add_params {
58*4882a593Smuzhiyun 	struct sof_ipc_cmd_hdr hdr;
59*4882a593Smuzhiyun 	unsigned int num_elems;
60*4882a593Smuzhiyun 	struct sof_probe_point_desc desc[];
61*4882a593Smuzhiyun } __packed;
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun struct sof_ipc_probe_point_remove_params {
64*4882a593Smuzhiyun 	struct sof_ipc_cmd_hdr hdr;
65*4882a593Smuzhiyun 	unsigned int num_elems;
66*4882a593Smuzhiyun 	unsigned int buffer_id[];
67*4882a593Smuzhiyun } __packed;
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun int sof_ipc_probe_init(struct snd_sof_dev *sdev,
70*4882a593Smuzhiyun 		u32 stream_tag, size_t buffer_size);
71*4882a593Smuzhiyun int sof_ipc_probe_deinit(struct snd_sof_dev *sdev);
72*4882a593Smuzhiyun int sof_ipc_probe_dma_info(struct snd_sof_dev *sdev,
73*4882a593Smuzhiyun 		struct sof_probe_dma **dma, size_t *num_dma);
74*4882a593Smuzhiyun int sof_ipc_probe_dma_add(struct snd_sof_dev *sdev,
75*4882a593Smuzhiyun 		struct sof_probe_dma *dma, size_t num_dma);
76*4882a593Smuzhiyun int sof_ipc_probe_dma_remove(struct snd_sof_dev *sdev,
77*4882a593Smuzhiyun 		unsigned int *stream_tag, size_t num_stream_tag);
78*4882a593Smuzhiyun int sof_ipc_probe_points_info(struct snd_sof_dev *sdev,
79*4882a593Smuzhiyun 		struct sof_probe_point_desc **desc, size_t *num_desc);
80*4882a593Smuzhiyun int sof_ipc_probe_points_add(struct snd_sof_dev *sdev,
81*4882a593Smuzhiyun 		struct sof_probe_point_desc *desc, size_t num_desc);
82*4882a593Smuzhiyun int sof_ipc_probe_points_remove(struct snd_sof_dev *sdev,
83*4882a593Smuzhiyun 		unsigned int *buffer_id, size_t num_buffer_id);
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #endif
86