Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/soc/intel/common/soc-acpi-intel-sdw-mockup-match.c
26493 views
1
// SPDX-License-Identifier: GPL-2.0-only
2
//
3
// soc-acpi-intel-sdw-mockup-match.c - tables and support for SoundWire
4
// mockup device ACPI enumeration.
5
//
6
// Copyright (c) 2021, Intel Corporation.
7
//
8
9
#include <sound/soc-acpi.h>
10
#include <sound/soc-acpi-intel-match.h>
11
#include "soc-acpi-intel-sdw-mockup-match.h"
12
13
static const struct snd_soc_acpi_endpoint sdw_mockup_single_endpoint = {
14
.num = 0,
15
.aggregated = 0,
16
.group_position = 0,
17
.group_id = 0,
18
};
19
20
static const struct snd_soc_acpi_endpoint sdw_mockup_l_endpoint = {
21
.num = 0,
22
.aggregated = 1,
23
.group_position = 0,
24
.group_id = 1,
25
};
26
27
static const struct snd_soc_acpi_endpoint sdw_mockup_r_endpoint = {
28
.num = 0,
29
.aggregated = 1,
30
.group_position = 1,
31
.group_id = 1,
32
};
33
34
static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints[] = {
35
/* Jack Endpoint */
36
{
37
.num = 0,
38
.aggregated = 0,
39
.group_position = 0,
40
.group_id = 0,
41
},
42
/* Amp Endpoint, work as spk_l_endpoint */
43
{
44
.num = 1,
45
.aggregated = 1,
46
.group_position = 0,
47
.group_id = 1,
48
},
49
/* DMIC Endpoint */
50
{
51
.num = 2,
52
.aggregated = 0,
53
.group_position = 0,
54
.group_id = 0,
55
},
56
};
57
58
static const struct snd_soc_acpi_adr_device sdw_mockup_headset_0_adr[] = {
59
{
60
.adr = 0x0000000105AA5500ull,
61
.num_endpoints = 1,
62
.endpoints = &sdw_mockup_single_endpoint,
63
.name_prefix = "sdw_mockup_headset0"
64
}
65
};
66
67
static const struct snd_soc_acpi_adr_device sdw_mockup_headset_1_adr[] = {
68
{
69
.adr = 0x0001000105AA5500ull,
70
.num_endpoints = 1,
71
.endpoints = &sdw_mockup_single_endpoint,
72
.name_prefix = "sdw_mockup_headset1"
73
}
74
};
75
76
static const struct snd_soc_acpi_adr_device sdw_mockup_amp_1_adr[] = {
77
{
78
.adr = 0x000100010555AA00ull,
79
.num_endpoints = 1,
80
.endpoints = &sdw_mockup_single_endpoint,
81
.name_prefix = "sdw_mockup_amp1"
82
}
83
};
84
85
static const struct snd_soc_acpi_adr_device sdw_mockup_amp_2_adr[] = {
86
{
87
.adr = 0x000200010555AA00ull,
88
.num_endpoints = 1,
89
.endpoints = &sdw_mockup_single_endpoint,
90
.name_prefix = "sdw_mockup_amp2"
91
}
92
};
93
94
static const struct snd_soc_acpi_adr_device sdw_mockup_mic_0_adr[] = {
95
{
96
.adr = 0x0000000105555500ull,
97
.num_endpoints = 1,
98
.endpoints = &sdw_mockup_single_endpoint,
99
.name_prefix = "sdw_mockup_mic0"
100
}
101
};
102
103
static const struct snd_soc_acpi_adr_device sdw_mockup_mic_3_adr[] = {
104
{
105
.adr = 0x0003000105555500ull,
106
.num_endpoints = 1,
107
.endpoints = &sdw_mockup_single_endpoint,
108
.name_prefix = "sdw_mockup_mic3"
109
}
110
};
111
112
static const struct snd_soc_acpi_adr_device sdw_mockup_amp_1_group1_adr[] = {
113
{
114
.adr = 0x000100010555AA00ull,
115
.num_endpoints = 1,
116
.endpoints = &sdw_mockup_l_endpoint,
117
.name_prefix = "sdw_mockup_amp1_l"
118
}
119
};
120
121
static const struct snd_soc_acpi_adr_device sdw_mockup_amp_2_group1_adr[] = {
122
{
123
.adr = 0x000200010555AA00ull,
124
.num_endpoints = 1,
125
.endpoints = &sdw_mockup_r_endpoint,
126
.name_prefix = "sdw_mockup_amp2_r"
127
}
128
};
129
130
static const struct snd_soc_acpi_adr_device sdw_mockup_multi_function_adr[] = {
131
{
132
.adr = 0x0000000105AAAA01ull,
133
.num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints),
134
.endpoints = jack_amp_g1_dmic_endpoints,
135
.name_prefix = "sdw_mockup_mmulti-function"
136
}
137
};
138
139
const struct snd_soc_acpi_link_adr sdw_mockup_headset_1amp_mic[] = {
140
{
141
.mask = BIT(0),
142
.num_adr = ARRAY_SIZE(sdw_mockup_headset_0_adr),
143
.adr_d = sdw_mockup_headset_0_adr,
144
},
145
{
146
.mask = BIT(1),
147
.num_adr = ARRAY_SIZE(sdw_mockup_amp_1_adr),
148
.adr_d = sdw_mockup_amp_1_adr,
149
},
150
{
151
.mask = BIT(3),
152
.num_adr = ARRAY_SIZE(sdw_mockup_mic_3_adr),
153
.adr_d = sdw_mockup_mic_3_adr,
154
},
155
{}
156
};
157
158
const struct snd_soc_acpi_link_adr sdw_mockup_headset_2amps_mic[] = {
159
{
160
.mask = BIT(0),
161
.num_adr = ARRAY_SIZE(sdw_mockup_headset_0_adr),
162
.adr_d = sdw_mockup_headset_0_adr,
163
},
164
{
165
.mask = BIT(1),
166
.num_adr = ARRAY_SIZE(sdw_mockup_amp_1_group1_adr),
167
.adr_d = sdw_mockup_amp_1_group1_adr,
168
},
169
{
170
.mask = BIT(2),
171
.num_adr = ARRAY_SIZE(sdw_mockup_amp_2_group1_adr),
172
.adr_d = sdw_mockup_amp_2_group1_adr,
173
},
174
{
175
.mask = BIT(3),
176
.num_adr = ARRAY_SIZE(sdw_mockup_mic_3_adr),
177
.adr_d = sdw_mockup_mic_3_adr,
178
},
179
{}
180
};
181
182
const struct snd_soc_acpi_link_adr sdw_mockup_mic_headset_1amp[] = {
183
{
184
.mask = BIT(1),
185
.num_adr = ARRAY_SIZE(sdw_mockup_headset_1_adr),
186
.adr_d = sdw_mockup_headset_1_adr,
187
},
188
{
189
.mask = BIT(2),
190
.num_adr = ARRAY_SIZE(sdw_mockup_amp_2_adr),
191
.adr_d = sdw_mockup_amp_2_adr,
192
},
193
{
194
.mask = BIT(0),
195
.num_adr = ARRAY_SIZE(sdw_mockup_mic_0_adr),
196
.adr_d = sdw_mockup_mic_0_adr,
197
},
198
{}
199
};
200
201
const struct snd_soc_acpi_link_adr sdw_mockup_multi_func[] = {
202
{
203
.mask = BIT(0),
204
.num_adr = ARRAY_SIZE(sdw_mockup_multi_function_adr),
205
.adr_d = sdw_mockup_multi_function_adr,
206
},
207
{}
208
};
209
210