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