13dc0d709SPeter Ujfalusi /* SPDX-License-Identifier: GPL-2.0-only */ 23dc0d709SPeter Ujfalusi 33dc0d709SPeter Ujfalusi #ifndef __SOF_CLIENT_PROBES_H 43dc0d709SPeter Ujfalusi #define __SOF_CLIENT_PROBES_H 53dc0d709SPeter Ujfalusi 63dc0d709SPeter Ujfalusi struct snd_compr_stream; 73dc0d709SPeter Ujfalusi struct snd_compr_tstamp; 83dc0d709SPeter Ujfalusi struct snd_compr_params; 93dc0d709SPeter Ujfalusi struct sof_client_dev; 103dc0d709SPeter Ujfalusi struct snd_soc_dai; 113dc0d709SPeter Ujfalusi 123dc0d709SPeter Ujfalusi /* 133dc0d709SPeter Ujfalusi * Callbacks used on platforms where the control for audio is split between 143dc0d709SPeter Ujfalusi * DSP and host, like HDA. 153dc0d709SPeter Ujfalusi */ 163dc0d709SPeter Ujfalusi struct sof_probes_host_ops { 17bdcf7926SPierre-Louis Bossart int (*startup)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream, 183dc0d709SPeter Ujfalusi struct snd_soc_dai *dai, u32 *stream_id); 19bdcf7926SPierre-Louis Bossart int (*shutdown)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream, 203dc0d709SPeter Ujfalusi struct snd_soc_dai *dai); 213dc0d709SPeter Ujfalusi int (*set_params)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream, 223dc0d709SPeter Ujfalusi struct snd_compr_params *params, 233dc0d709SPeter Ujfalusi struct snd_soc_dai *dai); 243dc0d709SPeter Ujfalusi int (*trigger)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream, 253dc0d709SPeter Ujfalusi int cmd, struct snd_soc_dai *dai); 263dc0d709SPeter Ujfalusi int (*pointer)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream, 273dc0d709SPeter Ujfalusi struct snd_compr_tstamp *tstamp, 283dc0d709SPeter Ujfalusi struct snd_soc_dai *dai); 293dc0d709SPeter Ujfalusi }; 303dc0d709SPeter Ujfalusi 31*ccf06b14SJyri Sarha struct sof_probe_point_desc { 32*ccf06b14SJyri Sarha unsigned int buffer_id; 33*ccf06b14SJyri Sarha unsigned int purpose; 34*ccf06b14SJyri Sarha unsigned int stream_tag; 35*ccf06b14SJyri Sarha } __packed; 36*ccf06b14SJyri Sarha 37*ccf06b14SJyri Sarha struct sof_probes_ipc_ops { 38*ccf06b14SJyri Sarha int (*init)(struct sof_client_dev *cdev, u32 stream_tag, 39*ccf06b14SJyri Sarha size_t buffer_size); 40*ccf06b14SJyri Sarha int (*deinit)(struct sof_client_dev *cdev); 41*ccf06b14SJyri Sarha int (*points_info)(struct sof_client_dev *cdev, 42*ccf06b14SJyri Sarha struct sof_probe_point_desc **desc, 43*ccf06b14SJyri Sarha size_t *num_desc); 44*ccf06b14SJyri Sarha int (*points_add)(struct sof_client_dev *cdev, 45*ccf06b14SJyri Sarha struct sof_probe_point_desc *desc, 46*ccf06b14SJyri Sarha size_t num_desc); 47*ccf06b14SJyri Sarha int (*points_remove)(struct sof_client_dev *cdev, 48*ccf06b14SJyri Sarha unsigned int *buffer_id, size_t num_buffer_id); 49*ccf06b14SJyri Sarha }; 50*ccf06b14SJyri Sarha 51*ccf06b14SJyri Sarha extern const struct sof_probes_ipc_ops ipc3_probe_ops; 523dc0d709SPeter Ujfalusi #endif 53