1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * soc-acpi-intel-icl-match.c - tables and support for ICL ACPI enumeration. 4 * 5 * Copyright (c) 2018, Intel Corporation. 6 * 7 */ 8 9 #include <sound/soc-acpi.h> 10 #include <sound/soc-acpi-intel-match.h> 11 #include "../skylake/skl.h" 12 13 static struct skl_machine_pdata icl_pdata = { 14 .use_tplg_pcm = true, 15 }; 16 17 struct snd_soc_acpi_mach snd_soc_acpi_intel_icl_machines[] = { 18 { 19 .id = "INT34C2", 20 .drv_name = "icl_rt274", 21 .fw_filename = "intel/dsp_fw_icl.bin", 22 .pdata = &icl_pdata, 23 .sof_fw_filename = "sof-icl.ri", 24 .sof_tplg_filename = "sof-icl-rt274.tplg", 25 }, 26 { 27 .id = "10EC5682", 28 .drv_name = "sof_rt5682", 29 .sof_fw_filename = "sof-icl.ri", 30 .sof_tplg_filename = "sof-icl-rt5682.tplg", 31 }, 32 {}, 33 }; 34 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_icl_machines); 35 36 static const struct snd_soc_acpi_endpoint single_endpoint = { 37 .num = 0, 38 .aggregated = 0, 39 .group_position = 0, 40 .group_id = 0, 41 }; 42 43 static const struct snd_soc_acpi_endpoint spk_l_endpoint = { 44 .num = 0, 45 .aggregated = 1, 46 .group_position = 0, 47 .group_id = 1, 48 }; 49 50 static const struct snd_soc_acpi_endpoint spk_r_endpoint = { 51 .num = 0, 52 .aggregated = 1, 53 .group_position = 1, 54 .group_id = 1, 55 }; 56 57 static const struct snd_soc_acpi_adr_device rt700_0_adr[] = { 58 { 59 .adr = 0x000010025D070000, 60 .num_endpoints = 1, 61 .endpoints = &single_endpoint, 62 } 63 }; 64 65 static const struct snd_soc_acpi_link_adr icl_rvp[] = { 66 { 67 .mask = BIT(0), 68 .num_adr = ARRAY_SIZE(rt700_0_adr), 69 .adr_d = rt700_0_adr, 70 }, 71 {} 72 }; 73 74 static const struct snd_soc_acpi_adr_device rt711_0_adr[] = { 75 { 76 .adr = 0x000010025D071100, 77 .num_endpoints = 1, 78 .endpoints = &single_endpoint, 79 } 80 }; 81 82 static const struct snd_soc_acpi_adr_device rt1308_1_adr[] = { 83 { 84 .adr = 0x000110025D130800, 85 .num_endpoints = 1, 86 .endpoints = &single_endpoint, 87 } 88 }; 89 90 static const struct snd_soc_acpi_adr_device rt1308_1_group1_adr[] = { 91 { 92 .adr = 0x000110025D130800, 93 .num_endpoints = 1, 94 .endpoints = &spk_l_endpoint, 95 } 96 }; 97 98 static const struct snd_soc_acpi_adr_device rt1308_2_group1_adr[] = { 99 { 100 .adr = 0x000210025D130800, 101 .num_endpoints = 1, 102 .endpoints = &spk_r_endpoint, 103 } 104 }; 105 106 static const struct snd_soc_acpi_adr_device rt715_3_adr[] = { 107 { 108 .adr = 0x000310025D071500, 109 .num_endpoints = 1, 110 .endpoints = &single_endpoint, 111 } 112 }; 113 114 static const struct snd_soc_acpi_link_adr icl_3_in_1_default[] = { 115 { 116 .mask = BIT(0), 117 .num_adr = ARRAY_SIZE(rt711_0_adr), 118 .adr_d = rt711_0_adr, 119 }, 120 { 121 .mask = BIT(1), 122 .num_adr = ARRAY_SIZE(rt1308_1_group1_adr), 123 .adr_d = rt1308_1_group1_adr, 124 }, 125 { 126 .mask = BIT(2), 127 .num_adr = ARRAY_SIZE(rt1308_2_group1_adr), 128 .adr_d = rt1308_2_group1_adr, 129 }, 130 { 131 .mask = BIT(3), 132 .num_adr = ARRAY_SIZE(rt715_3_adr), 133 .adr_d = rt715_3_adr, 134 }, 135 {} 136 }; 137 138 static const struct snd_soc_acpi_link_adr icl_3_in_1_mono_amp[] = { 139 { 140 .mask = BIT(0), 141 .num_adr = ARRAY_SIZE(rt711_0_adr), 142 .adr_d = rt711_0_adr, 143 }, 144 { 145 .mask = BIT(1), 146 .num_adr = ARRAY_SIZE(rt1308_1_adr), 147 .adr_d = rt1308_1_adr, 148 }, 149 { 150 .mask = BIT(3), 151 .num_adr = ARRAY_SIZE(rt715_3_adr), 152 .adr_d = rt715_3_adr, 153 }, 154 {} 155 }; 156 157 struct snd_soc_acpi_mach snd_soc_acpi_intel_icl_sdw_machines[] = { 158 { 159 .link_mask = 0xF, /* 4 active links required */ 160 .links = icl_3_in_1_default, 161 .drv_name = "sof_sdw", 162 .sof_fw_filename = "sof-icl.ri", 163 .sof_tplg_filename = "sof-icl-rt711-rt1308-rt715.tplg", 164 }, 165 { 166 .link_mask = 0xB, /* 3 active links required */ 167 .links = icl_3_in_1_mono_amp, 168 .drv_name = "sof_sdw", 169 .sof_fw_filename = "sof-icl.ri", 170 .sof_tplg_filename = "sof-icl-rt711-rt1308-rt715-mono.tplg", 171 }, 172 { 173 .link_mask = 0x1, /* rt700 connected on link0 */ 174 .links = icl_rvp, 175 .drv_name = "sof_sdw", 176 .sof_fw_filename = "sof-icl.ri", 177 .sof_tplg_filename = "sof-icl-rt700.tplg", 178 }, 179 {}, 180 }; 181 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_icl_sdw_machines); 182 183 MODULE_LICENSE("GPL v2"); 184 MODULE_DESCRIPTION("Intel Common ACPI Match module"); 185