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 18*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_endpoint spk_l_endpoint = { 19*093b9dcbSPierre-Louis Bossart .num = 0, 20*093b9dcbSPierre-Louis Bossart .aggregated = 1, 21*093b9dcbSPierre-Louis Bossart .group_position = 0, 22*093b9dcbSPierre-Louis Bossart .group_id = 1, 23*093b9dcbSPierre-Louis Bossart }; 24*093b9dcbSPierre-Louis Bossart 25*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_endpoint spk_r_endpoint = { 26*093b9dcbSPierre-Louis Bossart .num = 0, 27*093b9dcbSPierre-Louis Bossart .aggregated = 1, 28*093b9dcbSPierre-Louis Bossart .group_position = 1, 29*093b9dcbSPierre-Louis Bossart .group_id = 1, 30*093b9dcbSPierre-Louis Bossart }; 31*093b9dcbSPierre-Louis Bossart 324c8a4cabSKai Vehmanen static const struct snd_soc_acpi_adr_device rt711_0_adr[] = { 334c8a4cabSKai Vehmanen { 344c8a4cabSKai Vehmanen .adr = 0x000020025D071100, 354c8a4cabSKai Vehmanen .num_endpoints = 1, 364c8a4cabSKai Vehmanen .endpoints = &single_endpoint, 374c8a4cabSKai Vehmanen .name_prefix = "rt711" 384c8a4cabSKai Vehmanen } 394c8a4cabSKai Vehmanen }; 404c8a4cabSKai Vehmanen 41*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1308_1_group1_adr[] = { 42*093b9dcbSPierre-Louis Bossart { 43*093b9dcbSPierre-Louis Bossart .adr = 0x000120025D130800, 44*093b9dcbSPierre-Louis Bossart .num_endpoints = 1, 45*093b9dcbSPierre-Louis Bossart .endpoints = &spk_l_endpoint, 46*093b9dcbSPierre-Louis Bossart .name_prefix = "rt1308-1" 47*093b9dcbSPierre-Louis Bossart } 48*093b9dcbSPierre-Louis Bossart }; 49*093b9dcbSPierre-Louis Bossart 50*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1308_2_group1_adr[] = { 51*093b9dcbSPierre-Louis Bossart { 52*093b9dcbSPierre-Louis Bossart .adr = 0x000220025D130800, 53*093b9dcbSPierre-Louis Bossart .num_endpoints = 1, 54*093b9dcbSPierre-Louis Bossart .endpoints = &spk_r_endpoint, 55*093b9dcbSPierre-Louis Bossart .name_prefix = "rt1308-2" 56*093b9dcbSPierre-Louis Bossart } 57*093b9dcbSPierre-Louis Bossart }; 58*093b9dcbSPierre-Louis Bossart 59*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt715_3_adr[] = { 60*093b9dcbSPierre-Louis Bossart { 61*093b9dcbSPierre-Louis Bossart .adr = 0x000320025D071500, 62*093b9dcbSPierre-Louis Bossart .num_endpoints = 1, 63*093b9dcbSPierre-Louis Bossart .endpoints = &single_endpoint, 64*093b9dcbSPierre-Louis Bossart .name_prefix = "rt715" 65*093b9dcbSPierre-Louis Bossart } 66*093b9dcbSPierre-Louis Bossart }; 67*093b9dcbSPierre-Louis Bossart 68*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = { 69*093b9dcbSPierre-Louis Bossart { 70*093b9dcbSPierre-Louis Bossart .adr = 0x000030025D071101, 71*093b9dcbSPierre-Louis Bossart .num_endpoints = 1, 72*093b9dcbSPierre-Louis Bossart .endpoints = &single_endpoint, 73*093b9dcbSPierre-Louis Bossart .name_prefix = "rt711" 74*093b9dcbSPierre-Louis Bossart } 75*093b9dcbSPierre-Louis Bossart }; 76*093b9dcbSPierre-Louis Bossart 77*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1316_1_group1_adr[] = { 78*093b9dcbSPierre-Louis Bossart { 79*093b9dcbSPierre-Louis Bossart .adr = 0x000131025D131601, /* unique ID is set for some reason */ 80*093b9dcbSPierre-Louis Bossart .num_endpoints = 1, 81*093b9dcbSPierre-Louis Bossart .endpoints = &spk_l_endpoint, 82*093b9dcbSPierre-Louis Bossart .name_prefix = "rt1316-1" 83*093b9dcbSPierre-Louis Bossart } 84*093b9dcbSPierre-Louis Bossart }; 85*093b9dcbSPierre-Louis Bossart 86*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = { 87*093b9dcbSPierre-Louis Bossart { 88*093b9dcbSPierre-Louis Bossart .adr = 0x000230025D131601, 89*093b9dcbSPierre-Louis Bossart .num_endpoints = 1, 90*093b9dcbSPierre-Louis Bossart .endpoints = &spk_r_endpoint, 91*093b9dcbSPierre-Louis Bossart .name_prefix = "rt1316-2" 92*093b9dcbSPierre-Louis Bossart } 93*093b9dcbSPierre-Louis Bossart }; 94*093b9dcbSPierre-Louis Bossart 95*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = { 96*093b9dcbSPierre-Louis Bossart { 97*093b9dcbSPierre-Louis Bossart .adr = 0x000330025D131601, 98*093b9dcbSPierre-Louis Bossart .num_endpoints = 1, 99*093b9dcbSPierre-Louis Bossart .endpoints = &spk_r_endpoint, 100*093b9dcbSPierre-Louis Bossart .name_prefix = "rt1316-2" 101*093b9dcbSPierre-Louis Bossart } 102*093b9dcbSPierre-Louis Bossart }; 103*093b9dcbSPierre-Louis Bossart 104*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt714_2_adr[] = { 105*093b9dcbSPierre-Louis Bossart { 106*093b9dcbSPierre-Louis Bossart .adr = 0x000230025D071401, 107*093b9dcbSPierre-Louis Bossart .num_endpoints = 1, 108*093b9dcbSPierre-Louis Bossart .endpoints = &single_endpoint, 109*093b9dcbSPierre-Louis Bossart .name_prefix = "rt714" 110*093b9dcbSPierre-Louis Bossart } 111*093b9dcbSPierre-Louis Bossart }; 112*093b9dcbSPierre-Louis Bossart 113*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt714_3_adr[] = { 114*093b9dcbSPierre-Louis Bossart { 115*093b9dcbSPierre-Louis Bossart .adr = 0x000330025D071401, 116*093b9dcbSPierre-Louis Bossart .num_endpoints = 1, 117*093b9dcbSPierre-Louis Bossart .endpoints = &single_endpoint, 118*093b9dcbSPierre-Louis Bossart .name_prefix = "rt714" 119*093b9dcbSPierre-Louis Bossart } 120*093b9dcbSPierre-Louis Bossart }; 121*093b9dcbSPierre-Louis Bossart 122*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_link_adr adl_default[] = { 123*093b9dcbSPierre-Louis Bossart { 124*093b9dcbSPierre-Louis Bossart .mask = BIT(0), 125*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt711_0_adr), 126*093b9dcbSPierre-Louis Bossart .adr_d = rt711_0_adr, 127*093b9dcbSPierre-Louis Bossart }, 128*093b9dcbSPierre-Louis Bossart { 129*093b9dcbSPierre-Louis Bossart .mask = BIT(1), 130*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt1308_1_group1_adr), 131*093b9dcbSPierre-Louis Bossart .adr_d = rt1308_1_group1_adr, 132*093b9dcbSPierre-Louis Bossart }, 133*093b9dcbSPierre-Louis Bossart { 134*093b9dcbSPierre-Louis Bossart .mask = BIT(2), 135*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt1308_2_group1_adr), 136*093b9dcbSPierre-Louis Bossart .adr_d = rt1308_2_group1_adr, 137*093b9dcbSPierre-Louis Bossart }, 138*093b9dcbSPierre-Louis Bossart { 139*093b9dcbSPierre-Louis Bossart .mask = BIT(3), 140*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt715_3_adr), 141*093b9dcbSPierre-Louis Bossart .adr_d = rt715_3_adr, 142*093b9dcbSPierre-Louis Bossart }, 143*093b9dcbSPierre-Louis Bossart {} 144*093b9dcbSPierre-Louis Bossart }; 145*093b9dcbSPierre-Louis Bossart 146*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_link_adr adl_sdca_default[] = { 147*093b9dcbSPierre-Louis Bossart { 148*093b9dcbSPierre-Louis Bossart .mask = BIT(0), 149*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 150*093b9dcbSPierre-Louis Bossart .adr_d = rt711_sdca_0_adr, 151*093b9dcbSPierre-Louis Bossart }, 152*093b9dcbSPierre-Louis Bossart { 153*093b9dcbSPierre-Louis Bossart .mask = BIT(1), 154*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt1316_1_group1_adr), 155*093b9dcbSPierre-Louis Bossart .adr_d = rt1316_1_group1_adr, 156*093b9dcbSPierre-Louis Bossart }, 157*093b9dcbSPierre-Louis Bossart { 158*093b9dcbSPierre-Louis Bossart .mask = BIT(2), 159*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt1316_2_group1_adr), 160*093b9dcbSPierre-Louis Bossart .adr_d = rt1316_2_group1_adr, 161*093b9dcbSPierre-Louis Bossart }, 162*093b9dcbSPierre-Louis Bossart { 163*093b9dcbSPierre-Louis Bossart .mask = BIT(3), 164*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt714_3_adr), 165*093b9dcbSPierre-Louis Bossart .adr_d = rt714_3_adr, 166*093b9dcbSPierre-Louis Bossart }, 167*093b9dcbSPierre-Louis Bossart {} 168*093b9dcbSPierre-Louis Bossart }; 169*093b9dcbSPierre-Louis Bossart 170*093b9dcbSPierre-Louis Bossart static const struct snd_soc_acpi_link_adr adl_sdca_3_in_1[] = { 171*093b9dcbSPierre-Louis Bossart { 172*093b9dcbSPierre-Louis Bossart .mask = BIT(0), 173*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 174*093b9dcbSPierre-Louis Bossart .adr_d = rt711_sdca_0_adr, 175*093b9dcbSPierre-Louis Bossart }, 176*093b9dcbSPierre-Louis Bossart { 177*093b9dcbSPierre-Louis Bossart .mask = BIT(1), 178*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt1316_1_group1_adr), 179*093b9dcbSPierre-Louis Bossart .adr_d = rt1316_1_group1_adr, 180*093b9dcbSPierre-Louis Bossart }, 181*093b9dcbSPierre-Louis Bossart { 182*093b9dcbSPierre-Louis Bossart .mask = BIT(2), 183*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt714_2_adr), 184*093b9dcbSPierre-Louis Bossart .adr_d = rt714_2_adr, 185*093b9dcbSPierre-Louis Bossart }, 186*093b9dcbSPierre-Louis Bossart { 187*093b9dcbSPierre-Louis Bossart .mask = BIT(3), 188*093b9dcbSPierre-Louis Bossart .num_adr = ARRAY_SIZE(rt1316_3_group1_adr), 189*093b9dcbSPierre-Louis Bossart .adr_d = rt1316_3_group1_adr, 190*093b9dcbSPierre-Louis Bossart }, 191*093b9dcbSPierre-Louis Bossart {} 192*093b9dcbSPierre-Louis Bossart }; 193*093b9dcbSPierre-Louis Bossart 1944c8a4cabSKai Vehmanen static const struct snd_soc_acpi_link_adr adl_rvp[] = { 1954c8a4cabSKai Vehmanen { 1964c8a4cabSKai Vehmanen .mask = BIT(0), 1974c8a4cabSKai Vehmanen .num_adr = ARRAY_SIZE(rt711_0_adr), 1984c8a4cabSKai Vehmanen .adr_d = rt711_0_adr, 1994c8a4cabSKai Vehmanen }, 2004c8a4cabSKai Vehmanen {} 2014c8a4cabSKai Vehmanen }; 2024c8a4cabSKai Vehmanen 2034c8a4cabSKai Vehmanen struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_machines[] = { 2044c8a4cabSKai Vehmanen {}, 2054c8a4cabSKai Vehmanen }; 2064c8a4cabSKai Vehmanen EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_machines); 2074c8a4cabSKai Vehmanen 2084c8a4cabSKai Vehmanen /* this table is used when there is no I2S codec present */ 2094c8a4cabSKai Vehmanen struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_sdw_machines[] = { 2104c8a4cabSKai Vehmanen { 211*093b9dcbSPierre-Louis Bossart .link_mask = 0xF, /* 4 active links required */ 212*093b9dcbSPierre-Louis Bossart .links = adl_default, 213*093b9dcbSPierre-Louis Bossart .drv_name = "sof_sdw", 214*093b9dcbSPierre-Louis Bossart .sof_tplg_filename = "sof-adl-rt711-l0-rt1308-l12-rt715-l3.tplg", 215*093b9dcbSPierre-Louis Bossart }, 216*093b9dcbSPierre-Louis Bossart { 217*093b9dcbSPierre-Louis Bossart .link_mask = 0xF, /* 4 active links required */ 218*093b9dcbSPierre-Louis Bossart .links = adl_sdca_default, 219*093b9dcbSPierre-Louis Bossart .drv_name = "sof_sdw", 220*093b9dcbSPierre-Louis Bossart .sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l12-rt714-l3.tplg", 221*093b9dcbSPierre-Louis Bossart }, 222*093b9dcbSPierre-Louis Bossart { 223*093b9dcbSPierre-Louis Bossart .link_mask = 0xF, /* 4 active links required */ 224*093b9dcbSPierre-Louis Bossart .links = adl_sdca_3_in_1, 225*093b9dcbSPierre-Louis Bossart .drv_name = "sof_sdw", 226*093b9dcbSPierre-Louis Bossart .sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l13-rt714-l2.tplg", 227*093b9dcbSPierre-Louis Bossart }, 228*093b9dcbSPierre-Louis Bossart { 2294c8a4cabSKai Vehmanen .link_mask = 0x1, /* link0 required */ 2304c8a4cabSKai Vehmanen .links = adl_rvp, 2314c8a4cabSKai Vehmanen .drv_name = "sof_sdw", 2324c8a4cabSKai Vehmanen .sof_tplg_filename = "sof-adl-rt711.tplg", 2334c8a4cabSKai Vehmanen }, 2344c8a4cabSKai Vehmanen {}, 2354c8a4cabSKai Vehmanen }; 2364c8a4cabSKai Vehmanen EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_sdw_machines); 237