Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ASoC: Intel: boards: updates for 6.15

Merge series from Bard Liao <yung-chuan.liao@linux.intel.com>:

1. Add multi-function SDW mockup codec match.
2. Add couple of new codec configurations for ADL, LNL, and PTL boards.

+456 -1
+29
sound/soc/intel/common/soc-acpi-intel-adl-match.c
··· 214 214 } 215 215 }; 216 216 217 + static const struct snd_soc_acpi_adr_device rt1316_2_group2_adr[] = { 218 + { 219 + .adr = 0x000232025D131601ull, 220 + .num_endpoints = 1, 221 + .endpoints = &spk_r_endpoint, 222 + .name_prefix = "rt1316-2" 223 + } 224 + }; 225 + 217 226 static const struct snd_soc_acpi_adr_device rt1316_1_single_adr[] = { 218 227 { 219 228 .adr = 0x000130025D131601ull, ··· 556 547 {} 557 548 }; 558 549 550 + static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link02[] = { 551 + { 552 + .mask = BIT(0), 553 + .num_adr = ARRAY_SIZE(rt1316_0_group2_adr), 554 + .adr_d = rt1316_0_group2_adr, 555 + }, 556 + { 557 + .mask = BIT(2), 558 + .num_adr = ARRAY_SIZE(rt1316_2_group2_adr), 559 + .adr_d = rt1316_2_group2_adr, 560 + }, 561 + {} 562 + }; 563 + 559 564 static const struct snd_soc_acpi_codecs adl_max98357a_amp = { 560 565 .num_codecs = 1, 561 566 .codecs = {"MX98357A"} ··· 771 748 .links = adl_chromebook_base, 772 749 .drv_name = "sof_sdw", 773 750 .sof_tplg_filename = "sof-adl-sdw-max98373-rt5682.tplg", 751 + }, 752 + { 753 + .link_mask = BIT(0) | BIT(2), 754 + .links = adl_sdw_rt1316_link02, 755 + .drv_name = "sof_sdw", 756 + .sof_tplg_filename = "sof-adl-rt1316-l02.tplg", 774 757 }, 775 758 {}, 776 759 };
+137
sound/soc/intel/common/soc-acpi-intel-lnl-match.c
··· 37 37 .group_id = 1, 38 38 }; 39 39 40 + static const struct snd_soc_acpi_endpoint spk_1_endpoint = { 41 + .num = 0, 42 + .aggregated = 1, 43 + .group_position = 1, 44 + .group_id = 1, 45 + }; 46 + 40 47 static const struct snd_soc_acpi_endpoint spk_2_endpoint = { 41 48 .num = 0, 42 49 .aggregated = 1, ··· 55 48 .num = 0, 56 49 .aggregated = 1, 57 50 .group_position = 3, 51 + .group_id = 1, 52 + }; 53 + 54 + static const struct snd_soc_acpi_endpoint spk_4_endpoint = { 55 + .num = 0, 56 + .aggregated = 1, 57 + .group_position = 4, 58 + .group_id = 1, 59 + }; 60 + 61 + static const struct snd_soc_acpi_endpoint spk_5_endpoint = { 62 + .num = 0, 63 + .aggregated = 1, 64 + .group_position = 5, 65 + .group_id = 1, 66 + }; 67 + 68 + static const struct snd_soc_acpi_endpoint spk_6_endpoint = { 69 + .num = 0, 70 + .aggregated = 1, 71 + .group_position = 6, 58 72 .group_id = 1, 59 73 }; 60 74 ··· 187 159 }, 188 160 }; 189 161 162 + static const struct snd_soc_acpi_endpoint cs42l43_amp_spkagg_endpoints[] = { 163 + { /* Jack Playback Endpoint */ 164 + .num = 0, 165 + .aggregated = 0, 166 + .group_position = 0, 167 + .group_id = 0, 168 + }, 169 + { /* DMIC Capture Endpoint */ 170 + .num = 1, 171 + .aggregated = 0, 172 + .group_position = 0, 173 + .group_id = 0, 174 + }, 175 + { /* Jack Capture Endpoint */ 176 + .num = 2, 177 + .aggregated = 0, 178 + .group_position = 0, 179 + .group_id = 0, 180 + }, 181 + { /* Speaker Playback Endpoint */ 182 + .num = 3, 183 + .aggregated = 1, 184 + .group_position = 0, 185 + .group_id = 1, 186 + }, 187 + }; 188 + 190 189 static const struct snd_soc_acpi_adr_device cs35l56_2_l_adr[] = { 191 190 { 192 191 .adr = 0x00023001FA355601ull, ··· 259 204 } 260 205 }; 261 206 207 + static const struct snd_soc_acpi_adr_device cs35l56_1_3amp_adr[] = { 208 + { 209 + .adr = 0x00013001fa355601ull, 210 + .num_endpoints = 1, 211 + .endpoints = &spk_1_endpoint, 212 + .name_prefix = "AMP1" 213 + }, 214 + { 215 + .adr = 0x00013101fa355601ull, 216 + .num_endpoints = 1, 217 + .endpoints = &spk_2_endpoint, 218 + .name_prefix = "AMP2" 219 + }, 220 + { 221 + .adr = 0x00013201fa355601ull, 222 + .num_endpoints = 1, 223 + .endpoints = &spk_3_endpoint, 224 + .name_prefix = "AMP3" 225 + } 226 + }; 227 + 228 + static const struct snd_soc_acpi_adr_device cs35l56_3_3amp_adr[] = { 229 + { 230 + .adr = 0x00033301fa355601ull, 231 + .num_endpoints = 1, 232 + .endpoints = &spk_4_endpoint, 233 + .name_prefix = "AMP4" 234 + }, 235 + { 236 + .adr = 0x00033401fa355601ull, 237 + .num_endpoints = 1, 238 + .endpoints = &spk_5_endpoint, 239 + .name_prefix = "AMP5" 240 + }, 241 + { 242 + .adr = 0x00033501fa355601ull, 243 + .num_endpoints = 1, 244 + .endpoints = &spk_6_endpoint, 245 + .name_prefix = "AMP6" 246 + } 247 + }; 248 + 262 249 static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = { 263 250 { 264 251 .adr = 0x00003001FA424301ull, 265 252 .num_endpoints = ARRAY_SIZE(cs42l43_endpoints), 266 253 .endpoints = cs42l43_endpoints, 254 + .name_prefix = "cs42l43" 255 + } 256 + }; 257 + 258 + static const struct snd_soc_acpi_adr_device cs42l43_2_adr[] = { 259 + { 260 + .adr = 0x00023001fa424301ull, 261 + .num_endpoints = ARRAY_SIZE(cs42l43_amp_spkagg_endpoints), 262 + .endpoints = cs42l43_amp_spkagg_endpoints, 267 263 .name_prefix = "cs42l43" 268 264 } 269 265 }; ··· 514 408 {} 515 409 }; 516 410 411 + static const struct snd_soc_acpi_link_adr lnl_cs42l43_l2_cs35l56x6_l13[] = { 412 + { 413 + .mask = BIT(2), 414 + .num_adr = ARRAY_SIZE(cs42l43_2_adr), 415 + .adr_d = cs42l43_2_adr, 416 + }, 417 + { 418 + .mask = BIT(1), 419 + .num_adr = ARRAY_SIZE(cs35l56_1_3amp_adr), 420 + .adr_d = cs35l56_1_3amp_adr, 421 + }, 422 + { 423 + .mask = BIT(3), 424 + .num_adr = ARRAY_SIZE(cs35l56_3_3amp_adr), 425 + .adr_d = cs35l56_3_3amp_adr, 426 + }, 427 + {} 428 + }; 429 + 517 430 static const struct snd_soc_acpi_link_adr lnl_rvp[] = { 518 431 { 519 432 .mask = BIT(0), ··· 678 553 .sof_tplg_filename = "sof-lnl-rt715-rt711-rt1308-mono.tplg", 679 554 }, 680 555 { 556 + .link_mask = BIT(0), 557 + .links = sdw_mockup_multi_func, 558 + .drv_name = "sof_sdw", 559 + .sof_tplg_filename = "sof-lnl-rt722-l0.tplg", /* Reuse the existing tplg file */ 560 + }, 561 + { 681 562 .link_mask = GENMASK(3, 0), 682 563 .links = lnl_3_in_1_sdca, 683 564 .drv_name = "sof_sdw", ··· 694 563 .links = lnl_cs42l43_l0_cs35l56_l23, 695 564 .drv_name = "sof_sdw", 696 565 .sof_tplg_filename = "sof-lnl-cs42l43-l0-cs35l56-l23.tplg", 566 + }, 567 + { 568 + .link_mask = BIT(1) | BIT(2) | BIT(3), 569 + .links = lnl_cs42l43_l2_cs35l56x6_l13, 570 + .drv_name = "sof_sdw", 571 + .sof_tplg_filename = "sof-lnl-cs42l43-l2-cs35l56x6-l13.tplg", 697 572 }, 698 573 { 699 574 .link_mask = BIT(0) | BIT(3),
+234
sound/soc/intel/common/soc-acpi-intel-ptl-match.c
··· 50 50 .group_id = 1, 51 51 }; 52 52 53 + static const struct snd_soc_acpi_endpoint spk_1_endpoint = { 54 + .num = 0, 55 + .aggregated = 1, 56 + .group_position = 1, 57 + .group_id = 1, 58 + }; 59 + 60 + static const struct snd_soc_acpi_endpoint spk_2_endpoint = { 61 + .num = 0, 62 + .aggregated = 1, 63 + .group_position = 2, 64 + .group_id = 1, 65 + }; 66 + 67 + static const struct snd_soc_acpi_endpoint spk_3_endpoint = { 68 + .num = 0, 69 + .aggregated = 1, 70 + .group_position = 3, 71 + .group_id = 1, 72 + }; 73 + 74 + static const struct snd_soc_acpi_endpoint spk_4_endpoint = { 75 + .num = 0, 76 + .aggregated = 1, 77 + .group_position = 4, 78 + .group_id = 1, 79 + }; 80 + 81 + static const struct snd_soc_acpi_endpoint spk_5_endpoint = { 82 + .num = 0, 83 + .aggregated = 1, 84 + .group_position = 5, 85 + .group_id = 1, 86 + }; 87 + 88 + static const struct snd_soc_acpi_endpoint spk_6_endpoint = { 89 + .num = 0, 90 + .aggregated = 1, 91 + .group_position = 6, 92 + .group_id = 1, 93 + }; 94 + 53 95 /* 54 96 * Multi-function codecs with three endpoints created for 55 97 * headset, amp and dmic functions. ··· 158 116 }, 159 117 }; 160 118 119 + static const struct snd_soc_acpi_endpoint cs42l43_amp_spkagg_endpoints[] = { 120 + { /* Jack Playback Endpoint */ 121 + .num = 0, 122 + .aggregated = 0, 123 + .group_position = 0, 124 + .group_id = 0, 125 + }, 126 + { /* DMIC Capture Endpoint */ 127 + .num = 1, 128 + .aggregated = 0, 129 + .group_position = 0, 130 + .group_id = 0, 131 + }, 132 + { /* Jack Capture Endpoint */ 133 + .num = 2, 134 + .aggregated = 0, 135 + .group_position = 0, 136 + .group_id = 0, 137 + }, 138 + { /* Speaker Playback Endpoint */ 139 + .num = 3, 140 + .aggregated = 1, 141 + .group_position = 0, 142 + .group_id = 1, 143 + }, 144 + }; 145 + 146 + static const struct snd_soc_acpi_adr_device cs42l43_2_adr[] = { 147 + { 148 + .adr = 0x00023001fa424301ull, 149 + .num_endpoints = ARRAY_SIZE(cs42l43_amp_spkagg_endpoints), 150 + .endpoints = cs42l43_amp_spkagg_endpoints, 151 + .name_prefix = "cs42l43" 152 + } 153 + }; 154 + 155 + static const struct snd_soc_acpi_adr_device cs35l56_1_3amp_adr[] = { 156 + { 157 + .adr = 0x00013001fa355601ull, 158 + .num_endpoints = 1, 159 + .endpoints = &spk_1_endpoint, 160 + .name_prefix = "AMP1" 161 + }, 162 + { 163 + .adr = 0x00013101fa355601ull, 164 + .num_endpoints = 1, 165 + .endpoints = &spk_2_endpoint, 166 + .name_prefix = "AMP2" 167 + }, 168 + { 169 + .adr = 0x00013201fa355601ull, 170 + .num_endpoints = 1, 171 + .endpoints = &spk_3_endpoint, 172 + .name_prefix = "AMP3" 173 + } 174 + }; 175 + 176 + static const struct snd_soc_acpi_adr_device cs35l56_3_3amp_adr[] = { 177 + { 178 + .adr = 0x00033301fa355601ull, 179 + .num_endpoints = 1, 180 + .endpoints = &spk_4_endpoint, 181 + .name_prefix = "AMP4" 182 + }, 183 + { 184 + .adr = 0x00033401fa355601ull, 185 + .num_endpoints = 1, 186 + .endpoints = &spk_5_endpoint, 187 + .name_prefix = "AMP5" 188 + }, 189 + { 190 + .adr = 0x00033501fa355601ull, 191 + .num_endpoints = 1, 192 + .endpoints = &spk_6_endpoint, 193 + .name_prefix = "AMP6" 194 + } 195 + }; 196 + 161 197 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = { 162 198 { 163 199 .adr = 0x000030025D071101ull, ··· 254 134 } 255 135 }; 256 136 137 + static const struct snd_soc_acpi_adr_device rt712_vb_3_group1_adr[] = { 138 + { 139 + .adr = 0x000330025D071201ull, 140 + .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints_endpoints), 141 + .endpoints = jack_amp_g1_dmic_endpoints_endpoints, 142 + .name_prefix = "rt712" 143 + } 144 + }; 145 + 257 146 static const struct snd_soc_acpi_adr_device rt713_vb_2_adr[] = { 258 147 { 259 148 .adr = 0x000230025d071301ull, 149 + .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 150 + .endpoints = jack_dmic_endpoints, 151 + .name_prefix = "rt713" 152 + } 153 + }; 154 + 155 + static const struct snd_soc_acpi_adr_device rt713_vb_3_adr[] = { 156 + { 157 + .adr = 0x000330025D071301ull, 260 158 .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 261 159 .endpoints = jack_dmic_endpoints, 262 160 .name_prefix = "rt713" ··· 344 206 } 345 207 }; 346 208 209 + static const struct snd_soc_acpi_adr_device rt1320_2_group1_adr[] = { 210 + { 211 + .adr = 0x000230025D132001ull, 212 + .num_endpoints = 1, 213 + .endpoints = &spk_r_endpoint, 214 + .name_prefix = "rt1320-1" 215 + } 216 + }; 217 + 218 + static const struct snd_soc_acpi_adr_device rt1320_2_group2_adr[] = { 219 + { 220 + .adr = 0x000230025D132001ull, 221 + .num_endpoints = 1, 222 + .endpoints = &spk_r_endpoint, 223 + .name_prefix = "rt1320-1" 224 + } 225 + }; 226 + 347 227 static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = { 348 228 { 349 229 .adr = 0x000330025D132001ull, ··· 369 213 .endpoints = &spk_r_endpoint, 370 214 .name_prefix = "rt1320-2" 371 215 } 216 + }; 217 + 218 + static const struct snd_soc_acpi_link_adr ptl_cs42l43_l2_cs35l56x6_l13[] = { 219 + { 220 + .mask = BIT(2), 221 + .num_adr = ARRAY_SIZE(cs42l43_2_adr), 222 + .adr_d = cs42l43_2_adr, 223 + }, 224 + { 225 + .mask = BIT(1), 226 + .num_adr = ARRAY_SIZE(cs35l56_1_3amp_adr), 227 + .adr_d = cs35l56_1_3amp_adr, 228 + }, 229 + { 230 + .mask = BIT(3), 231 + .num_adr = ARRAY_SIZE(cs35l56_3_3amp_adr), 232 + .adr_d = cs35l56_3_3amp_adr, 233 + }, 234 + {} 372 235 }; 373 236 374 237 static const struct snd_soc_acpi_link_adr ptl_rt722_only[] = { ··· 445 270 {} 446 271 }; 447 272 273 + static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l3_rt1320_l12[] = { 274 + { 275 + .mask = BIT(3), 276 + .num_adr = ARRAY_SIZE(rt713_vb_3_adr), 277 + .adr_d = rt713_vb_3_adr, 278 + }, 279 + { 280 + .mask = BIT(1), 281 + .num_adr = ARRAY_SIZE(rt1320_1_group2_adr), 282 + .adr_d = rt1320_1_group2_adr, 283 + }, 284 + { 285 + .mask = BIT(2), 286 + .num_adr = ARRAY_SIZE(rt1320_2_group2_adr), 287 + .adr_d = rt1320_2_group2_adr, 288 + }, 289 + {} 290 + }; 291 + 448 292 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l2_rt1320_l1[] = { 449 293 { 450 294 .mask = BIT(2), ··· 474 280 .mask = BIT(1), 475 281 .num_adr = ARRAY_SIZE(rt1320_1_group1_adr), 476 282 .adr_d = rt1320_1_group1_adr, 283 + }, 284 + {} 285 + }; 286 + 287 + static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l2[] = { 288 + { 289 + .mask = BIT(3), 290 + .num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr), 291 + .adr_d = rt712_vb_3_group1_adr, 292 + }, 293 + { 294 + .mask = BIT(2), 295 + .num_adr = ARRAY_SIZE(rt1320_2_group1_adr), 296 + .adr_d = rt1320_2_group1_adr, 477 297 }, 478 298 {} 479 299 }; ··· 512 304 .links = sdw_mockup_mic_headset_1amp, 513 305 .drv_name = "sof_sdw", 514 306 .sof_tplg_filename = "sof-ptl-rt715-rt711-rt1308-mono.tplg", 307 + }, 308 + { 309 + .link_mask = BIT(1) | BIT(2) | BIT(3), 310 + .links = ptl_cs42l43_l2_cs35l56x6_l13, 311 + .drv_name = "sof_sdw", 312 + .sof_tplg_filename = "sof-ptl-cs42l43-l2-cs35l56x6-l13.tplg", 313 + }, 314 + { 315 + .link_mask = BIT(0), 316 + .links = sdw_mockup_multi_func, 317 + .drv_name = "sof_sdw", 318 + .sof_tplg_filename = "sof-ptl-rt722.tplg", /* Reuse the existing tplg file */ 515 319 }, 516 320 { 517 321 .link_mask = BIT(0), ··· 563 343 .sof_tplg_filename = "sof-ptl-rt712-l2-rt1320-l1.tplg" 564 344 }, 565 345 { 346 + .link_mask = BIT(2) | BIT(3), 347 + .links = ptl_sdw_rt712_vb_l3_rt1320_l2, 348 + .drv_name = "sof_sdw", 349 + .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 350 + .sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l2.tplg" 351 + }, 352 + { 566 353 .link_mask = BIT(1) | BIT(2) | BIT(3), 567 354 .links = ptl_sdw_rt713_vb_l2_rt1320_l13, 568 355 .drv_name = "sof_sdw", 569 356 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 570 357 .sof_tplg_filename = "sof-ptl-rt713-l2-rt1320-l13.tplg" 358 + }, 359 + { 360 + .link_mask = BIT(1) | BIT(2) | BIT(3), 361 + .links = ptl_sdw_rt713_vb_l3_rt1320_l12, 362 + .drv_name = "sof_sdw", 363 + .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 364 + .sof_tplg_filename = "sof-ptl-rt713-l3-rt1320-l12.tplg" 571 365 }, 572 366 {}, 573 367 };
+42
sound/soc/intel/common/soc-acpi-intel-sdw-mockup-match.c
··· 31 31 .group_id = 1, 32 32 }; 33 33 34 + static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints[] = { 35 + /* Jack Endpoint */ 36 + { 37 + .num = 0, 38 + .aggregated = 0, 39 + .group_position = 0, 40 + .group_id = 0, 41 + }, 42 + /* Amp Endpoint, work as spk_l_endpoint */ 43 + { 44 + .num = 1, 45 + .aggregated = 1, 46 + .group_position = 0, 47 + .group_id = 1, 48 + }, 49 + /* DMIC Endpoint */ 50 + { 51 + .num = 2, 52 + .aggregated = 0, 53 + .group_position = 0, 54 + .group_id = 0, 55 + }, 56 + }; 57 + 34 58 static const struct snd_soc_acpi_adr_device sdw_mockup_headset_0_adr[] = { 35 59 { 36 60 .adr = 0x0000000105AA5500ull, ··· 127 103 } 128 104 }; 129 105 106 + static const struct snd_soc_acpi_adr_device sdw_mockup_multi_function_adr[] = { 107 + { 108 + .adr = 0x0000000105AAAA01ull, 109 + .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints), 110 + .endpoints = jack_amp_g1_dmic_endpoints, 111 + .name_prefix = "sdw_mockup_mmulti-function" 112 + } 113 + }; 114 + 130 115 const struct snd_soc_acpi_link_adr sdw_mockup_headset_1amp_mic[] = { 131 116 { 132 117 .mask = BIT(0), ··· 194 161 .mask = BIT(0), 195 162 .num_adr = ARRAY_SIZE(sdw_mockup_mic_0_adr), 196 163 .adr_d = sdw_mockup_mic_0_adr, 164 + }, 165 + {} 166 + }; 167 + 168 + const struct snd_soc_acpi_link_adr sdw_mockup_multi_func[] = { 169 + { 170 + .mask = BIT(0), 171 + .num_adr = ARRAY_SIZE(sdw_mockup_multi_function_adr), 172 + .adr_d = sdw_mockup_multi_function_adr, 197 173 }, 198 174 {} 199 175 };
+1
sound/soc/intel/common/soc-acpi-intel-sdw-mockup-match.h
··· 13 13 extern const struct snd_soc_acpi_link_adr sdw_mockup_headset_1amp_mic[]; 14 14 extern const struct snd_soc_acpi_link_adr sdw_mockup_headset_2amps_mic[]; 15 15 extern const struct snd_soc_acpi_link_adr sdw_mockup_mic_headset_1amp[]; 16 + extern const struct snd_soc_acpi_link_adr sdw_mockup_multi_func[]; 16 17 17 18 #endif
+13 -1
sound/soc/sdw_utils/soc_sdw_utils.c
··· 586 586 .dai_type = SOC_SDW_DAI_TYPE_JACK, 587 587 .dailink = {SOC_SDW_JACK_OUT_DAI_ID, SOC_SDW_JACK_IN_DAI_ID}, 588 588 }, 589 + { 590 + .direction = {true, false}, 591 + .dai_name = "sdw-mockup-aif1", 592 + .dai_type = SOC_SDW_DAI_TYPE_AMP, 593 + .dailink = {SOC_SDW_AMP_OUT_DAI_ID, SOC_SDW_UNUSED_DAI_ID}, 594 + }, 595 + { 596 + .direction = {false, true}, 597 + .dai_name = "sdw-mockup-aif1", 598 + .dai_type = SOC_SDW_DAI_TYPE_MIC, 599 + .dailink = {SOC_SDW_UNUSED_DAI_ID, SOC_SDW_DMIC_DAI_ID}, 600 + }, 589 601 }, 590 - .dai_num = 1, 602 + .dai_num = 3, 591 603 }, 592 604 { 593 605 .part_id = 0xaa55, /* headset codec mockup */