| 1 |
|
| 2 |
|
| 3 | #ifndef __SOF_CLIENT_PROBES_H
|
| 4 | #define __SOF_CLIENT_PROBES_H
|
| 5 |
|
| 6 | struct snd_compr_stream;
|
| 7 | struct snd_compr_tstamp64;
|
| 8 | struct snd_compr_params;
|
| 9 | struct sof_client_dev;
|
| 10 | struct snd_soc_dai;
|
| 11 |
|
| 12 | |
| 13 | * Callbacks used on platforms where the control for audio is split between
|
| 14 | * DSP and host, like HDA.
|
| 15 |
|
| 16 | struct sof_probes_host_ops {
|
| 17 | int (*startup)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream,
|
| 18 | struct snd_soc_dai *dai, u32 *stream_id);
|
| 19 | int (*shutdown)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream,
|
| 20 | struct snd_soc_dai *dai);
|
| 21 | int (*set_params)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream,
|
| 22 | struct snd_compr_params *params,
|
| 23 | struct snd_soc_dai *dai);
|
| 24 | int (*trigger)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream,
|
| 25 | int cmd, struct snd_soc_dai *dai);
|
| 26 | int (*pointer)(struct sof_client_dev *cdev, struct snd_compr_stream *cstream,
|
| 27 | struct snd_compr_tstamp64 *tstamp,
|
| 28 | struct snd_soc_dai *dai);
|
| 29 | };
|
| 30 |
|
| 31 | struct sof_probe_point_desc {
|
| 32 | unsigned int buffer_id;
|
| 33 | unsigned int purpose;
|
| 34 | unsigned int stream_tag;
|
| 35 | } __packed;
|
| 36 |
|
| 37 | enum sof_probe_info_type {
|
| 38 | PROBES_INFO_ACTIVE_PROBES,
|
| 39 | PROBES_INFO_AVAILABE_PROBES,
|
| 40 | };
|
| 41 |
|
| 42 | struct sof_probes_ipc_ops {
|
| 43 | int (*init)(struct sof_client_dev *cdev, u32 stream_tag,
|
| 44 | size_t buffer_size);
|
| 45 | int (*deinit)(struct sof_client_dev *cdev);
|
| 46 | int (*points_info)(struct sof_client_dev *cdev,
|
| 47 | struct sof_probe_point_desc **desc,
|
| 48 | size_t *num_desc, enum sof_probe_info_type type);
|
| 49 | int (*point_print)(struct sof_client_dev *cdev, char *buf, size_t size,
|
| 50 | struct sof_probe_point_desc *desc);
|
| 51 | int (*points_add)(struct sof_client_dev *cdev,
|
| 52 | struct sof_probe_point_desc *desc,
|
| 53 | size_t num_desc);
|
| 54 | int (*points_remove)(struct sof_client_dev *cdev,
|
| 55 | unsigned int *buffer_id, size_t num_buffer_id);
|
| 56 | };
|
| 57 |
|
| 58 | extern const struct sof_probes_ipc_ops ipc3_probe_ops;
|
| 59 | extern const struct sof_probes_ipc_ops ipc4_probe_ops;
|
| 60 |
|
| 61 | struct sof_probes_priv {
|
| 62 | struct dentry *dfs_points;
|
| 63 | struct dentry *dfs_points_remove;
|
| 64 | u32 extractor_stream_tag;
|
| 65 | struct snd_soc_card card;
|
| 66 | void *ipc_priv;
|
| 67 |
|
| 68 | const struct sof_probes_host_ops *host_ops;
|
| 69 | const struct sof_probes_ipc_ops *ipc_ops;
|
| 70 | };
|
| 71 |
|
| 72 | #endif
|