14c8a4cabSKai Vehmanen // SPDX-License-Identifier: GPL-2.0-only
24c8a4cabSKai Vehmanen /*
34c8a4cabSKai Vehmanen  * soc-apci-intel-adl-match.c - tables and support for ADL ACPI enumeration.
44c8a4cabSKai Vehmanen  *
54c8a4cabSKai Vehmanen  * Copyright (c) 2020, Intel Corporation.
64c8a4cabSKai Vehmanen  */
74c8a4cabSKai Vehmanen 
84c8a4cabSKai Vehmanen #include <sound/soc-acpi.h>
94c8a4cabSKai Vehmanen #include <sound/soc-acpi-intel-match.h>
104c8a4cabSKai Vehmanen 
114c8a4cabSKai Vehmanen static const struct snd_soc_acpi_endpoint single_endpoint = {
124c8a4cabSKai Vehmanen 	.num = 0,
134c8a4cabSKai Vehmanen 	.aggregated = 0,
144c8a4cabSKai Vehmanen 	.group_position = 0,
154c8a4cabSKai Vehmanen 	.group_id = 0,
164c8a4cabSKai Vehmanen };
174c8a4cabSKai Vehmanen 
18093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_endpoint spk_l_endpoint = {
19093b9dcbSPierre-Louis Bossart 	.num = 0,
20093b9dcbSPierre-Louis Bossart 	.aggregated = 1,
21093b9dcbSPierre-Louis Bossart 	.group_position = 0,
22093b9dcbSPierre-Louis Bossart 	.group_id = 1,
23093b9dcbSPierre-Louis Bossart };
24093b9dcbSPierre-Louis Bossart 
25093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
26093b9dcbSPierre-Louis Bossart 	.num = 0,
27093b9dcbSPierre-Louis Bossart 	.aggregated = 1,
28093b9dcbSPierre-Louis Bossart 	.group_position = 1,
29093b9dcbSPierre-Louis Bossart 	.group_id = 1,
30093b9dcbSPierre-Louis Bossart };
31093b9dcbSPierre-Louis Bossart 
324c8a4cabSKai Vehmanen static const struct snd_soc_acpi_adr_device rt711_0_adr[] = {
334c8a4cabSKai Vehmanen 	{
340c52d3e2SPierre-Louis Bossart 		.adr = 0x000020025D071100ull,
354c8a4cabSKai Vehmanen 		.num_endpoints = 1,
364c8a4cabSKai Vehmanen 		.endpoints = &single_endpoint,
374c8a4cabSKai Vehmanen 		.name_prefix = "rt711"
384c8a4cabSKai Vehmanen 	}
394c8a4cabSKai Vehmanen };
404c8a4cabSKai Vehmanen 
41093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1308_1_group1_adr[] = {
42093b9dcbSPierre-Louis Bossart 	{
430c52d3e2SPierre-Louis Bossart 		.adr = 0x000120025D130800ull,
44093b9dcbSPierre-Louis Bossart 		.num_endpoints = 1,
45093b9dcbSPierre-Louis Bossart 		.endpoints = &spk_l_endpoint,
46093b9dcbSPierre-Louis Bossart 		.name_prefix = "rt1308-1"
47093b9dcbSPierre-Louis Bossart 	}
48093b9dcbSPierre-Louis Bossart };
49093b9dcbSPierre-Louis Bossart 
50093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1308_2_group1_adr[] = {
51093b9dcbSPierre-Louis Bossart 	{
520c52d3e2SPierre-Louis Bossart 		.adr = 0x000220025D130800ull,
53093b9dcbSPierre-Louis Bossart 		.num_endpoints = 1,
54093b9dcbSPierre-Louis Bossart 		.endpoints = &spk_r_endpoint,
55093b9dcbSPierre-Louis Bossart 		.name_prefix = "rt1308-2"
56093b9dcbSPierre-Louis Bossart 	}
57093b9dcbSPierre-Louis Bossart };
58093b9dcbSPierre-Louis Bossart 
59093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt715_3_adr[] = {
60093b9dcbSPierre-Louis Bossart 	{
610c52d3e2SPierre-Louis Bossart 		.adr = 0x000320025D071500ull,
62093b9dcbSPierre-Louis Bossart 		.num_endpoints = 1,
63093b9dcbSPierre-Louis Bossart 		.endpoints = &single_endpoint,
64093b9dcbSPierre-Louis Bossart 		.name_prefix = "rt715"
65093b9dcbSPierre-Louis Bossart 	}
66093b9dcbSPierre-Louis Bossart };
67093b9dcbSPierre-Louis Bossart 
68093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
69093b9dcbSPierre-Louis Bossart 	{
700c52d3e2SPierre-Louis Bossart 		.adr = 0x000030025D071101ull,
71093b9dcbSPierre-Louis Bossart 		.num_endpoints = 1,
72093b9dcbSPierre-Louis Bossart 		.endpoints = &single_endpoint,
73093b9dcbSPierre-Louis Bossart 		.name_prefix = "rt711"
74093b9dcbSPierre-Louis Bossart 	}
75093b9dcbSPierre-Louis Bossart };
76093b9dcbSPierre-Louis Bossart 
77*359ace2bSGongjun Song static const struct snd_soc_acpi_adr_device rt711_sdca_2_adr[] = {
78*359ace2bSGongjun Song 	{
79*359ace2bSGongjun Song 		.adr = 0x000230025D071101ull,
80*359ace2bSGongjun Song 		.num_endpoints = 1,
81*359ace2bSGongjun Song 		.endpoints = &single_endpoint,
82*359ace2bSGongjun Song 		.name_prefix = "rt711"
83*359ace2bSGongjun Song 	}
84*359ace2bSGongjun Song };
85*359ace2bSGongjun Song 
86093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1316_1_group1_adr[] = {
87093b9dcbSPierre-Louis Bossart 	{
880c52d3e2SPierre-Louis Bossart 		.adr = 0x000131025D131601ull, /* unique ID is set for some reason */
89093b9dcbSPierre-Louis Bossart 		.num_endpoints = 1,
90093b9dcbSPierre-Louis Bossart 		.endpoints = &spk_l_endpoint,
91093b9dcbSPierre-Louis Bossart 		.name_prefix = "rt1316-1"
92093b9dcbSPierre-Louis Bossart 	}
93093b9dcbSPierre-Louis Bossart };
94093b9dcbSPierre-Louis Bossart 
95093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = {
96093b9dcbSPierre-Louis Bossart 	{
970c52d3e2SPierre-Louis Bossart 		.adr = 0x000230025D131601ull,
98093b9dcbSPierre-Louis Bossart 		.num_endpoints = 1,
99093b9dcbSPierre-Louis Bossart 		.endpoints = &spk_r_endpoint,
100093b9dcbSPierre-Louis Bossart 		.name_prefix = "rt1316-2"
101093b9dcbSPierre-Louis Bossart 	}
102093b9dcbSPierre-Louis Bossart };
103093b9dcbSPierre-Louis Bossart 
104093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = {
105093b9dcbSPierre-Louis Bossart 	{
1060c52d3e2SPierre-Louis Bossart 		.adr = 0x000330025D131601ull,
107093b9dcbSPierre-Louis Bossart 		.num_endpoints = 1,
108093b9dcbSPierre-Louis Bossart 		.endpoints = &spk_r_endpoint,
109093b9dcbSPierre-Louis Bossart 		.name_prefix = "rt1316-2"
110093b9dcbSPierre-Louis Bossart 	}
111093b9dcbSPierre-Louis Bossart };
112093b9dcbSPierre-Louis Bossart 
113*359ace2bSGongjun Song static const struct snd_soc_acpi_adr_device rt1316_0_group2_adr[] = {
114*359ace2bSGongjun Song 	{
115*359ace2bSGongjun Song 		.adr = 0x000031025D131601ull,
116*359ace2bSGongjun Song 		.num_endpoints = 1,
117*359ace2bSGongjun Song 		.endpoints = &spk_l_endpoint,
118*359ace2bSGongjun Song 		.name_prefix = "rt1316-1"
119*359ace2bSGongjun Song 	}
120*359ace2bSGongjun Song };
121*359ace2bSGongjun Song 
122*359ace2bSGongjun Song static const struct snd_soc_acpi_adr_device rt1316_1_group2_adr[] = {
123*359ace2bSGongjun Song 	{
124*359ace2bSGongjun Song 		.adr = 0x000130025D131601ull,
125*359ace2bSGongjun Song 		.num_endpoints = 1,
126*359ace2bSGongjun Song 		.endpoints = &spk_r_endpoint,
127*359ace2bSGongjun Song 		.name_prefix = "rt1316-2"
128*359ace2bSGongjun Song 	}
129*359ace2bSGongjun Song };
130*359ace2bSGongjun Song 
131870dc42fSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1316_2_single_adr[] = {
132870dc42fSPierre-Louis Bossart 	{
1330c52d3e2SPierre-Louis Bossart 		.adr = 0x000230025D131601ull,
134870dc42fSPierre-Louis Bossart 		.num_endpoints = 1,
135870dc42fSPierre-Louis Bossart 		.endpoints = &single_endpoint,
136870dc42fSPierre-Louis Bossart 		.name_prefix = "rt1316-1"
137870dc42fSPierre-Louis Bossart 	}
138870dc42fSPierre-Louis Bossart };
139870dc42fSPierre-Louis Bossart 
140870dc42fSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt714_0_adr[] = {
141870dc42fSPierre-Louis Bossart 	{
1420c52d3e2SPierre-Louis Bossart 		.adr = 0x000030025D071401ull,
143870dc42fSPierre-Louis Bossart 		.num_endpoints = 1,
144870dc42fSPierre-Louis Bossart 		.endpoints = &single_endpoint,
145870dc42fSPierre-Louis Bossart 		.name_prefix = "rt714"
146870dc42fSPierre-Louis Bossart 	}
147870dc42fSPierre-Louis Bossart };
148870dc42fSPierre-Louis Bossart 
149093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt714_2_adr[] = {
150093b9dcbSPierre-Louis Bossart 	{
1510c52d3e2SPierre-Louis Bossart 		.adr = 0x000230025D071401ull,
152093b9dcbSPierre-Louis Bossart 		.num_endpoints = 1,
153093b9dcbSPierre-Louis Bossart 		.endpoints = &single_endpoint,
154093b9dcbSPierre-Louis Bossart 		.name_prefix = "rt714"
155093b9dcbSPierre-Louis Bossart 	}
156093b9dcbSPierre-Louis Bossart };
157093b9dcbSPierre-Louis Bossart 
158093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt714_3_adr[] = {
159093b9dcbSPierre-Louis Bossart 	{
1600c52d3e2SPierre-Louis Bossart 		.adr = 0x000330025D071401ull,
161093b9dcbSPierre-Louis Bossart 		.num_endpoints = 1,
162093b9dcbSPierre-Louis Bossart 		.endpoints = &single_endpoint,
163093b9dcbSPierre-Louis Bossart 		.name_prefix = "rt714"
164093b9dcbSPierre-Louis Bossart 	}
165093b9dcbSPierre-Louis Bossart };
166093b9dcbSPierre-Louis Bossart 
167093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_link_adr adl_default[] = {
168093b9dcbSPierre-Louis Bossart 	{
169093b9dcbSPierre-Louis Bossart 		.mask = BIT(0),
170093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt711_0_adr),
171093b9dcbSPierre-Louis Bossart 		.adr_d = rt711_0_adr,
172093b9dcbSPierre-Louis Bossart 	},
173093b9dcbSPierre-Louis Bossart 	{
174093b9dcbSPierre-Louis Bossart 		.mask = BIT(1),
175093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1308_1_group1_adr),
176093b9dcbSPierre-Louis Bossart 		.adr_d = rt1308_1_group1_adr,
177093b9dcbSPierre-Louis Bossart 	},
178093b9dcbSPierre-Louis Bossart 	{
179093b9dcbSPierre-Louis Bossart 		.mask = BIT(2),
180093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1308_2_group1_adr),
181093b9dcbSPierre-Louis Bossart 		.adr_d = rt1308_2_group1_adr,
182093b9dcbSPierre-Louis Bossart 	},
183093b9dcbSPierre-Louis Bossart 	{
184093b9dcbSPierre-Louis Bossart 		.mask = BIT(3),
185093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt715_3_adr),
186093b9dcbSPierre-Louis Bossart 		.adr_d = rt715_3_adr,
187093b9dcbSPierre-Louis Bossart 	},
188093b9dcbSPierre-Louis Bossart 	{}
189093b9dcbSPierre-Louis Bossart };
190093b9dcbSPierre-Louis Bossart 
191093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_link_adr adl_sdca_default[] = {
192093b9dcbSPierre-Louis Bossart 	{
193093b9dcbSPierre-Louis Bossart 		.mask = BIT(0),
194093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
195093b9dcbSPierre-Louis Bossart 		.adr_d = rt711_sdca_0_adr,
196093b9dcbSPierre-Louis Bossart 	},
197093b9dcbSPierre-Louis Bossart 	{
198093b9dcbSPierre-Louis Bossart 		.mask = BIT(1),
199093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1316_1_group1_adr),
200093b9dcbSPierre-Louis Bossart 		.adr_d = rt1316_1_group1_adr,
201093b9dcbSPierre-Louis Bossart 	},
202093b9dcbSPierre-Louis Bossart 	{
203093b9dcbSPierre-Louis Bossart 		.mask = BIT(2),
204093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1316_2_group1_adr),
205093b9dcbSPierre-Louis Bossart 		.adr_d = rt1316_2_group1_adr,
206093b9dcbSPierre-Louis Bossart 	},
207093b9dcbSPierre-Louis Bossart 	{
208093b9dcbSPierre-Louis Bossart 		.mask = BIT(3),
209093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt714_3_adr),
210093b9dcbSPierre-Louis Bossart 		.adr_d = rt714_3_adr,
211093b9dcbSPierre-Louis Bossart 	},
212093b9dcbSPierre-Louis Bossart 	{}
213093b9dcbSPierre-Louis Bossart };
214093b9dcbSPierre-Louis Bossart 
215093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_link_adr adl_sdca_3_in_1[] = {
216093b9dcbSPierre-Louis Bossart 	{
217093b9dcbSPierre-Louis Bossart 		.mask = BIT(0),
218093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
219093b9dcbSPierre-Louis Bossart 		.adr_d = rt711_sdca_0_adr,
220093b9dcbSPierre-Louis Bossart 	},
221093b9dcbSPierre-Louis Bossart 	{
222093b9dcbSPierre-Louis Bossart 		.mask = BIT(1),
223093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1316_1_group1_adr),
224093b9dcbSPierre-Louis Bossart 		.adr_d = rt1316_1_group1_adr,
225093b9dcbSPierre-Louis Bossart 	},
226093b9dcbSPierre-Louis Bossart 	{
227093b9dcbSPierre-Louis Bossart 		.mask = BIT(2),
228093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt714_2_adr),
229093b9dcbSPierre-Louis Bossart 		.adr_d = rt714_2_adr,
230093b9dcbSPierre-Louis Bossart 	},
231093b9dcbSPierre-Louis Bossart 	{
232093b9dcbSPierre-Louis Bossart 		.mask = BIT(3),
233093b9dcbSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1316_3_group1_adr),
234093b9dcbSPierre-Louis Bossart 		.adr_d = rt1316_3_group1_adr,
235093b9dcbSPierre-Louis Bossart 	},
236093b9dcbSPierre-Louis Bossart 	{}
237093b9dcbSPierre-Louis Bossart };
238093b9dcbSPierre-Louis Bossart 
239*359ace2bSGongjun Song static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link2_rt1316_link01_rt714_link3[] = {
240*359ace2bSGongjun Song 	{
241*359ace2bSGongjun Song 		.mask = BIT(2),
242*359ace2bSGongjun Song 		.num_adr = ARRAY_SIZE(rt711_sdca_2_adr),
243*359ace2bSGongjun Song 		.adr_d = rt711_sdca_2_adr,
244*359ace2bSGongjun Song 	},
245*359ace2bSGongjun Song 	{
246*359ace2bSGongjun Song 		.mask = BIT(0),
247*359ace2bSGongjun Song 		.num_adr = ARRAY_SIZE(rt1316_0_group2_adr),
248*359ace2bSGongjun Song 		.adr_d = rt1316_0_group2_adr,
249*359ace2bSGongjun Song 	},
250*359ace2bSGongjun Song 	{
251*359ace2bSGongjun Song 		.mask = BIT(1),
252*359ace2bSGongjun Song 		.num_adr = ARRAY_SIZE(rt1316_1_group2_adr),
253*359ace2bSGongjun Song 		.adr_d = rt1316_1_group2_adr,
254*359ace2bSGongjun Song 	},
255*359ace2bSGongjun Song 	{
256*359ace2bSGongjun Song 		.mask = BIT(3),
257*359ace2bSGongjun Song 		.num_adr = ARRAY_SIZE(rt714_3_adr),
258*359ace2bSGongjun Song 		.adr_d = rt714_3_adr,
259*359ace2bSGongjun Song 	},
260*359ace2bSGongjun Song 	{}
261*359ace2bSGongjun Song };
262*359ace2bSGongjun Song 
263a1797d61SGongjun Song static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link12_rt714_link0[] = {
264a1797d61SGongjun Song 	{
265a1797d61SGongjun Song 		.mask = BIT(1),
266a1797d61SGongjun Song 		.num_adr = ARRAY_SIZE(rt1316_1_group1_adr),
267a1797d61SGongjun Song 		.adr_d = rt1316_1_group1_adr,
268a1797d61SGongjun Song 	},
269a1797d61SGongjun Song 	{
270a1797d61SGongjun Song 		.mask = BIT(2),
271a1797d61SGongjun Song 		.num_adr = ARRAY_SIZE(rt1316_2_group1_adr),
272a1797d61SGongjun Song 		.adr_d = rt1316_2_group1_adr,
273a1797d61SGongjun Song 	},
274a1797d61SGongjun Song 	{
275a1797d61SGongjun Song 		.mask = BIT(0),
276a1797d61SGongjun Song 		.num_adr = ARRAY_SIZE(rt714_0_adr),
277a1797d61SGongjun Song 		.adr_d = rt714_0_adr,
278a1797d61SGongjun Song 	},
279a1797d61SGongjun Song 	{}
280a1797d61SGongjun Song };
281a1797d61SGongjun Song 
28211e18f58SGongjun Song static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link2_rt714_link3[] = {
28311e18f58SGongjun Song 	{
28411e18f58SGongjun Song 		.mask = BIT(2),
28511e18f58SGongjun Song 		.num_adr = ARRAY_SIZE(rt1316_2_single_adr),
28611e18f58SGongjun Song 		.adr_d = rt1316_2_single_adr,
28711e18f58SGongjun Song 	},
28811e18f58SGongjun Song 	{
28911e18f58SGongjun Song 		.mask = BIT(3),
29011e18f58SGongjun Song 		.num_adr = ARRAY_SIZE(rt714_3_adr),
29111e18f58SGongjun Song 		.adr_d = rt714_3_adr,
29211e18f58SGongjun Song 	},
29311e18f58SGongjun Song 	{}
29411e18f58SGongjun Song };
29511e18f58SGongjun Song 
296870dc42fSPierre-Louis Bossart static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link2_rt714_link0[] = {
297870dc42fSPierre-Louis Bossart 	{
298870dc42fSPierre-Louis Bossart 		.mask = BIT(2),
299870dc42fSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1316_2_single_adr),
300870dc42fSPierre-Louis Bossart 		.adr_d = rt1316_2_single_adr,
301870dc42fSPierre-Louis Bossart 	},
302870dc42fSPierre-Louis Bossart 	{
303870dc42fSPierre-Louis Bossart 		.mask = BIT(0),
304870dc42fSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt714_0_adr),
305870dc42fSPierre-Louis Bossart 		.adr_d = rt714_0_adr,
306870dc42fSPierre-Louis Bossart 	},
307870dc42fSPierre-Louis Bossart 	{}
308870dc42fSPierre-Louis Bossart };
309870dc42fSPierre-Louis Bossart 
310c0fbe9fdSVamshi Krishna Gopal static const struct snd_soc_acpi_adr_device mx8373_2_adr[] = {
311c0fbe9fdSVamshi Krishna Gopal 	{
312c0fbe9fdSVamshi Krishna Gopal 		.adr = 0x000223019F837300ull,
313c0fbe9fdSVamshi Krishna Gopal 		.num_endpoints = 1,
314c0fbe9fdSVamshi Krishna Gopal 		.endpoints = &spk_l_endpoint,
315c0fbe9fdSVamshi Krishna Gopal 		.name_prefix = "Left"
316c0fbe9fdSVamshi Krishna Gopal 	},
317c0fbe9fdSVamshi Krishna Gopal 	{
318c0fbe9fdSVamshi Krishna Gopal 		.adr = 0x000227019F837300ull,
319c0fbe9fdSVamshi Krishna Gopal 		.num_endpoints = 1,
320c0fbe9fdSVamshi Krishna Gopal 		.endpoints = &spk_r_endpoint,
321c0fbe9fdSVamshi Krishna Gopal 		.name_prefix = "Right"
322c0fbe9fdSVamshi Krishna Gopal 	}
323c0fbe9fdSVamshi Krishna Gopal };
324c0fbe9fdSVamshi Krishna Gopal 
325c0fbe9fdSVamshi Krishna Gopal static const struct snd_soc_acpi_adr_device rt5682_0_adr[] = {
326c0fbe9fdSVamshi Krishna Gopal 	{
327c0fbe9fdSVamshi Krishna Gopal 		.adr = 0x000021025D568200ull,
328c0fbe9fdSVamshi Krishna Gopal 		.num_endpoints = 1,
329c0fbe9fdSVamshi Krishna Gopal 		.endpoints = &single_endpoint,
330c0fbe9fdSVamshi Krishna Gopal 		.name_prefix = "rt5682"
331c0fbe9fdSVamshi Krishna Gopal 	}
332c0fbe9fdSVamshi Krishna Gopal };
333c0fbe9fdSVamshi Krishna Gopal 
3344c8a4cabSKai Vehmanen static const struct snd_soc_acpi_link_adr adl_rvp[] = {
3354c8a4cabSKai Vehmanen 	{
3364c8a4cabSKai Vehmanen 		.mask = BIT(0),
3374c8a4cabSKai Vehmanen 		.num_adr = ARRAY_SIZE(rt711_0_adr),
3384c8a4cabSKai Vehmanen 		.adr_d = rt711_0_adr,
3394c8a4cabSKai Vehmanen 	},
3404c8a4cabSKai Vehmanen 	{}
3414c8a4cabSKai Vehmanen };
3424c8a4cabSKai Vehmanen 
343c0fbe9fdSVamshi Krishna Gopal static const struct snd_soc_acpi_link_adr adl_chromebook_base[] = {
344c0fbe9fdSVamshi Krishna Gopal 	{
345c0fbe9fdSVamshi Krishna Gopal 		.mask = BIT(0),
346c0fbe9fdSVamshi Krishna Gopal 		.num_adr = ARRAY_SIZE(rt5682_0_adr),
347c0fbe9fdSVamshi Krishna Gopal 		.adr_d = rt5682_0_adr,
348c0fbe9fdSVamshi Krishna Gopal 	},
349c0fbe9fdSVamshi Krishna Gopal 	{
350c0fbe9fdSVamshi Krishna Gopal 		.mask = BIT(2),
351c0fbe9fdSVamshi Krishna Gopal 		.num_adr = ARRAY_SIZE(mx8373_2_adr),
352c0fbe9fdSVamshi Krishna Gopal 		.adr_d = mx8373_2_adr,
353c0fbe9fdSVamshi Krishna Gopal 	},
354c0fbe9fdSVamshi Krishna Gopal 	{}
355c0fbe9fdSVamshi Krishna Gopal };
356c0fbe9fdSVamshi Krishna Gopal 
3572a29ff7aSVamshi Krishna Gopal static const struct snd_soc_acpi_codecs adl_max98373_amp = {
3582a29ff7aSVamshi Krishna Gopal 	.num_codecs = 1,
3592a29ff7aSVamshi Krishna Gopal 	.codecs = {"MX98373"}
3602a29ff7aSVamshi Krishna Gopal };
3612a29ff7aSVamshi Krishna Gopal 
3622a29ff7aSVamshi Krishna Gopal static const struct snd_soc_acpi_codecs adl_max98357a_amp = {
3632a29ff7aSVamshi Krishna Gopal 	.num_codecs = 1,
3642a29ff7aSVamshi Krishna Gopal 	.codecs = {"MX98357A"}
3652a29ff7aSVamshi Krishna Gopal };
3662a29ff7aSVamshi Krishna Gopal 
3679c892547SMalik_Hsu static const struct snd_soc_acpi_codecs adl_max98360a_amp = {
3689c892547SMalik_Hsu 	.num_codecs = 1,
3699c892547SMalik_Hsu 	.codecs = {"MX98360A"}
3709c892547SMalik_Hsu };
3719c892547SMalik_Hsu 
372d4f3fdc2SBrent Lu static const struct snd_soc_acpi_codecs adl_rt5682_rt5682s_hp = {
373d4f3fdc2SBrent Lu 	.num_codecs = 2,
374d4f3fdc2SBrent Lu 	.codecs = {"10EC5682", "RTL5682"},
375d4f3fdc2SBrent Lu };
376d4f3fdc2SBrent Lu 
3774c8a4cabSKai Vehmanen struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_machines[] = {
3782a29ff7aSVamshi Krishna Gopal 	{
379d4f3fdc2SBrent Lu 		.comp_ids = &adl_rt5682_rt5682s_hp,
380590cfb08SPierre-Louis Bossart 		.drv_name = "adl_mx98373_rt5682",
3812a29ff7aSVamshi Krishna Gopal 		.machine_quirk = snd_soc_acpi_codec_list,
3822a29ff7aSVamshi Krishna Gopal 		.quirk_data = &adl_max98373_amp,
3832a29ff7aSVamshi Krishna Gopal 		.sof_fw_filename = "sof-adl.ri",
3842a29ff7aSVamshi Krishna Gopal 		.sof_tplg_filename = "sof-adl-max98373-rt5682.tplg",
3852a29ff7aSVamshi Krishna Gopal 	},
3862a29ff7aSVamshi Krishna Gopal 	{
387d4f3fdc2SBrent Lu 		.comp_ids = &adl_rt5682_rt5682s_hp,
3883c561a09SBrent Lu 		.drv_name = "adl_mx98357_rt5682",
3892a29ff7aSVamshi Krishna Gopal 		.machine_quirk = snd_soc_acpi_codec_list,
3902a29ff7aSVamshi Krishna Gopal 		.quirk_data = &adl_max98357a_amp,
3912a29ff7aSVamshi Krishna Gopal 		.sof_fw_filename = "sof-adl.ri",
3922a29ff7aSVamshi Krishna Gopal 		.sof_tplg_filename = "sof-adl-max98357a-rt5682.tplg",
3932a29ff7aSVamshi Krishna Gopal 	},
3949c892547SMalik_Hsu 	{
395d4f3fdc2SBrent Lu 		.comp_ids = &adl_rt5682_rt5682s_hp,
3969c892547SMalik_Hsu 		.drv_name = "adl_mx98360_rt5682",
3979c892547SMalik_Hsu 		.machine_quirk = snd_soc_acpi_codec_list,
3989c892547SMalik_Hsu 		.quirk_data = &adl_max98360a_amp,
3999c892547SMalik_Hsu 		.sof_fw_filename = "sof-adl.ri",
4009c892547SMalik_Hsu 		.sof_tplg_filename = "sof-adl-max98360a-rt5682.tplg",
4019c892547SMalik_Hsu 	},
4024c8a4cabSKai Vehmanen 	{},
4034c8a4cabSKai Vehmanen };
4044c8a4cabSKai Vehmanen EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_machines);
4054c8a4cabSKai Vehmanen 
4064c8a4cabSKai Vehmanen /* this table is used when there is no I2S codec present */
4074c8a4cabSKai Vehmanen struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_sdw_machines[] = {
4084c8a4cabSKai Vehmanen 	{
409093b9dcbSPierre-Louis Bossart 		.link_mask = 0xF, /* 4 active links required */
410093b9dcbSPierre-Louis Bossart 		.links = adl_default,
411093b9dcbSPierre-Louis Bossart 		.drv_name = "sof_sdw",
412093b9dcbSPierre-Louis Bossart 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1308-l12-rt715-l3.tplg",
413093b9dcbSPierre-Louis Bossart 	},
414093b9dcbSPierre-Louis Bossart 	{
415093b9dcbSPierre-Louis Bossart 		.link_mask = 0xF, /* 4 active links required */
416093b9dcbSPierre-Louis Bossart 		.links = adl_sdca_default,
417093b9dcbSPierre-Louis Bossart 		.drv_name = "sof_sdw",
418093b9dcbSPierre-Louis Bossart 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l12-rt714-l3.tplg",
419093b9dcbSPierre-Louis Bossart 	},
420093b9dcbSPierre-Louis Bossart 	{
421093b9dcbSPierre-Louis Bossart 		.link_mask = 0xF, /* 4 active links required */
422093b9dcbSPierre-Louis Bossart 		.links = adl_sdca_3_in_1,
423093b9dcbSPierre-Louis Bossart 		.drv_name = "sof_sdw",
424093b9dcbSPierre-Louis Bossart 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l13-rt714-l2.tplg",
425093b9dcbSPierre-Louis Bossart 	},
426093b9dcbSPierre-Louis Bossart 	{
427*359ace2bSGongjun Song 		.link_mask = 0xF, /* 4 active links required */
428*359ace2bSGongjun Song 		.links = adl_sdw_rt711_link2_rt1316_link01_rt714_link3,
429*359ace2bSGongjun Song 		.drv_name = "sof_sdw",
430*359ace2bSGongjun Song 		.sof_fw_filename = "sof-adl.ri",
431*359ace2bSGongjun Song 		.sof_tplg_filename = "sof-adl-rt711-l2-rt1316-l01-rt714-l3.tplg",
432*359ace2bSGongjun Song 	},
433*359ace2bSGongjun Song 	{
43411e18f58SGongjun Song 		.link_mask = 0xC, /* rt1316 on link2 & rt714 on link3 */
43511e18f58SGongjun Song 		.links = adl_sdw_rt1316_link2_rt714_link3,
43611e18f58SGongjun Song 		.drv_name = "sof_sdw",
43711e18f58SGongjun Song 		.sof_fw_filename = "sof-adl.ri",
43811e18f58SGongjun Song 		.sof_tplg_filename = "sof-adl-rt1316-l2-mono-rt714-l3.tplg",
43911e18f58SGongjun Song 	},
44011e18f58SGongjun Song 	{
441a1797d61SGongjun Song 		.link_mask = 0x7, /* rt714 on link0 & two rt1316s on link1 and link2 */
442a1797d61SGongjun Song 		.links = adl_sdw_rt1316_link12_rt714_link0,
443a1797d61SGongjun Song 		.drv_name = "sof_sdw",
444a1797d61SGongjun Song 		.sof_fw_filename = "sof-adl.ri",
445a1797d61SGongjun Song 		.sof_tplg_filename = "sof-adl-rt1316-l12-rt714-l0.tplg",
446a1797d61SGongjun Song 	},
447a1797d61SGongjun Song 	{
448870dc42fSPierre-Louis Bossart 		.link_mask = 0x5, /* 2 active links required */
449870dc42fSPierre-Louis Bossart 		.links = adl_sdw_rt1316_link2_rt714_link0,
450870dc42fSPierre-Louis Bossart 		.drv_name = "sof_sdw",
451870dc42fSPierre-Louis Bossart 		.sof_tplg_filename = "sof-adl-rt1316-l2-mono-rt714-l0.tplg",
452870dc42fSPierre-Louis Bossart 	},
453870dc42fSPierre-Louis Bossart 	{
4544c8a4cabSKai Vehmanen 		.link_mask = 0x1, /* link0 required */
4554c8a4cabSKai Vehmanen 		.links = adl_rvp,
4564c8a4cabSKai Vehmanen 		.drv_name = "sof_sdw",
4574c8a4cabSKai Vehmanen 		.sof_tplg_filename = "sof-adl-rt711.tplg",
4584c8a4cabSKai Vehmanen 	},
459c0fbe9fdSVamshi Krishna Gopal 	{
460c0fbe9fdSVamshi Krishna Gopal 		.link_mask = 0x5, /* rt5682 on link0 & 2xmax98373 on link 2 */
461c0fbe9fdSVamshi Krishna Gopal 		.links = adl_chromebook_base,
462c0fbe9fdSVamshi Krishna Gopal 		.drv_name = "sof_sdw",
463c0fbe9fdSVamshi Krishna Gopal 		.sof_fw_filename = "sof-adl.ri",
464c0fbe9fdSVamshi Krishna Gopal 		.sof_tplg_filename = "sof-adl-sdw-max98373-rt5682.tplg",
465c0fbe9fdSVamshi Krishna Gopal 	},
4664c8a4cabSKai Vehmanen 	{},
4674c8a4cabSKai Vehmanen };
4684c8a4cabSKai Vehmanen EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_sdw_machines);
469