File Index
Files and directories
Sign in
FILE

path.h

File preview with syntax highlighting.

linux-6.19.14/sound/soc/intel/avs/path.h C
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * Copyright(c) 2021 Intel Corporation
 4 *
 5 * Authors: Cezary Rojewski <cezary.rojewski@intel.com>
 6 *          Amadeusz Slawinski <amadeuszx.slawinski@linux.intel.com>
 7 */
 8
 9#ifndef __SOUND_SOC_INTEL_AVS_PATH_H
10#define __SOUND_SOC_INTEL_AVS_PATH_H
11
12#include <linux/list.h>
13#include "avs.h"
14#include "topology.h"
15
16#define AVS_COND_TYPE_NONE	0
17#define AVS_COND_TYPE_AECREF	1
18
19struct avs_path {
20	u32 dma_id;
21	struct list_head ppl_list;
22	u32 state;
23
24	/* condpath navigation for standard paths */
25	struct list_head source_list;
26	struct list_head sink_list;
27
28	/* conditional path fields */
29	struct avs_path *source;
30	struct avs_path *sink;
31	struct list_head source_node;
32	struct list_head sink_node;
33
34	struct avs_tplg_path *template;
35	struct avs_dev *owner;
36	/* device path management */
37	struct list_head node;
38};
39
40struct avs_path_pipeline {
41	u8 instance_id;
42	struct list_head mod_list;
43	struct list_head binding_list;
44
45	struct avs_tplg_pipeline *template;
46	struct avs_path *owner;
47	/* path pipelines management */
48	struct list_head node;
49};
50
51struct avs_path_module {
52	u16 module_id;
53	u8 instance_id;
54	union avs_gtw_attributes gtw_attrs;
55
56	struct avs_tplg_module *template;
57	struct avs_path_pipeline *owner;
58	/* pipeline modules management */
59	struct list_head node;
60};
61
62struct avs_path_binding {
63	struct avs_path_module *source;
64	u8 source_pin;
65	struct avs_path_module *sink;
66	u8 sink_pin;
67
68	struct avs_tplg_binding *template;
69	struct avs_path_pipeline *owner;
70	/* pipeline bindings management */
71	struct list_head node;
72};
73
74void avs_path_free(struct avs_path *path);
75struct avs_path *avs_path_create(struct avs_dev *adev, u32 dma_id,
76				 struct avs_tplg_path_template *template,
77				 struct snd_pcm_hw_params *fe_params,
78				 struct snd_pcm_hw_params *be_params);
79int avs_path_bind(struct avs_path *path);
80int avs_path_unbind(struct avs_path *path);
81int avs_path_reset(struct avs_path *path);
82int avs_path_pause(struct avs_path *path);
83int avs_path_run(struct avs_path *path, int trigger);
84
85int avs_path_set_constraint(struct avs_dev *adev, struct avs_tplg_path_template *template,
86			    struct snd_pcm_hw_constraint_list *rate_list,
87			    struct snd_pcm_hw_constraint_list *channels_list,
88			    struct snd_pcm_hw_constraint_list *sample_bits_list);
89
90int avs_peakvol_set_volume(struct avs_dev *adev, struct avs_path_module *mod,
91			   struct soc_mixer_control *mc, long *input);
92int avs_peakvol_set_mute(struct avs_dev *adev, struct avs_path_module *mod,
93			 struct soc_mixer_control *mc, long *input);
94
95#endif
~/ Read-only file preview.