| /* SPDX-License-Identifier: GPL-2.0-only */ |
| |
| #ifndef __SOF_CLIENT_PROBES_H |
| #define __SOF_CLIENT_PROBES_H |
| |
| struct snd_compr_stream; |
| struct snd_compr_tstamp; |
| struct snd_compr_params; |
| struct sof_client_dev; |
| struct snd_soc_dai; |
| |
| /* |
| * Callbacks used on platforms where the control for audio is split between |
| * DSP and host, like HDA. |
| */ |
| struct sof_probes_host_ops { |
| int (*startup)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream, |
| struct snd_soc_dai *dai, u32 *stream_id); |
| int (*shutdown)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream, |
| struct snd_soc_dai *dai); |
| int (*set_params)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream, |
| struct snd_compr_params *params, |
| struct snd_soc_dai *dai); |
| int (*trigger)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream, |
| int cmd, struct snd_soc_dai *dai); |
| int (*pointer)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream, |
| struct snd_compr_tstamp *tstamp, |
| struct snd_soc_dai *dai); |
| }; |
| |
| struct sof_probe_point_desc { |
| unsigned int buffer_id; |
| unsigned int purpose; |
| unsigned int stream_tag; |
| } __packed; |
| |
| struct sof_probes_ipc_ops { |
| int (*init)(struct sof_client_dev *cdev, u32 stream_tag, |
| size_t buffer_size); |
| int (*deinit)(struct sof_client_dev *cdev); |
| int (*points_info)(struct sof_client_dev *cdev, |
| struct sof_probe_point_desc **desc, |
| size_t *num_desc); |
| int (*points_add)(struct sof_client_dev *cdev, |
| struct sof_probe_point_desc *desc, |
| size_t num_desc); |
| int (*points_remove)(struct sof_client_dev *cdev, |
| unsigned int *buffer_id, size_t num_buffer_id); |
| }; |
| |
| extern const struct sof_probes_ipc_ops ipc3_probe_ops; |
| extern const struct sof_probes_ipc_ops ipc4_probe_ops; |
| |
| struct sof_probes_priv { |
| struct dentry *dfs_points; |
| struct dentry *dfs_points_remove; |
| u32 extractor_stream_tag; |
| struct snd_soc_card card; |
| void *ipc_priv; |
| |
| const struct sof_probes_host_ops *host_ops; |
| const struct sof_probes_ipc_ops *ipc_ops; |
| }; |
| |
| #endif |