xref: /openbmc/linux/sound/soc/intel/common/soc-acpi-intel-tgl-match.c (revision 2612e3bbc0386368a850140a6c9b990cd496a5ec)
1e149ca29SPierre-Louis Bossart // SPDX-License-Identifier: GPL-2.0-only
25f7af9ecSPan Xiuli /*
349d411f2SChristophe JAILLET  * soc-acpi-intel-tgl-match.c - tables and support for TGL ACPI enumeration.
45f7af9ecSPan Xiuli  *
55f7af9ecSPan Xiuli  * Copyright (c) 2019, Intel Corporation.
65f7af9ecSPan Xiuli  *
75f7af9ecSPan Xiuli  */
85f7af9ecSPan Xiuli 
95f7af9ecSPan Xiuli #include <sound/soc-acpi.h>
105f7af9ecSPan Xiuli #include <sound/soc-acpi-intel-match.h>
113025d398SPierre-Louis Bossart #include "soc-acpi-intel-sdw-mockup-match.h"
125f7af9ecSPan Xiuli 
131cedb6eaSPierre-Louis Bossart static const struct snd_soc_acpi_codecs essx_83x6 = {
141cedb6eaSPierre-Louis Bossart 	.num_codecs = 3,
151cedb6eaSPierre-Louis Bossart 	.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},
161cedb6eaSPierre-Louis Bossart };
171cedb6eaSPierre-Louis Bossart 
18aa6cc97cSBrent Lu static const struct snd_soc_acpi_codecs tgl_codecs = {
19903e9d37SSathyanarayana Nujella 	.num_codecs = 1,
20903e9d37SSathyanarayana Nujella 	.codecs = {"MX98357A"}
21903e9d37SSathyanarayana Nujella };
22903e9d37SSathyanarayana Nujella 
23004bd416SPierre-Louis Bossart static const struct snd_soc_acpi_endpoint single_endpoint = {
24004bd416SPierre-Louis Bossart 	.num = 0,
25004bd416SPierre-Louis Bossart 	.aggregated = 0,
26004bd416SPierre-Louis Bossart 	.group_position = 0,
27004bd416SPierre-Louis Bossart 	.group_id = 0,
28d985d208SPierre-Louis Bossart };
29d985d208SPierre-Louis Bossart 
30004bd416SPierre-Louis Bossart static const struct snd_soc_acpi_endpoint spk_l_endpoint = {
31004bd416SPierre-Louis Bossart 	.num = 0,
32004bd416SPierre-Louis Bossart 	.aggregated = 1,
33004bd416SPierre-Louis Bossart 	.group_position = 0,
34004bd416SPierre-Louis Bossart 	.group_id = 1,
35004bd416SPierre-Louis Bossart };
36004bd416SPierre-Louis Bossart 
37004bd416SPierre-Louis Bossart static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
38004bd416SPierre-Louis Bossart 	.num = 0,
39004bd416SPierre-Louis Bossart 	.aggregated = 1,
40004bd416SPierre-Louis Bossart 	.group_position = 1,
41004bd416SPierre-Louis Bossart 	.group_id = 1,
42004bd416SPierre-Louis Bossart };
43004bd416SPierre-Louis Bossart 
44*a2f4d709SBard Liao static const struct snd_soc_acpi_endpoint rt712_endpoints[] = {
45*a2f4d709SBard Liao 	{
46*a2f4d709SBard Liao 		.num = 0,
47*a2f4d709SBard Liao 		.aggregated = 0,
48*a2f4d709SBard Liao 		.group_position = 0,
49*a2f4d709SBard Liao 		.group_id = 0,
50*a2f4d709SBard Liao 	},
51*a2f4d709SBard Liao 	{
52*a2f4d709SBard Liao 		.num = 1,
53*a2f4d709SBard Liao 		.aggregated = 0,
54*a2f4d709SBard Liao 		.group_position = 0,
55*a2f4d709SBard Liao 		.group_id = 0,
56*a2f4d709SBard Liao 	},
57*a2f4d709SBard Liao };
58*a2f4d709SBard Liao 
59004bd416SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt711_0_adr[] = {
60004bd416SPierre-Louis Bossart 	{
610c52d3e2SPierre-Louis Bossart 		.adr = 0x000020025D071100ull,
62004bd416SPierre-Louis Bossart 		.num_endpoints = 1,
63004bd416SPierre-Louis Bossart 		.endpoints = &single_endpoint,
64f9380830SPierre-Louis Bossart 		.name_prefix = "rt711"
65004bd416SPierre-Louis Bossart 	}
66004bd416SPierre-Louis Bossart };
67004bd416SPierre-Louis Bossart 
68e787f5b5SBard Liao static const struct snd_soc_acpi_adr_device rt711_1_adr[] = {
69e787f5b5SBard Liao 	{
700c52d3e2SPierre-Louis Bossart 		.adr = 0x000120025D071100ull,
71e787f5b5SBard Liao 		.num_endpoints = 1,
72e787f5b5SBard Liao 		.endpoints = &single_endpoint,
73e787f5b5SBard Liao 		.name_prefix = "rt711"
74e787f5b5SBard Liao 	}
75e787f5b5SBard Liao };
76e787f5b5SBard Liao 
776cb8bd60SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1308_1_dual_adr[] = {
78004bd416SPierre-Louis Bossart 	{
790c52d3e2SPierre-Louis Bossart 		.adr = 0x000120025D130800ull,
80004bd416SPierre-Louis Bossart 		.num_endpoints = 1,
81004bd416SPierre-Louis Bossart 		.endpoints = &spk_l_endpoint,
82f9380830SPierre-Louis Bossart 		.name_prefix = "rt1308-1"
83004bd416SPierre-Louis Bossart 	},
84004bd416SPierre-Louis Bossart 	{
850c52d3e2SPierre-Louis Bossart 		.adr = 0x000122025D130800ull,
86004bd416SPierre-Louis Bossart 		.num_endpoints = 1,
87004bd416SPierre-Louis Bossart 		.endpoints = &spk_r_endpoint,
88f9380830SPierre-Louis Bossart 		.name_prefix = "rt1308-2"
89004bd416SPierre-Louis Bossart 	}
90d985d208SPierre-Louis Bossart };
91d985d208SPierre-Louis Bossart 
926cb8bd60SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1308_1_single_adr[] = {
936cb8bd60SPierre-Louis Bossart 	{
940c52d3e2SPierre-Louis Bossart 		.adr = 0x000120025D130800ull,
956cb8bd60SPierre-Louis Bossart 		.num_endpoints = 1,
966cb8bd60SPierre-Louis Bossart 		.endpoints = &single_endpoint,
97f9380830SPierre-Louis Bossart 		.name_prefix = "rt1308-1"
986cb8bd60SPierre-Louis Bossart 	}
996cb8bd60SPierre-Louis Bossart };
1006cb8bd60SPierre-Louis Bossart 
101e787f5b5SBard Liao static const struct snd_soc_acpi_adr_device rt1308_2_single_adr[] = {
102e787f5b5SBard Liao 	{
1030c52d3e2SPierre-Louis Bossart 		.adr = 0x000220025D130800ull,
104e787f5b5SBard Liao 		.num_endpoints = 1,
105e787f5b5SBard Liao 		.endpoints = &single_endpoint,
106e787f5b5SBard Liao 		.name_prefix = "rt1308-1"
107e787f5b5SBard Liao 	}
108e787f5b5SBard Liao };
109e787f5b5SBard Liao 
1106cb8bd60SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1308_1_group1_adr[] = {
1116cb8bd60SPierre-Louis Bossart 	{
1120c52d3e2SPierre-Louis Bossart 		.adr = 0x000120025D130800ull,
1136cb8bd60SPierre-Louis Bossart 		.num_endpoints = 1,
1146cb8bd60SPierre-Louis Bossart 		.endpoints = &spk_l_endpoint,
115f9380830SPierre-Louis Bossart 		.name_prefix = "rt1308-1"
1166cb8bd60SPierre-Louis Bossart 	}
1176cb8bd60SPierre-Louis Bossart };
1186cb8bd60SPierre-Louis Bossart 
1196cb8bd60SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1308_2_group1_adr[] = {
1206cb8bd60SPierre-Louis Bossart 	{
1210c52d3e2SPierre-Louis Bossart 		.adr = 0x000220025D130800ull,
1226cb8bd60SPierre-Louis Bossart 		.num_endpoints = 1,
1236cb8bd60SPierre-Louis Bossart 		.endpoints = &spk_r_endpoint,
124f9380830SPierre-Louis Bossart 		.name_prefix = "rt1308-2"
1256cb8bd60SPierre-Louis Bossart 	}
1266cb8bd60SPierre-Louis Bossart };
1276cb8bd60SPierre-Louis Bossart 
128e787f5b5SBard Liao static const struct snd_soc_acpi_adr_device rt715_0_adr[] = {
129e787f5b5SBard Liao 	{
1300c52d3e2SPierre-Louis Bossart 		.adr = 0x000021025D071500ull,
131e787f5b5SBard Liao 		.num_endpoints = 1,
132e787f5b5SBard Liao 		.endpoints = &single_endpoint,
133e787f5b5SBard Liao 		.name_prefix = "rt715"
134e787f5b5SBard Liao 	}
135e787f5b5SBard Liao };
136e787f5b5SBard Liao 
1376cb8bd60SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt715_3_adr[] = {
1386cb8bd60SPierre-Louis Bossart 	{
1390c52d3e2SPierre-Louis Bossart 		.adr = 0x000320025D071500ull,
1406cb8bd60SPierre-Louis Bossart 		.num_endpoints = 1,
1416cb8bd60SPierre-Louis Bossart 		.endpoints = &single_endpoint,
142f9380830SPierre-Louis Bossart 		.name_prefix = "rt715"
1436cb8bd60SPierre-Louis Bossart 	}
1446cb8bd60SPierre-Louis Bossart };
1456cb8bd60SPierre-Louis Bossart 
14655caf370SNaveen Manohar static const struct snd_soc_acpi_adr_device mx8373_1_adr[] = {
14755caf370SNaveen Manohar 	{
1480c52d3e2SPierre-Louis Bossart 		.adr = 0x000123019F837300ull,
14955caf370SNaveen Manohar 		.num_endpoints = 1,
15097326be1SChao Song 		.endpoints = &spk_r_endpoint,
151f9380830SPierre-Louis Bossart 		.name_prefix = "Right"
15255caf370SNaveen Manohar 	},
15355caf370SNaveen Manohar 	{
1540c52d3e2SPierre-Louis Bossart 		.adr = 0x000127019F837300ull,
15555caf370SNaveen Manohar 		.num_endpoints = 1,
15697326be1SChao Song 		.endpoints = &spk_l_endpoint,
157f9380830SPierre-Louis Bossart 		.name_prefix = "Left"
15855caf370SNaveen Manohar 	}
15955caf370SNaveen Manohar };
16055caf370SNaveen Manohar 
161095ee719SNaveen Manohar static const struct snd_soc_acpi_adr_device rt5682_0_adr[] = {
162095ee719SNaveen Manohar 	{
1630c52d3e2SPierre-Louis Bossart 		.adr = 0x000021025D568200ull,
164095ee719SNaveen Manohar 		.num_endpoints = 1,
165095ee719SNaveen Manohar 		.endpoints = &single_endpoint,
166f9380830SPierre-Louis Bossart 		.name_prefix = "rt5682"
167095ee719SNaveen Manohar 	}
168095ee719SNaveen Manohar };
169095ee719SNaveen Manohar 
17044751fc5SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
17144751fc5SPierre-Louis Bossart 	{
1720c52d3e2SPierre-Louis Bossart 		.adr = 0x000030025D071101ull,
17344751fc5SPierre-Louis Bossart 		.num_endpoints = 1,
17444751fc5SPierre-Louis Bossart 		.endpoints = &single_endpoint,
175f9380830SPierre-Louis Bossart 		.name_prefix = "rt711"
17644751fc5SPierre-Louis Bossart 	}
17744751fc5SPierre-Louis Bossart };
17844751fc5SPierre-Louis Bossart 
179f2470679SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1316_1_single_adr[] = {
180f2470679SPierre-Louis Bossart 	{
181f2470679SPierre-Louis Bossart 		.adr = 0x000131025D131601ull,
182f2470679SPierre-Louis Bossart 		.num_endpoints = 1,
183f2470679SPierre-Louis Bossart 		.endpoints = &single_endpoint,
184f2470679SPierre-Louis Bossart 		.name_prefix = "rt1316-1"
185f2470679SPierre-Louis Bossart 	}
186f2470679SPierre-Louis Bossart };
187f2470679SPierre-Louis Bossart 
188*a2f4d709SBard Liao static const struct snd_soc_acpi_adr_device rt712_0_single_adr[] = {
189*a2f4d709SBard Liao 	{
190*a2f4d709SBard Liao 		.adr = 0x000030025D071201ull,
191*a2f4d709SBard Liao 		.num_endpoints = ARRAY_SIZE(rt712_endpoints),
192*a2f4d709SBard Liao 		.endpoints = rt712_endpoints,
193*a2f4d709SBard Liao 		.name_prefix = "rt712"
194*a2f4d709SBard Liao 	}
195*a2f4d709SBard Liao };
196*a2f4d709SBard Liao 
197*a2f4d709SBard Liao static const struct snd_soc_acpi_adr_device rt1712_1_single_adr[] = {
198*a2f4d709SBard Liao 	{
199*a2f4d709SBard Liao 		.adr = 0x000130025D171201ull,
200*a2f4d709SBard Liao 		.num_endpoints = 1,
201*a2f4d709SBard Liao 		.endpoints = &single_endpoint,
202*a2f4d709SBard Liao 		.name_prefix = "rt712-dmic"
203*a2f4d709SBard Liao 	}
204*a2f4d709SBard Liao };
205*a2f4d709SBard Liao 
20644751fc5SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1316_1_group1_adr[] = {
20744751fc5SPierre-Louis Bossart 	{
2080c52d3e2SPierre-Louis Bossart 		.adr = 0x000131025D131601ull, /* unique ID is set for some reason */
20944751fc5SPierre-Louis Bossart 		.num_endpoints = 1,
21044751fc5SPierre-Louis Bossart 		.endpoints = &spk_l_endpoint,
211f9380830SPierre-Louis Bossart 		.name_prefix = "rt1316-1"
21244751fc5SPierre-Louis Bossart 	}
21344751fc5SPierre-Louis Bossart };
21444751fc5SPierre-Louis Bossart 
21544751fc5SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = {
21644751fc5SPierre-Louis Bossart 	{
2170c52d3e2SPierre-Louis Bossart 		.adr = 0x000230025D131601ull,
21844751fc5SPierre-Louis Bossart 		.num_endpoints = 1,
21944751fc5SPierre-Louis Bossart 		.endpoints = &spk_r_endpoint,
220f9380830SPierre-Louis Bossart 		.name_prefix = "rt1316-2"
22144751fc5SPierre-Louis Bossart 	}
22244751fc5SPierre-Louis Bossart };
22344751fc5SPierre-Louis Bossart 
22444751fc5SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt714_3_adr[] = {
22544751fc5SPierre-Louis Bossart 	{
2260c52d3e2SPierre-Louis Bossart 		.adr = 0x000330025D071401ull,
22744751fc5SPierre-Louis Bossart 		.num_endpoints = 1,
22844751fc5SPierre-Louis Bossart 		.endpoints = &single_endpoint,
229f9380830SPierre-Louis Bossart 		.name_prefix = "rt714"
23044751fc5SPierre-Louis Bossart 	}
23144751fc5SPierre-Louis Bossart };
23244751fc5SPierre-Louis Bossart 
233d985d208SPierre-Louis Bossart static const struct snd_soc_acpi_link_adr tgl_rvp[] = {
234d985d208SPierre-Louis Bossart 	{
235d985d208SPierre-Louis Bossart 		.mask = BIT(0),
236d985d208SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt711_0_adr),
237004bd416SPierre-Louis Bossart 		.adr_d = rt711_0_adr,
238d985d208SPierre-Louis Bossart 	},
239d985d208SPierre-Louis Bossart 	{
240d985d208SPierre-Louis Bossart 		.mask = BIT(1),
2416cb8bd60SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1308_1_dual_adr),
2426cb8bd60SPierre-Louis Bossart 		.adr_d = rt1308_1_dual_adr,
243d985d208SPierre-Louis Bossart 	},
244d985d208SPierre-Louis Bossart 	{}
245d985d208SPierre-Louis Bossart };
246d985d208SPierre-Louis Bossart 
247f99acc25SGongjun Song static const struct snd_soc_acpi_link_adr tgl_rvp_headset_only[] = {
248f99acc25SGongjun Song 	{
249f99acc25SGongjun Song 		.mask = BIT(0),
250f99acc25SGongjun Song 		.num_adr = ARRAY_SIZE(rt711_0_adr),
251f99acc25SGongjun Song 		.adr_d = rt711_0_adr,
252f99acc25SGongjun Song 	},
253f99acc25SGongjun Song 	{}
254f99acc25SGongjun Song };
255f99acc25SGongjun Song 
256717a8fddSPierre-Louis Bossart static const struct snd_soc_acpi_link_adr tgl_hp[] = {
257717a8fddSPierre-Louis Bossart 	{
258717a8fddSPierre-Louis Bossart 		.mask = BIT(0),
259717a8fddSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt711_0_adr),
260717a8fddSPierre-Louis Bossart 		.adr_d = rt711_0_adr,
261717a8fddSPierre-Louis Bossart 	},
262717a8fddSPierre-Louis Bossart 	{
263717a8fddSPierre-Louis Bossart 		.mask = BIT(1),
264717a8fddSPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1308_1_single_adr),
265717a8fddSPierre-Louis Bossart 		.adr_d = rt1308_1_single_adr,
266717a8fddSPierre-Louis Bossart 	},
267717a8fddSPierre-Louis Bossart 	{}
268717a8fddSPierre-Louis Bossart };
269717a8fddSPierre-Louis Bossart 
270095ee719SNaveen Manohar static const struct snd_soc_acpi_link_adr tgl_chromebook_base[] = {
271095ee719SNaveen Manohar 	{
272095ee719SNaveen Manohar 		.mask = BIT(0),
273095ee719SNaveen Manohar 		.num_adr = ARRAY_SIZE(rt5682_0_adr),
274095ee719SNaveen Manohar 		.adr_d = rt5682_0_adr,
275095ee719SNaveen Manohar 	},
27655caf370SNaveen Manohar 	{
27755caf370SNaveen Manohar 		.mask = BIT(1),
27855caf370SNaveen Manohar 		.num_adr = ARRAY_SIZE(mx8373_1_adr),
27955caf370SNaveen Manohar 		.adr_d = mx8373_1_adr,
28055caf370SNaveen Manohar 	},
281095ee719SNaveen Manohar 	{}
282095ee719SNaveen Manohar };
283095ee719SNaveen Manohar 
2846cb8bd60SPierre-Louis Bossart static const struct snd_soc_acpi_link_adr tgl_3_in_1_default[] = {
2856cb8bd60SPierre-Louis Bossart 	{
2866cb8bd60SPierre-Louis Bossart 		.mask = BIT(0),
2876cb8bd60SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt711_0_adr),
2886cb8bd60SPierre-Louis Bossart 		.adr_d = rt711_0_adr,
2896cb8bd60SPierre-Louis Bossart 	},
2906cb8bd60SPierre-Louis Bossart 	{
2916cb8bd60SPierre-Louis Bossart 		.mask = BIT(1),
2926cb8bd60SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1308_1_group1_adr),
2936cb8bd60SPierre-Louis Bossart 		.adr_d = rt1308_1_group1_adr,
2946cb8bd60SPierre-Louis Bossart 	},
2956cb8bd60SPierre-Louis Bossart 	{
2966cb8bd60SPierre-Louis Bossart 		.mask = BIT(2),
2976cb8bd60SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1308_2_group1_adr),
2986cb8bd60SPierre-Louis Bossart 		.adr_d = rt1308_2_group1_adr,
2996cb8bd60SPierre-Louis Bossart 	},
3006cb8bd60SPierre-Louis Bossart 	{
3016cb8bd60SPierre-Louis Bossart 		.mask = BIT(3),
3026cb8bd60SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt715_3_adr),
3036cb8bd60SPierre-Louis Bossart 		.adr_d = rt715_3_adr,
3046cb8bd60SPierre-Louis Bossart 	},
3056cb8bd60SPierre-Louis Bossart 	{}
3066cb8bd60SPierre-Louis Bossart };
3076cb8bd60SPierre-Louis Bossart 
3086cb8bd60SPierre-Louis Bossart static const struct snd_soc_acpi_link_adr tgl_3_in_1_mono_amp[] = {
3096cb8bd60SPierre-Louis Bossart 	{
3106cb8bd60SPierre-Louis Bossart 		.mask = BIT(0),
3116cb8bd60SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt711_0_adr),
3126cb8bd60SPierre-Louis Bossart 		.adr_d = rt711_0_adr,
3136cb8bd60SPierre-Louis Bossart 	},
3146cb8bd60SPierre-Louis Bossart 	{
3156cb8bd60SPierre-Louis Bossart 		.mask = BIT(1),
3166cb8bd60SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1308_1_single_adr),
3176cb8bd60SPierre-Louis Bossart 		.adr_d = rt1308_1_single_adr,
3186cb8bd60SPierre-Louis Bossart 	},
3196cb8bd60SPierre-Louis Bossart 	{
3206cb8bd60SPierre-Louis Bossart 		.mask = BIT(3),
3216cb8bd60SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt715_3_adr),
3226cb8bd60SPierre-Louis Bossart 		.adr_d = rt715_3_adr,
3236cb8bd60SPierre-Louis Bossart 	},
3246cb8bd60SPierre-Louis Bossart 	{}
3256cb8bd60SPierre-Louis Bossart };
3266cb8bd60SPierre-Louis Bossart 
327e787f5b5SBard Liao static const struct snd_soc_acpi_link_adr tgl_sdw_rt711_link1_rt1308_link2_rt715_link0[] = {
328e787f5b5SBard Liao 	{
329e787f5b5SBard Liao 		.mask = BIT(1),
330e787f5b5SBard Liao 		.num_adr = ARRAY_SIZE(rt711_1_adr),
331e787f5b5SBard Liao 		.adr_d = rt711_1_adr,
332e787f5b5SBard Liao 	},
333e787f5b5SBard Liao 	{
334e787f5b5SBard Liao 		.mask = BIT(2),
335e787f5b5SBard Liao 		.num_adr = ARRAY_SIZE(rt1308_2_single_adr),
336e787f5b5SBard Liao 		.adr_d = rt1308_2_single_adr,
337e787f5b5SBard Liao 	},
338e787f5b5SBard Liao 	{
339e787f5b5SBard Liao 		.mask = BIT(0),
340e787f5b5SBard Liao 		.num_adr = ARRAY_SIZE(rt715_0_adr),
341e787f5b5SBard Liao 		.adr_d = rt715_0_adr,
342e787f5b5SBard Liao 	},
343e787f5b5SBard Liao 	{}
344e787f5b5SBard Liao };
345e787f5b5SBard Liao 
34644751fc5SPierre-Louis Bossart static const struct snd_soc_acpi_link_adr tgl_3_in_1_sdca[] = {
34744751fc5SPierre-Louis Bossart 	{
34844751fc5SPierre-Louis Bossart 		.mask = BIT(0),
34944751fc5SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
35044751fc5SPierre-Louis Bossart 		.adr_d = rt711_sdca_0_adr,
35144751fc5SPierre-Louis Bossart 	},
35244751fc5SPierre-Louis Bossart 	{
35344751fc5SPierre-Louis Bossart 		.mask = BIT(1),
35444751fc5SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1316_1_group1_adr),
35544751fc5SPierre-Louis Bossart 		.adr_d = rt1316_1_group1_adr,
35644751fc5SPierre-Louis Bossart 	},
35744751fc5SPierre-Louis Bossart 	{
35844751fc5SPierre-Louis Bossart 		.mask = BIT(2),
35944751fc5SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1316_2_group1_adr),
36044751fc5SPierre-Louis Bossart 		.adr_d = rt1316_2_group1_adr,
36144751fc5SPierre-Louis Bossart 	},
36244751fc5SPierre-Louis Bossart 	{
36344751fc5SPierre-Louis Bossart 		.mask = BIT(3),
36444751fc5SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt714_3_adr),
36544751fc5SPierre-Louis Bossart 		.adr_d = rt714_3_adr,
36644751fc5SPierre-Louis Bossart 	},
36744751fc5SPierre-Louis Bossart 	{}
36844751fc5SPierre-Louis Bossart };
36944751fc5SPierre-Louis Bossart 
370f2470679SPierre-Louis Bossart static const struct snd_soc_acpi_link_adr tgl_3_in_1_sdca_mono[] = {
371f2470679SPierre-Louis Bossart 	{
372f2470679SPierre-Louis Bossart 		.mask = BIT(0),
373f2470679SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
374f2470679SPierre-Louis Bossart 		.adr_d = rt711_sdca_0_adr,
375f2470679SPierre-Louis Bossart 	},
376f2470679SPierre-Louis Bossart 	{
377f2470679SPierre-Louis Bossart 		.mask = BIT(1),
378f2470679SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt1316_1_single_adr),
379f2470679SPierre-Louis Bossart 		.adr_d = rt1316_1_single_adr,
380f2470679SPierre-Louis Bossart 	},
381f2470679SPierre-Louis Bossart 	{
382f2470679SPierre-Louis Bossart 		.mask = BIT(3),
383f2470679SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt714_3_adr),
384f2470679SPierre-Louis Bossart 		.adr_d = rt714_3_adr,
385f2470679SPierre-Louis Bossart 	},
386f2470679SPierre-Louis Bossart 	{}
387f2470679SPierre-Louis Bossart };
388f2470679SPierre-Louis Bossart 
389*a2f4d709SBard Liao static const struct snd_soc_acpi_link_adr tgl_712_only[] = {
390*a2f4d709SBard Liao 	{
391*a2f4d709SBard Liao 		.mask = BIT(0),
392*a2f4d709SBard Liao 		.num_adr = ARRAY_SIZE(rt712_0_single_adr),
393*a2f4d709SBard Liao 		.adr_d = rt712_0_single_adr,
394*a2f4d709SBard Liao 	},
395*a2f4d709SBard Liao 	{
396*a2f4d709SBard Liao 		.mask = BIT(1),
397*a2f4d709SBard Liao 		.num_adr = ARRAY_SIZE(rt1712_1_single_adr),
398*a2f4d709SBard Liao 		.adr_d = rt1712_1_single_adr,
399*a2f4d709SBard Liao 	},
400*a2f4d709SBard Liao 	{}
401*a2f4d709SBard Liao };
402*a2f4d709SBard Liao 
403aa6cc97cSBrent Lu static const struct snd_soc_acpi_codecs tgl_max98373_amp = {
404eb1006c6SSathyanarayana Nujella 	.num_codecs = 1,
405eb1006c6SSathyanarayana Nujella 	.codecs = {"MX98373"}
406eb1006c6SSathyanarayana Nujella };
407eb1006c6SSathyanarayana Nujella 
408aa6cc97cSBrent Lu static const struct snd_soc_acpi_codecs tgl_rt1011_amp = {
409aa6cc97cSBrent Lu 	.num_codecs = 1,
410aa6cc97cSBrent Lu 	.codecs = {"10EC1011"}
411aa6cc97cSBrent Lu };
412aa6cc97cSBrent Lu 
413d4f3fdc2SBrent Lu static const struct snd_soc_acpi_codecs tgl_rt5682_rt5682s_hp = {
414d4f3fdc2SBrent Lu 	.num_codecs = 2,
415d4f3fdc2SBrent Lu 	.codecs = {"10EC5682", "RTL5682"},
416d4f3fdc2SBrent Lu };
417d4f3fdc2SBrent Lu 
418da793fb0Sbalamurugan.c static const struct snd_soc_acpi_codecs tgl_lt6911_hdmi = {
419da793fb0Sbalamurugan.c 	.num_codecs = 1,
420da793fb0Sbalamurugan.c 	.codecs = {"INTC10B0"}
421da793fb0Sbalamurugan.c };
422da793fb0Sbalamurugan.c 
4235f7af9ecSPan Xiuli struct snd_soc_acpi_mach snd_soc_acpi_intel_tgl_machines[] = {
4245f7af9ecSPan Xiuli 	{
425d4f3fdc2SBrent Lu 		.comp_ids = &tgl_rt5682_rt5682s_hp,
4263c561a09SBrent Lu 		.drv_name = "tgl_mx98357_rt5682",
427903e9d37SSathyanarayana Nujella 		.machine_quirk = snd_soc_acpi_codec_list,
428903e9d37SSathyanarayana Nujella 		.quirk_data = &tgl_codecs,
429903e9d37SSathyanarayana Nujella 		.sof_tplg_filename = "sof-tgl-max98357a-rt5682.tplg",
430903e9d37SSathyanarayana Nujella 	},
431eb1006c6SSathyanarayana Nujella 	{
432d4f3fdc2SBrent Lu 		.comp_ids = &tgl_rt5682_rt5682s_hp,
433590cfb08SPierre-Louis Bossart 		.drv_name = "tgl_mx98373_rt5682",
434eb1006c6SSathyanarayana Nujella 		.machine_quirk = snd_soc_acpi_codec_list,
435eb1006c6SSathyanarayana Nujella 		.quirk_data = &tgl_max98373_amp,
436eb1006c6SSathyanarayana Nujella 		.sof_tplg_filename = "sof-tgl-max98373-rt5682.tplg",
437eb1006c6SSathyanarayana Nujella 	},
438aa6cc97cSBrent Lu 	{
439d4f3fdc2SBrent Lu 		.comp_ids = &tgl_rt5682_rt5682s_hp,
440aa6cc97cSBrent Lu 		.drv_name = "tgl_rt1011_rt5682",
441aa6cc97cSBrent Lu 		.machine_quirk = snd_soc_acpi_codec_list,
442aa6cc97cSBrent Lu 		.quirk_data = &tgl_rt1011_amp,
443aa6cc97cSBrent Lu 		.sof_tplg_filename = "sof-tgl-rt1011-rt5682.tplg",
444aa6cc97cSBrent Lu 	},
445790049fbSPierre-Louis Bossart 	{
4461cedb6eaSPierre-Louis Bossart 		.comp_ids = &essx_83x6,
447790049fbSPierre-Louis Bossart 		.drv_name = "sof-essx8336",
4484694b838SPierre-Louis Bossart 		.sof_tplg_filename = "sof-tgl-es8336", /* the tplg suffix is added at run time */
4494694b838SPierre-Louis Bossart 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
4504694b838SPierre-Louis Bossart 					SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
4514694b838SPierre-Louis Bossart 					SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
452790049fbSPierre-Louis Bossart 	},
453da793fb0Sbalamurugan.c 	{
454da793fb0Sbalamurugan.c 		.id = "10EC1308",
455da793fb0Sbalamurugan.c 		.drv_name = "tgl_rt1308_hdmi_ssp",
456da793fb0Sbalamurugan.c 		.machine_quirk = snd_soc_acpi_codec_list,
457da793fb0Sbalamurugan.c 		.quirk_data = &tgl_lt6911_hdmi,
458da793fb0Sbalamurugan.c 		.sof_tplg_filename = "sof-tgl-rt1308-ssp2-hdmi-ssp15.tplg"
459da793fb0Sbalamurugan.c 	},
4605f7af9ecSPan Xiuli 	{},
4615f7af9ecSPan Xiuli };
4625f7af9ecSPan Xiuli EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_tgl_machines);
4635f7af9ecSPan Xiuli 
464d985d208SPierre-Louis Bossart /* this table is used when there is no I2S codec present */
465d985d208SPierre-Louis Bossart struct snd_soc_acpi_mach snd_soc_acpi_intel_tgl_sdw_machines[] = {
4663025d398SPierre-Louis Bossart 	/* mockup tests need to be first */
4673025d398SPierre-Louis Bossart 	{
4683025d398SPierre-Louis Bossart 		.link_mask = GENMASK(3, 0),
4693025d398SPierre-Louis Bossart 		.links = sdw_mockup_headset_2amps_mic,
4703025d398SPierre-Louis Bossart 		.drv_name = "sof_sdw",
4713025d398SPierre-Louis Bossart 		.sof_tplg_filename = "sof-tgl-rt711-rt1308-rt715.tplg",
4723025d398SPierre-Louis Bossart 	},
4733025d398SPierre-Louis Bossart 	{
4743025d398SPierre-Louis Bossart 		.link_mask = BIT(0) | BIT(1) | BIT(3),
4753025d398SPierre-Louis Bossart 		.links = sdw_mockup_headset_1amp_mic,
4763025d398SPierre-Louis Bossart 		.drv_name = "sof_sdw",
4773025d398SPierre-Louis Bossart 		.sof_tplg_filename = "sof-tgl-rt711-rt1308-mono-rt715.tplg",
4783025d398SPierre-Louis Bossart 	},
4793025d398SPierre-Louis Bossart 	{
4803025d398SPierre-Louis Bossart 		.link_mask = BIT(0) | BIT(1) | BIT(2),
4813025d398SPierre-Louis Bossart 		.links = sdw_mockup_mic_headset_1amp,
4823025d398SPierre-Louis Bossart 		.drv_name = "sof_sdw",
4833025d398SPierre-Louis Bossart 		.sof_tplg_filename = "sof-tgl-rt715-rt711-rt1308-mono.tplg",
4843025d398SPierre-Louis Bossart 	},
485d985d208SPierre-Louis Bossart 	{
486*a2f4d709SBard Liao 		.link_mask = 0xF, /* 4 active links required */
487*a2f4d709SBard Liao 		.links = tgl_712_only,
488*a2f4d709SBard Liao 		.drv_name = "sof_sdw",
489*a2f4d709SBard Liao 		.sof_tplg_filename = "sof-tgl-rt712.tplg",
490*a2f4d709SBard Liao 	},
491*a2f4d709SBard Liao 	{
492e787f5b5SBard Liao 		.link_mask = 0x7,
493e787f5b5SBard Liao 		.links = tgl_sdw_rt711_link1_rt1308_link2_rt715_link0,
494e787f5b5SBard Liao 		.drv_name = "sof_sdw",
495e787f5b5SBard Liao 		.sof_tplg_filename = "sof-tgl-rt715-rt711-rt1308-mono.tplg",
496e787f5b5SBard Liao 	},
497e787f5b5SBard Liao 	{
4986cb8bd60SPierre-Louis Bossart 		.link_mask = 0xF, /* 4 active links required */
4996cb8bd60SPierre-Louis Bossart 		.links = tgl_3_in_1_default,
5006cb8bd60SPierre-Louis Bossart 		.drv_name = "sof_sdw",
5016cb8bd60SPierre-Louis Bossart 		.sof_tplg_filename = "sof-tgl-rt711-rt1308-rt715.tplg",
5026cb8bd60SPierre-Louis Bossart 	},
5036cb8bd60SPierre-Louis Bossart 	{
5046cb8bd60SPierre-Louis Bossart 		/*
5056cb8bd60SPierre-Louis Bossart 		 * link_mask should be 0xB, but all links are enabled by BIOS.
5066cb8bd60SPierre-Louis Bossart 		 * This entry will be selected if there is no rt1308 exposed
5076cb8bd60SPierre-Louis Bossart 		 * on link2 since it will fail to match the above entry.
5086cb8bd60SPierre-Louis Bossart 		 */
5096cb8bd60SPierre-Louis Bossart 		.link_mask = 0xF,
5106cb8bd60SPierre-Louis Bossart 		.links = tgl_3_in_1_mono_amp,
5116cb8bd60SPierre-Louis Bossart 		.drv_name = "sof_sdw",
5126cb8bd60SPierre-Louis Bossart 		.sof_tplg_filename = "sof-tgl-rt711-rt1308-mono-rt715.tplg",
5136cb8bd60SPierre-Louis Bossart 	},
5146cb8bd60SPierre-Louis Bossart 	{
51544751fc5SPierre-Louis Bossart 		.link_mask = 0xF, /* 4 active links required */
51644751fc5SPierre-Louis Bossart 		.links = tgl_3_in_1_sdca,
51744751fc5SPierre-Louis Bossart 		.drv_name = "sof_sdw",
51844751fc5SPierre-Louis Bossart 		.sof_tplg_filename = "sof-tgl-rt711-rt1316-rt714.tplg",
51944751fc5SPierre-Louis Bossart 	},
52044751fc5SPierre-Louis Bossart 	{
521f2470679SPierre-Louis Bossart 		/*
522f2470679SPierre-Louis Bossart 		 * link_mask should be 0xB, but all links are enabled by BIOS.
523f2470679SPierre-Louis Bossart 		 * This entry will be selected if there is no rt1316 amplifier exposed
524f2470679SPierre-Louis Bossart 		 * on link2 since it will fail to match the above entry.
525f2470679SPierre-Louis Bossart 		 */
526f2470679SPierre-Louis Bossart 
527f2470679SPierre-Louis Bossart 		.link_mask = 0xF, /* 4 active links required */
528f2470679SPierre-Louis Bossart 		.links = tgl_3_in_1_sdca_mono,
529f2470679SPierre-Louis Bossart 		.drv_name = "sof_sdw",
530f2470679SPierre-Louis Bossart 		.sof_tplg_filename = "sof-tgl-rt711-l0-rt1316-l1-mono-rt714-l3.tplg",
531f2470679SPierre-Louis Bossart 	},
532f2470679SPierre-Louis Bossart 
533f2470679SPierre-Louis Bossart 	{
534717a8fddSPierre-Louis Bossart 		.link_mask = 0x3, /* rt711 on link 0 and 1 rt1308 on link 1 */
535717a8fddSPierre-Louis Bossart 		.links = tgl_hp,
536717a8fddSPierre-Louis Bossart 		.drv_name = "sof_sdw",
537717a8fddSPierre-Louis Bossart 		.sof_tplg_filename = "sof-tgl-rt711-rt1308.tplg",
538717a8fddSPierre-Louis Bossart 	},
539717a8fddSPierre-Louis Bossart 	{
540d985d208SPierre-Louis Bossart 		.link_mask = 0x3, /* rt711 on link 0 and 2 rt1308s on link 1 */
541d985d208SPierre-Louis Bossart 		.links = tgl_rvp,
542ba762e67SRander Wang 		.drv_name = "sof_sdw",
543d985d208SPierre-Louis Bossart 		.sof_tplg_filename = "sof-tgl-rt711-rt1308.tplg",
544d985d208SPierre-Louis Bossart 	},
545095ee719SNaveen Manohar 	{
54655caf370SNaveen Manohar 		.link_mask = 0x3, /* rt5682 on link0 & 2xmax98373 on link 1 */
54755caf370SNaveen Manohar 		.links = tgl_chromebook_base,
54855caf370SNaveen Manohar 		.drv_name = "sof_sdw",
54955caf370SNaveen Manohar 		.sof_tplg_filename = "sof-tgl-sdw-max98373-rt5682.tplg",
55055caf370SNaveen Manohar 	},
551f99acc25SGongjun Song 	{
552f99acc25SGongjun Song 		.link_mask = 0x1, /* rt711 on link 0 */
553f99acc25SGongjun Song 		.links = tgl_rvp_headset_only,
554f99acc25SGongjun Song 		.drv_name = "sof_sdw",
555f99acc25SGongjun Song 		.sof_tplg_filename = "sof-tgl-rt711.tplg",
556f99acc25SGongjun Song 	},
557d985d208SPierre-Louis Bossart 	{},
558d985d208SPierre-Louis Bossart };
559d985d208SPierre-Louis Bossart EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_tgl_sdw_machines);
560