1 // SPDX-License-Identifier: GPL-2.0-only 1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 2 /* 3 * soc-apci-intel-rpl-match.c - tables and sup 3 * soc-apci-intel-rpl-match.c - tables and support for RPL ACPI enumeration. 4 * 4 * 5 * Copyright (c) 2022 Intel Corporation. 5 * Copyright (c) 2022 Intel Corporation. 6 */ 6 */ 7 7 8 #include <sound/soc-acpi.h> 8 #include <sound/soc-acpi.h> 9 #include <sound/soc-acpi-intel-match.h> 9 #include <sound/soc-acpi-intel-match.h> 10 #include <sound/soc-acpi-intel-ssp-common.h> 10 #include <sound/soc-acpi-intel-ssp-common.h> 11 11 12 static const struct snd_soc_acpi_endpoint sing 12 static const struct snd_soc_acpi_endpoint single_endpoint = { 13 .num = 0, 13 .num = 0, 14 .aggregated = 0, 14 .aggregated = 0, 15 .group_position = 0, 15 .group_position = 0, 16 .group_id = 0, 16 .group_id = 0, 17 }; 17 }; 18 18 19 static const struct snd_soc_acpi_endpoint spk_ 19 static const struct snd_soc_acpi_endpoint spk_l_endpoint = { 20 .num = 0, 20 .num = 0, 21 .aggregated = 1, 21 .aggregated = 1, 22 .group_position = 0, 22 .group_position = 0, 23 .group_id = 1, 23 .group_id = 1, 24 }; 24 }; 25 25 26 static const struct snd_soc_acpi_endpoint spk_ 26 static const struct snd_soc_acpi_endpoint spk_r_endpoint = { 27 .num = 0, 27 .num = 0, 28 .aggregated = 1, 28 .aggregated = 1, 29 .group_position = 1, 29 .group_position = 1, 30 .group_id = 1, 30 .group_id = 1, 31 }; 31 }; 32 32 33 static const struct snd_soc_acpi_endpoint cs42 33 static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = { 34 { /* Jack Playback Endpoint */ 34 { /* Jack Playback Endpoint */ 35 .num = 0, 35 .num = 0, 36 .aggregated = 0, 36 .aggregated = 0, 37 .group_position = 0, 37 .group_position = 0, 38 .group_id = 0, 38 .group_id = 0, 39 }, 39 }, 40 { /* DMIC Capture Endpoint */ 40 { /* DMIC Capture Endpoint */ 41 .num = 1, 41 .num = 1, 42 .aggregated = 0, 42 .aggregated = 0, 43 .group_position = 0, 43 .group_position = 0, 44 .group_id = 0, 44 .group_id = 0, 45 }, 45 }, 46 { /* Jack Capture Endpoint */ 46 { /* Jack Capture Endpoint */ 47 .num = 2, 47 .num = 2, 48 .aggregated = 0, 48 .aggregated = 0, 49 .group_position = 0, 49 .group_position = 0, 50 .group_id = 0, 50 .group_id = 0, 51 }, 51 }, 52 { /* Speaker Playback Endpoint */ 52 { /* Speaker Playback Endpoint */ 53 .num = 3, 53 .num = 3, 54 .aggregated = 0, 54 .aggregated = 0, 55 .group_position = 0, 55 .group_position = 0, 56 .group_id = 0, 56 .group_id = 0, 57 }, 57 }, 58 }; 58 }; 59 59 60 static const struct snd_soc_acpi_adr_device cs 60 static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = { 61 { 61 { 62 .adr = 0x00003001FA424301ull, 62 .adr = 0x00003001FA424301ull, 63 .num_endpoints = ARRAY_SIZE(cs 63 .num_endpoints = ARRAY_SIZE(cs42l43_endpoints), 64 .endpoints = cs42l43_endpoints 64 .endpoints = cs42l43_endpoints, 65 .name_prefix = "cs42l43" 65 .name_prefix = "cs42l43" 66 } 66 } 67 }; 67 }; 68 68 69 static const struct snd_soc_acpi_adr_device rt 69 static const struct snd_soc_acpi_adr_device rt711_0_adr[] = { 70 { 70 { 71 .adr = 0x000020025D071100ull, 71 .adr = 0x000020025D071100ull, 72 .num_endpoints = 1, 72 .num_endpoints = 1, 73 .endpoints = &single_endpoint, 73 .endpoints = &single_endpoint, 74 .name_prefix = "rt711" 74 .name_prefix = "rt711" 75 } 75 } 76 }; 76 }; 77 77 78 static const struct snd_soc_acpi_link_adr rpl_ 78 static const struct snd_soc_acpi_link_adr rpl_rvp[] = { 79 { 79 { 80 .mask = BIT(0), 80 .mask = BIT(0), 81 .num_adr = ARRAY_SIZE(rt711_0_ 81 .num_adr = ARRAY_SIZE(rt711_0_adr), 82 .adr_d = rt711_0_adr, 82 .adr_d = rt711_0_adr, 83 }, 83 }, 84 {} 84 {} 85 }; 85 }; 86 86 87 static const struct snd_soc_acpi_adr_device rt 87 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = { 88 { 88 { 89 .adr = 0x000030025D071101ull, 89 .adr = 0x000030025D071101ull, 90 .num_endpoints = 1, 90 .num_endpoints = 1, 91 .endpoints = &single_endpoint, 91 .endpoints = &single_endpoint, 92 .name_prefix = "rt711" 92 .name_prefix = "rt711" 93 } 93 } 94 }; 94 }; 95 95 96 static const struct snd_soc_acpi_adr_device rt 96 static const struct snd_soc_acpi_adr_device rt711_sdca_2_adr[] = { 97 { 97 { 98 .adr = 0x000230025D071101ull, 98 .adr = 0x000230025D071101ull, 99 .num_endpoints = 1, 99 .num_endpoints = 1, 100 .endpoints = &single_endpoint, 100 .endpoints = &single_endpoint, 101 .name_prefix = "rt711" 101 .name_prefix = "rt711" 102 } 102 } 103 }; 103 }; 104 104 105 static const struct snd_soc_acpi_adr_device rt 105 static const struct snd_soc_acpi_adr_device rt1316_1_group1_adr[] = { 106 { 106 { 107 .adr = 0x000131025D131601ull, 107 .adr = 0x000131025D131601ull, /* unique ID is set for some reason */ 108 .num_endpoints = 1, 108 .num_endpoints = 1, 109 .endpoints = &spk_l_endpoint, 109 .endpoints = &spk_l_endpoint, 110 .name_prefix = "rt1316-1" 110 .name_prefix = "rt1316-1" 111 } 111 } 112 }; 112 }; 113 113 114 static const struct snd_soc_acpi_adr_device rt 114 static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = { 115 { 115 { 116 .adr = 0x000230025D131601ull, 116 .adr = 0x000230025D131601ull, 117 .num_endpoints = 1, 117 .num_endpoints = 1, 118 .endpoints = &spk_r_endpoint, 118 .endpoints = &spk_r_endpoint, 119 .name_prefix = "rt1316-2" 119 .name_prefix = "rt1316-2" 120 } 120 } 121 }; 121 }; 122 122 123 static const struct snd_soc_acpi_adr_device rt 123 static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = { 124 { 124 { 125 .adr = 0x000330025D131601ull, 125 .adr = 0x000330025D131601ull, 126 .num_endpoints = 1, 126 .num_endpoints = 1, 127 .endpoints = &spk_r_endpoint, 127 .endpoints = &spk_r_endpoint, 128 .name_prefix = "rt1316-2" 128 .name_prefix = "rt1316-2" 129 } 129 } 130 }; 130 }; 131 131 132 static const struct snd_soc_acpi_adr_device rt 132 static const struct snd_soc_acpi_adr_device rt1316_0_group2_adr[] = { 133 { 133 { 134 .adr = 0x000030025D131601ull, 134 .adr = 0x000030025D131601ull, 135 .num_endpoints = 1, 135 .num_endpoints = 1, 136 .endpoints = &spk_l_endpoint, 136 .endpoints = &spk_l_endpoint, 137 .name_prefix = "rt1316-1" 137 .name_prefix = "rt1316-1" 138 } 138 } 139 }; 139 }; 140 140 141 static const struct snd_soc_acpi_adr_device rt 141 static const struct snd_soc_acpi_adr_device rt1316_1_group2_adr[] = { 142 { 142 { 143 .adr = 0x000131025D131601ull, 143 .adr = 0x000131025D131601ull, 144 .num_endpoints = 1, 144 .num_endpoints = 1, 145 .endpoints = &spk_r_endpoint, 145 .endpoints = &spk_r_endpoint, 146 .name_prefix = "rt1316-2" 146 .name_prefix = "rt1316-2" 147 } 147 } 148 }; 148 }; 149 149 150 static const struct snd_soc_acpi_adr_device rt 150 static const struct snd_soc_acpi_adr_device rt1318_1_group1_adr[] = { 151 { 151 { 152 .adr = 0x000132025D131801ull, 152 .adr = 0x000132025D131801ull, 153 .num_endpoints = 1, 153 .num_endpoints = 1, 154 .endpoints = &spk_l_endpoint, 154 .endpoints = &spk_l_endpoint, 155 .name_prefix = "rt1318-1" 155 .name_prefix = "rt1318-1" 156 } 156 } 157 }; 157 }; 158 158 159 static const struct snd_soc_acpi_adr_device rt 159 static const struct snd_soc_acpi_adr_device rt1318_2_group1_adr[] = { 160 { 160 { 161 .adr = 0x000230025D131801ull, 161 .adr = 0x000230025D131801ull, 162 .num_endpoints = 1, 162 .num_endpoints = 1, 163 .endpoints = &spk_r_endpoint, 163 .endpoints = &spk_r_endpoint, 164 .name_prefix = "rt1318-2" 164 .name_prefix = "rt1318-2" 165 } 165 } 166 }; 166 }; 167 167 168 static const struct snd_soc_acpi_adr_device rt 168 static const struct snd_soc_acpi_adr_device rt714_0_adr[] = { 169 { 169 { 170 .adr = 0x000030025D071401ull, 170 .adr = 0x000030025D071401ull, 171 .num_endpoints = 1, 171 .num_endpoints = 1, 172 .endpoints = &single_endpoint, 172 .endpoints = &single_endpoint, 173 .name_prefix = "rt714" 173 .name_prefix = "rt714" 174 } 174 } 175 }; 175 }; 176 176 177 static const struct snd_soc_acpi_adr_device rt 177 static const struct snd_soc_acpi_adr_device rt714_2_adr[] = { 178 { 178 { 179 .adr = 0x000230025D071401ull, 179 .adr = 0x000230025D071401ull, 180 .num_endpoints = 1, 180 .num_endpoints = 1, 181 .endpoints = &single_endpoint, 181 .endpoints = &single_endpoint, 182 .name_prefix = "rt714" 182 .name_prefix = "rt714" 183 } 183 } 184 }; 184 }; 185 185 186 static const struct snd_soc_acpi_adr_device rt 186 static const struct snd_soc_acpi_adr_device rt714_3_adr[] = { 187 { 187 { 188 .adr = 0x000330025D071401ull, 188 .adr = 0x000330025D071401ull, 189 .num_endpoints = 1, 189 .num_endpoints = 1, 190 .endpoints = &single_endpoint, 190 .endpoints = &single_endpoint, 191 .name_prefix = "rt714" 191 .name_prefix = "rt714" 192 } 192 } 193 }; 193 }; 194 194 195 static const struct snd_soc_acpi_link_adr rpl_ 195 static const struct snd_soc_acpi_link_adr rpl_cs42l43_l0[] = { 196 { 196 { 197 .mask = BIT(0), 197 .mask = BIT(0), 198 .num_adr = ARRAY_SIZE(cs42l43_ 198 .num_adr = ARRAY_SIZE(cs42l43_0_adr), 199 .adr_d = cs42l43_0_adr, 199 .adr_d = cs42l43_0_adr, 200 }, 200 }, 201 {} 201 {} 202 }; 202 }; 203 203 204 static const struct snd_soc_acpi_link_adr rpl_ 204 static const struct snd_soc_acpi_link_adr rpl_sdca_3_in_1[] = { 205 { 205 { 206 .mask = BIT(0), 206 .mask = BIT(0), 207 .num_adr = ARRAY_SIZE(rt711_sd 207 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 208 .adr_d = rt711_sdca_0_adr, 208 .adr_d = rt711_sdca_0_adr, 209 }, 209 }, 210 { 210 { 211 .mask = BIT(1), 211 .mask = BIT(1), 212 .num_adr = ARRAY_SIZE(rt1316_1 212 .num_adr = ARRAY_SIZE(rt1316_1_group1_adr), 213 .adr_d = rt1316_1_group1_adr, 213 .adr_d = rt1316_1_group1_adr, 214 }, 214 }, 215 { 215 { 216 .mask = BIT(2), 216 .mask = BIT(2), 217 .num_adr = ARRAY_SIZE(rt714_2_ 217 .num_adr = ARRAY_SIZE(rt714_2_adr), 218 .adr_d = rt714_2_adr, 218 .adr_d = rt714_2_adr, 219 }, 219 }, 220 { 220 { 221 .mask = BIT(3), 221 .mask = BIT(3), 222 .num_adr = ARRAY_SIZE(rt1316_3 222 .num_adr = ARRAY_SIZE(rt1316_3_group1_adr), 223 .adr_d = rt1316_3_group1_adr, 223 .adr_d = rt1316_3_group1_adr, 224 }, 224 }, 225 {} 225 {} 226 }; 226 }; 227 227 228 static const struct snd_soc_acpi_link_adr rpl_ 228 static const struct snd_soc_acpi_link_adr rpl_sdw_rt711_link0_rt1316_link12_rt714_link3[] = { 229 { 229 { 230 .mask = BIT(0), 230 .mask = BIT(0), 231 .num_adr = ARRAY_SIZE(rt711_sd 231 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 232 .adr_d = rt711_sdca_0_adr, 232 .adr_d = rt711_sdca_0_adr, 233 }, 233 }, 234 { 234 { 235 .mask = BIT(1), 235 .mask = BIT(1), 236 .num_adr = ARRAY_SIZE(rt1316_1 236 .num_adr = ARRAY_SIZE(rt1316_1_group1_adr), 237 .adr_d = rt1316_1_group1_adr, 237 .adr_d = rt1316_1_group1_adr, 238 }, 238 }, 239 { 239 { 240 .mask = BIT(2), 240 .mask = BIT(2), 241 .num_adr = ARRAY_SIZE(rt1316_2 241 .num_adr = ARRAY_SIZE(rt1316_2_group1_adr), 242 .adr_d = rt1316_2_group1_adr, 242 .adr_d = rt1316_2_group1_adr, 243 }, 243 }, 244 { 244 { 245 .mask = BIT(3), 245 .mask = BIT(3), 246 .num_adr = ARRAY_SIZE(rt714_3_ 246 .num_adr = ARRAY_SIZE(rt714_3_adr), 247 .adr_d = rt714_3_adr, 247 .adr_d = rt714_3_adr, 248 }, 248 }, 249 {} 249 {} 250 }; 250 }; 251 251 252 static const struct snd_soc_acpi_link_adr rpl_ 252 static const struct snd_soc_acpi_link_adr rpl_sdw_rt711_link2_rt1316_link01_rt714_link3[] = { 253 { 253 { 254 .mask = BIT(2), 254 .mask = BIT(2), 255 .num_adr = ARRAY_SIZE(rt711_sd 255 .num_adr = ARRAY_SIZE(rt711_sdca_2_adr), 256 .adr_d = rt711_sdca_2_adr, 256 .adr_d = rt711_sdca_2_adr, 257 }, 257 }, 258 { 258 { 259 .mask = BIT(0), 259 .mask = BIT(0), 260 .num_adr = ARRAY_SIZE(rt1316_0 260 .num_adr = ARRAY_SIZE(rt1316_0_group2_adr), 261 .adr_d = rt1316_0_group2_adr, 261 .adr_d = rt1316_0_group2_adr, 262 }, 262 }, 263 { 263 { 264 .mask = BIT(1), 264 .mask = BIT(1), 265 .num_adr = ARRAY_SIZE(rt1316_1 265 .num_adr = ARRAY_SIZE(rt1316_1_group2_adr), 266 .adr_d = rt1316_1_group2_adr, 266 .adr_d = rt1316_1_group2_adr, 267 }, 267 }, 268 { 268 { 269 .mask = BIT(3), 269 .mask = BIT(3), 270 .num_adr = ARRAY_SIZE(rt714_3_ 270 .num_adr = ARRAY_SIZE(rt714_3_adr), 271 .adr_d = rt714_3_adr, 271 .adr_d = rt714_3_adr, 272 }, 272 }, 273 {} 273 {} 274 }; 274 }; 275 275 276 static const struct snd_soc_acpi_link_adr rpl_ 276 static const struct snd_soc_acpi_link_adr rpl_sdw_rt711_link2_rt1316_link01[] = { 277 { 277 { 278 .mask = BIT(2), 278 .mask = BIT(2), 279 .num_adr = ARRAY_SIZE(rt711_sd 279 .num_adr = ARRAY_SIZE(rt711_sdca_2_adr), 280 .adr_d = rt711_sdca_2_adr, 280 .adr_d = rt711_sdca_2_adr, 281 }, 281 }, 282 { 282 { 283 .mask = BIT(0), 283 .mask = BIT(0), 284 .num_adr = ARRAY_SIZE(rt1316_0 284 .num_adr = ARRAY_SIZE(rt1316_0_group2_adr), 285 .adr_d = rt1316_0_group2_adr, 285 .adr_d = rt1316_0_group2_adr, 286 }, 286 }, 287 { 287 { 288 .mask = BIT(1), 288 .mask = BIT(1), 289 .num_adr = ARRAY_SIZE(rt1316_1 289 .num_adr = ARRAY_SIZE(rt1316_1_group2_adr), 290 .adr_d = rt1316_1_group2_adr, 290 .adr_d = rt1316_1_group2_adr, 291 }, 291 }, 292 {} 292 {} 293 }; 293 }; 294 294 295 static const struct snd_soc_acpi_link_adr rpl_ 295 static const struct snd_soc_acpi_link_adr rpl_sdw_rt711_link0_rt1316_link12[] = { 296 { 296 { 297 .mask = BIT(0), 297 .mask = BIT(0), 298 .num_adr = ARRAY_SIZE(rt711_sd 298 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 299 .adr_d = rt711_sdca_0_adr, 299 .adr_d = rt711_sdca_0_adr, 300 }, 300 }, 301 { 301 { 302 .mask = BIT(1), 302 .mask = BIT(1), 303 .num_adr = ARRAY_SIZE(rt1316_1 303 .num_adr = ARRAY_SIZE(rt1316_1_group1_adr), 304 .adr_d = rt1316_1_group1_adr, 304 .adr_d = rt1316_1_group1_adr, 305 }, 305 }, 306 { 306 { 307 .mask = BIT(2), 307 .mask = BIT(2), 308 .num_adr = ARRAY_SIZE(rt1316_2 308 .num_adr = ARRAY_SIZE(rt1316_2_group1_adr), 309 .adr_d = rt1316_2_group1_adr, 309 .adr_d = rt1316_2_group1_adr, 310 }, 310 }, 311 {} 311 {} 312 }; 312 }; 313 313 314 static const struct snd_soc_acpi_link_adr rpl_ 314 static const struct snd_soc_acpi_link_adr rpl_sdw_rt711_link0_rt1318_link12_rt714_link3[] = { 315 { 315 { 316 .mask = BIT(0), 316 .mask = BIT(0), 317 .num_adr = ARRAY_SIZE(rt711_sd 317 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 318 .adr_d = rt711_sdca_0_adr, 318 .adr_d = rt711_sdca_0_adr, 319 }, 319 }, 320 { 320 { 321 .mask = BIT(1), 321 .mask = BIT(1), 322 .num_adr = ARRAY_SIZE(rt1318_1 322 .num_adr = ARRAY_SIZE(rt1318_1_group1_adr), 323 .adr_d = rt1318_1_group1_adr, 323 .adr_d = rt1318_1_group1_adr, 324 }, 324 }, 325 { 325 { 326 .mask = BIT(2), 326 .mask = BIT(2), 327 .num_adr = ARRAY_SIZE(rt1318_2 327 .num_adr = ARRAY_SIZE(rt1318_2_group1_adr), 328 .adr_d = rt1318_2_group1_adr, 328 .adr_d = rt1318_2_group1_adr, 329 }, 329 }, 330 { 330 { 331 .mask = BIT(3), 331 .mask = BIT(3), 332 .num_adr = ARRAY_SIZE(rt714_3_ 332 .num_adr = ARRAY_SIZE(rt714_3_adr), 333 .adr_d = rt714_3_adr, 333 .adr_d = rt714_3_adr, 334 }, 334 }, 335 {} 335 {} 336 }; 336 }; 337 337 338 static const struct snd_soc_acpi_link_adr rpl_ 338 static const struct snd_soc_acpi_link_adr rpl_sdw_rt711_link0_rt1318_link12[] = { 339 { 339 { 340 .mask = BIT(0), 340 .mask = BIT(0), 341 .num_adr = ARRAY_SIZE(rt711_sd 341 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 342 .adr_d = rt711_sdca_0_adr, 342 .adr_d = rt711_sdca_0_adr, 343 }, 343 }, 344 { 344 { 345 .mask = BIT(1), 345 .mask = BIT(1), 346 .num_adr = ARRAY_SIZE(rt1318_1 346 .num_adr = ARRAY_SIZE(rt1318_1_group1_adr), 347 .adr_d = rt1318_1_group1_adr, 347 .adr_d = rt1318_1_group1_adr, 348 }, 348 }, 349 { 349 { 350 .mask = BIT(2), 350 .mask = BIT(2), 351 .num_adr = ARRAY_SIZE(rt1318_2 351 .num_adr = ARRAY_SIZE(rt1318_2_group1_adr), 352 .adr_d = rt1318_2_group1_adr, 352 .adr_d = rt1318_2_group1_adr, 353 }, 353 }, 354 {} 354 {} 355 }; 355 }; 356 356 357 static const struct snd_soc_acpi_link_adr rpl_ 357 static const struct snd_soc_acpi_link_adr rpl_sdw_rt1316_link12_rt714_link0[] = { 358 { 358 { 359 .mask = BIT(1), 359 .mask = BIT(1), 360 .num_adr = ARRAY_SIZE(rt1316_1 360 .num_adr = ARRAY_SIZE(rt1316_1_group1_adr), 361 .adr_d = rt1316_1_group1_adr, 361 .adr_d = rt1316_1_group1_adr, 362 }, 362 }, 363 { 363 { 364 .mask = BIT(2), 364 .mask = BIT(2), 365 .num_adr = ARRAY_SIZE(rt1316_2 365 .num_adr = ARRAY_SIZE(rt1316_2_group1_adr), 366 .adr_d = rt1316_2_group1_adr, 366 .adr_d = rt1316_2_group1_adr, 367 }, 367 }, 368 { 368 { 369 .mask = BIT(0), 369 .mask = BIT(0), 370 .num_adr = ARRAY_SIZE(rt714_0_ 370 .num_adr = ARRAY_SIZE(rt714_0_adr), 371 .adr_d = rt714_0_adr, 371 .adr_d = rt714_0_adr, 372 }, 372 }, 373 {} 373 {} 374 }; 374 }; 375 375 376 static const struct snd_soc_acpi_link_adr rpl_ 376 static const struct snd_soc_acpi_link_adr rpl_sdca_rvp[] = { 377 { 377 { 378 .mask = BIT(0), 378 .mask = BIT(0), 379 .num_adr = ARRAY_SIZE(rt711_sd 379 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 380 .adr_d = rt711_sdca_0_adr, 380 .adr_d = rt711_sdca_0_adr, 381 }, 381 }, 382 {} 382 {} 383 }; 383 }; 384 384 385 static const struct snd_soc_acpi_link_adr rplp 385 static const struct snd_soc_acpi_link_adr rplp_crb[] = { 386 { 386 { 387 .mask = BIT(2), 387 .mask = BIT(2), 388 .num_adr = ARRAY_SIZE(rt711_sd 388 .num_adr = ARRAY_SIZE(rt711_sdca_2_adr), 389 .adr_d = rt711_sdca_2_adr, 389 .adr_d = rt711_sdca_2_adr, 390 }, 390 }, 391 {} 391 {} 392 }; 392 }; 393 393 394 static const struct snd_soc_acpi_codecs rpl_rt 394 static const struct snd_soc_acpi_codecs rpl_rt5682_hp = { 395 .num_codecs = 2, 395 .num_codecs = 2, 396 .codecs = {RT5682_ACPI_HID, RT5682S_AC 396 .codecs = {RT5682_ACPI_HID, RT5682S_ACPI_HID}, 397 }; 397 }; 398 398 399 static const struct snd_soc_acpi_codecs rpl_es 399 static const struct snd_soc_acpi_codecs rpl_essx_83x6 = { 400 .num_codecs = 3, 400 .num_codecs = 3, 401 .codecs = { "ESSX8316", "ESSX8326", "E 401 .codecs = { "ESSX8316", "ESSX8326", "ESSX8336"}, 402 }; 402 }; 403 403 404 static const struct snd_soc_acpi_codecs rpl_ma 404 static const struct snd_soc_acpi_codecs rpl_max98357a_amp = { 405 .num_codecs = 1, 405 .num_codecs = 1, 406 .codecs = {"MX98357A"} 406 .codecs = {"MX98357A"} 407 }; 407 }; 408 408 409 static const struct snd_soc_acpi_codecs rpl_lt 409 static const struct snd_soc_acpi_codecs rpl_lt6911_hdmi = { 410 .num_codecs = 1, 410 .num_codecs = 1, 411 .codecs = {"INTC10B0"} 411 .codecs = {"INTC10B0"} 412 }; 412 }; 413 413 414 struct snd_soc_acpi_mach snd_soc_acpi_intel_rp 414 struct snd_soc_acpi_mach snd_soc_acpi_intel_rpl_machines[] = { 415 { 415 { 416 .comp_ids = &rpl_rt5682_hp, 416 .comp_ids = &rpl_rt5682_hp, 417 .drv_name = "rpl_mx98357_rt568 417 .drv_name = "rpl_mx98357_rt5682", 418 .machine_quirk = snd_soc_acpi_ 418 .machine_quirk = snd_soc_acpi_codec_list, 419 .quirk_data = &rpl_max98357a_a 419 .quirk_data = &rpl_max98357a_amp, 420 .sof_tplg_filename = "sof-rpl- 420 .sof_tplg_filename = "sof-rpl-max98357a-rt5682.tplg", 421 }, 421 }, 422 { 422 { 423 .comp_ids = &rpl_rt5682_hp, 423 .comp_ids = &rpl_rt5682_hp, 424 .drv_name = "rpl_rt5682_c1_h02 424 .drv_name = "rpl_rt5682_c1_h02", 425 .machine_quirk = snd_soc_acpi_ 425 .machine_quirk = snd_soc_acpi_codec_list, 426 .quirk_data = &rpl_lt6911_hdmi 426 .quirk_data = &rpl_lt6911_hdmi, 427 .sof_tplg_filename = "sof-rpl- 427 .sof_tplg_filename = "sof-rpl-rt5682-ssp1-hdmi-ssp02.tplg", 428 }, 428 }, 429 { 429 { 430 .comp_ids = &rpl_essx_83x6, 430 .comp_ids = &rpl_essx_83x6, 431 .drv_name = "rpl_es83x6_c1_h02 431 .drv_name = "rpl_es83x6_c1_h02", 432 .machine_quirk = snd_soc_acpi_ 432 .machine_quirk = snd_soc_acpi_codec_list, 433 .quirk_data = &rpl_lt6911_hdmi 433 .quirk_data = &rpl_lt6911_hdmi, 434 .sof_tplg_filename = "sof-rpl- 434 .sof_tplg_filename = "sof-rpl-es83x6-ssp1-hdmi-ssp02.tplg", 435 }, 435 }, 436 { 436 { 437 .comp_ids = &rpl_essx_83x6, 437 .comp_ids = &rpl_essx_83x6, 438 .drv_name = "sof-essx8336", 438 .drv_name = "sof-essx8336", 439 .sof_tplg_filename = "sof-rpl- 439 .sof_tplg_filename = "sof-rpl-es83x6", /* the tplg suffix is added at run time */ 440 .tplg_quirk_mask = SND_SOC_ACP 440 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER | 441 SND_SO 441 SND_SOC_ACPI_TPLG_INTEL_SSP_MSB | 442 SND_SO 442 SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER, 443 }, 443 }, 444 /* place boards for each headphone cod 444 /* place boards for each headphone codec: sof driver will complete the 445 * tplg name and machine driver will d 445 * tplg name and machine driver will detect the amp type 446 */ 446 */ 447 { 447 { 448 .id = CS42L42_ACPI_HID, 448 .id = CS42L42_ACPI_HID, 449 .drv_name = "rpl_cs42l42_def", 449 .drv_name = "rpl_cs42l42_def", 450 .sof_tplg_filename = "sof-rpl" 450 .sof_tplg_filename = "sof-rpl", /* the tplg suffix is added at run time */ 451 .tplg_quirk_mask = SND_SOC_ACP 451 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME | 452 SND_SO 452 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME, 453 }, 453 }, 454 { 454 { 455 .id = DA7219_ACPI_HID, 455 .id = DA7219_ACPI_HID, 456 .drv_name = "rpl_da7219_def", 456 .drv_name = "rpl_da7219_def", 457 .sof_tplg_filename = "sof-rpl" 457 .sof_tplg_filename = "sof-rpl", /* the tplg suffix is added at run time */ 458 .tplg_quirk_mask = SND_SOC_ACP 458 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME | 459 SND_SO 459 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME, 460 }, 460 }, 461 { 461 { 462 .id = NAU8825_ACPI_HID, 462 .id = NAU8825_ACPI_HID, 463 .drv_name = "rpl_nau8825_def", 463 .drv_name = "rpl_nau8825_def", 464 .sof_tplg_filename = "sof-rpl" 464 .sof_tplg_filename = "sof-rpl", /* the tplg suffix is added at run time */ 465 .tplg_quirk_mask = SND_SOC_ACP 465 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME | 466 SND_SO 466 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME, 467 }, 467 }, 468 { 468 { 469 .id = RT5650_ACPI_HID, 469 .id = RT5650_ACPI_HID, 470 .drv_name = "rpl_rt5682_def", 470 .drv_name = "rpl_rt5682_def", 471 .sof_tplg_filename = "sof-rpl" 471 .sof_tplg_filename = "sof-rpl", /* the tplg suffix is added at run time */ 472 .tplg_quirk_mask = SND_SOC_ACP 472 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME | 473 SND_SO 473 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME, 474 }, 474 }, 475 { 475 { 476 .comp_ids = &rpl_rt5682_hp, 476 .comp_ids = &rpl_rt5682_hp, 477 .drv_name = "rpl_rt5682_def", 477 .drv_name = "rpl_rt5682_def", 478 .sof_tplg_filename = "sof-rpl" 478 .sof_tplg_filename = "sof-rpl", /* the tplg suffix is added at run time */ 479 .tplg_quirk_mask = SND_SOC_ACP 479 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME | 480 SND_SO 480 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME, 481 }, 481 }, 482 /* place amp-only boards in the end of 482 /* place amp-only boards in the end of table */ 483 { 483 { 484 .id = "INTC10B0", 484 .id = "INTC10B0", 485 .drv_name = "rpl_lt6911_hdmi_s 485 .drv_name = "rpl_lt6911_hdmi_ssp", 486 .sof_tplg_filename = "sof-rpl- 486 .sof_tplg_filename = "sof-rpl-nocodec-hdmi-ssp02.tplg" 487 }, 487 }, 488 {}, 488 {}, 489 }; 489 }; 490 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_rpl_machi 490 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_rpl_machines); 491 491 492 /* this table is used when there is no I2S cod 492 /* this table is used when there is no I2S codec present */ 493 struct snd_soc_acpi_mach snd_soc_acpi_intel_rp 493 struct snd_soc_acpi_mach snd_soc_acpi_intel_rpl_sdw_machines[] = { 494 { 494 { 495 .link_mask = BIT(0), 495 .link_mask = BIT(0), 496 .links = rpl_cs42l43_l0, 496 .links = rpl_cs42l43_l0, 497 .drv_name = "sof_sdw", 497 .drv_name = "sof_sdw", 498 .sof_tplg_filename = "sof-rpl- 498 .sof_tplg_filename = "sof-rpl-cs42l43-l0.tplg", 499 }, 499 }, 500 { 500 { 501 .link_mask = 0xF, /* 4 active 501 .link_mask = 0xF, /* 4 active links required */ 502 .links = rpl_sdca_3_in_1, 502 .links = rpl_sdca_3_in_1, 503 .drv_name = "sof_sdw", 503 .drv_name = "sof_sdw", 504 .sof_tplg_filename = "sof-rpl- 504 .sof_tplg_filename = "sof-rpl-rt711-l0-rt1316-l13-rt714-l2.tplg", 505 }, 505 }, 506 { 506 { 507 .link_mask = 0xF, /* 4 active 507 .link_mask = 0xF, /* 4 active links required */ 508 .links = rpl_sdw_rt711_link2_r 508 .links = rpl_sdw_rt711_link2_rt1316_link01_rt714_link3, 509 .drv_name = "sof_sdw", 509 .drv_name = "sof_sdw", 510 .sof_tplg_filename = "sof-rpl- 510 .sof_tplg_filename = "sof-rpl-rt711-l2-rt1316-l01-rt714-l3.tplg", 511 }, 511 }, 512 { 512 { 513 .link_mask = 0xF, /* 4 active 513 .link_mask = 0xF, /* 4 active links required */ 514 .links = rpl_sdw_rt711_link0_r 514 .links = rpl_sdw_rt711_link0_rt1316_link12_rt714_link3, 515 .drv_name = "sof_sdw", 515 .drv_name = "sof_sdw", 516 .sof_tplg_filename = "sof-rpl- 516 .sof_tplg_filename = "sof-rpl-rt711-l0-rt1316-l12-rt714-l3.tplg", 517 }, 517 }, 518 { 518 { 519 .link_mask = 0xF, /* 4 active 519 .link_mask = 0xF, /* 4 active links required */ 520 .links = rpl_sdw_rt711_link0_r 520 .links = rpl_sdw_rt711_link0_rt1318_link12_rt714_link3, 521 .drv_name = "sof_sdw", 521 .drv_name = "sof_sdw", 522 .sof_tplg_filename = "sof-rpl- 522 .sof_tplg_filename = "sof-rpl-rt711-l0-rt1318-l12-rt714-l3.tplg", 523 }, 523 }, 524 { 524 { 525 .link_mask = 0x7, /* rt711 on 525 .link_mask = 0x7, /* rt711 on link0 & two rt1316s on link1 and link2 */ 526 .links = rpl_sdw_rt711_link0_r 526 .links = rpl_sdw_rt711_link0_rt1316_link12, 527 .drv_name = "sof_sdw", 527 .drv_name = "sof_sdw", 528 .sof_tplg_filename = "sof-rpl- 528 .sof_tplg_filename = "sof-rpl-rt711-l0-rt1316-l12.tplg", 529 }, 529 }, 530 { 530 { 531 .link_mask = 0x7, /* rt711 on 531 .link_mask = 0x7, /* rt711 on link0 & two rt1318s on link1 and link2 */ 532 .links = rpl_sdw_rt711_link0_r 532 .links = rpl_sdw_rt711_link0_rt1318_link12, 533 .drv_name = "sof_sdw", 533 .drv_name = "sof_sdw", 534 .sof_tplg_filename = "sof-rpl- 534 .sof_tplg_filename = "sof-rpl-rt711-l0-rt1318-l12.tplg", 535 }, 535 }, 536 { 536 { 537 .link_mask = 0x7, /* rt714 on 537 .link_mask = 0x7, /* rt714 on link0 & two rt1316s on link1 and link2 */ 538 .links = rpl_sdw_rt1316_link12 538 .links = rpl_sdw_rt1316_link12_rt714_link0, 539 .drv_name = "sof_sdw", 539 .drv_name = "sof_sdw", 540 .sof_tplg_filename = "sof-rpl- 540 .sof_tplg_filename = "sof-rpl-rt1316-l12-rt714-l0.tplg", 541 }, 541 }, 542 { 542 { 543 .link_mask = 0x7, /* rt711 on 543 .link_mask = 0x7, /* rt711 on link2 & two rt1316s on link0 and link1 */ 544 .links = rpl_sdw_rt711_link2_r 544 .links = rpl_sdw_rt711_link2_rt1316_link01, 545 .drv_name = "sof_sdw", 545 .drv_name = "sof_sdw", 546 .sof_tplg_filename = "sof-rpl- 546 .sof_tplg_filename = "sof-rpl-rt711-l2-rt1316-l01.tplg", 547 }, 547 }, 548 { 548 { 549 .link_mask = 0x1, /* link0 req 549 .link_mask = 0x1, /* link0 required */ 550 .links = rpl_rvp, 550 .links = rpl_rvp, 551 .drv_name = "sof_sdw", 551 .drv_name = "sof_sdw", 552 .sof_tplg_filename = "sof-rpl- 552 .sof_tplg_filename = "sof-rpl-rt711-l0.tplg", 553 }, 553 }, 554 { 554 { 555 .link_mask = 0x1, /* link0 req 555 .link_mask = 0x1, /* link0 required */ 556 .links = rpl_sdca_rvp, 556 .links = rpl_sdca_rvp, 557 .drv_name = "sof_sdw", 557 .drv_name = "sof_sdw", 558 .sof_tplg_filename = "sof-rpl- 558 .sof_tplg_filename = "sof-rpl-rt711-l0.tplg", 559 }, 559 }, 560 { 560 { 561 .link_mask = 0x4, /* link2 req 561 .link_mask = 0x4, /* link2 required */ 562 .links = rplp_crb, 562 .links = rplp_crb, 563 .drv_name = "sof_sdw", 563 .drv_name = "sof_sdw", 564 .sof_tplg_filename = "sof-rpl- 564 .sof_tplg_filename = "sof-rpl-rt711-l2.tplg", 565 }, 565 }, 566 {}, 566 {}, 567 }; 567 }; 568 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_rpl_sdw_m 568 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_rpl_sdw_machines); 569 569
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.