Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/soc/intel/avs/path.h
29268 views
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
/*
3
* Copyright(c) 2021 Intel Corporation
4
*
5
* Authors: Cezary Rojewski <[email protected]>
6
* Amadeusz Slawinski <[email protected]>
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
19
struct 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
40
struct 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
51
struct 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
62
struct 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
74
void avs_path_free(struct avs_path *path);
75
struct 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);
79
int avs_path_bind(struct avs_path *path);
80
int avs_path_unbind(struct avs_path *path);
81
int avs_path_reset(struct avs_path *path);
82
int avs_path_pause(struct avs_path *path);
83
int avs_path_run(struct avs_path *path, int trigger);
84
85
int 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
90
int avs_peakvol_set_volume(struct avs_dev *adev, struct avs_path_module *mod,
91
struct soc_mixer_control *mc, long *input);
92
int avs_peakvol_set_mute(struct avs_dev *adev, struct avs_path_module *mod,
93
struct soc_mixer_control *mc, long *input);
94
95
#endif
96
97