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.14

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

1. Fix the incorrect cfg-mics value in card->components string.
2. New codec match entries supports.

Bard Liao (6):
ASoC: Intel: sof_sdw: correct mach_params->dmic_num
ASoC: Intel: sof_sdw: reduce log level for not using internal dmic
ASoC: Intel: sof_sdw: improve the log of DAI link numbers
ASoC: Intel: soc-acpi-intel-ptl-match: add rt712_vb + rt1320 support
ASoC: Intel: soc-acpi-intel-lnl-match: add rt713_vb_l2_rt1320_l13
support
ASoC: Intel: soc-acpi-intel-ptl-match: add rt713_vb_l2_rt1320_l13
support

Simon Trimmer (4):
ASoC: Intel: sof_sdw: Correct quirk for Lenovo Yoga Slim 7
ASoC: Intel: sof_sdw: Add a dev_dbg message for the SOC_SDW_CODEC_MIC
quirk
ASoC: Intel: soc-acpi: arl: Correct naming of a cs35l56 address struct
ASoC: Intel: soc-acpi: arl: Add match entries for new cs42l43 laptops

sound/soc/intel/boards/sof_sdw.c | 33 ++--
.../intel/common/soc-acpi-intel-arl-match.c | 45 +++++-
.../intel/common/soc-acpi-intel-lnl-match.c | 70 +++++++++
.../intel/common/soc-acpi-intel-ptl-match.c | 148 ++++++++++++++++++
4 files changed, 282 insertions(+), 14 deletions(-)

--
2.43.0

+282 -14
+20 -13
sound/soc/intel/boards/sof_sdw.c
··· 22 22 module_param_named(quirk, quirk_override, int, 0444); 23 23 MODULE_PARM_DESC(quirk, "Board-specific quirk override"); 24 24 25 + #define DMIC_DEFAULT_CHANNELS 2 26 + 25 27 static void log_quirks(struct device *dev) 26 28 { 27 29 if (SOC_SDW_JACK_JDSRC(sof_sdw_quirk)) ··· 44 42 dev_dbg(dev, "quirk SOC_SDW_CODEC_SPKR enabled\n"); 45 43 if (sof_sdw_quirk & SOC_SDW_SIDECAR_AMPS) 46 44 dev_dbg(dev, "quirk SOC_SDW_SIDECAR_AMPS enabled\n"); 45 + if (sof_sdw_quirk & SOC_SDW_CODEC_MIC) 46 + dev_dbg(dev, "quirk SOC_SDW_CODEC_MIC enabled\n"); 47 47 } 48 48 49 49 static int sof_sdw_quirk_cb(const struct dmi_system_id *id) ··· 628 624 .callback = sof_sdw_quirk_cb, 629 625 .matches = { 630 626 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 631 - DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "380E") 627 + DMI_MATCH(DMI_PRODUCT_NAME, "83HM") 632 628 }, 633 - .driver_data = (void *)(SOC_SDW_SIDECAR_AMPS), 629 + .driver_data = (void *)(SOC_SDW_SIDECAR_AMPS | 630 + SOC_SDW_CODEC_MIC), 634 631 }, 635 632 { 636 633 .callback = sof_sdw_quirk_cb, ··· 1111 1106 hdmi_num = SOF_PRE_TGL_HDMI_COUNT; 1112 1107 1113 1108 /* enable dmic01 & dmic16k */ 1114 - if (sof_sdw_quirk & SOC_SDW_PCH_DMIC || mach_params->dmic_num) { 1115 - if (ctx->ignore_internal_dmic) 1116 - dev_warn(dev, "Ignoring PCH DMIC\n"); 1117 - else 1118 - dmic_num = 2; 1109 + if (ctx->ignore_internal_dmic) { 1110 + dev_dbg(dev, "SoundWire DMIC is used, ignoring internal DMIC\n"); 1111 + mach_params->dmic_num = 0; 1112 + } else if (mach_params->dmic_num) { 1113 + dmic_num = 2; 1114 + } else if (sof_sdw_quirk & SOC_SDW_PCH_DMIC) { 1115 + dmic_num = 2; 1116 + /* 1117 + * mach_params->dmic_num will be used to set the cfg-mics value of 1118 + * card->components string. Set it to the default value. 1119 + */ 1120 + mach_params->dmic_num = DMIC_DEFAULT_CHANNELS; 1119 1121 } 1120 - /* 1121 - * mach_params->dmic_num will be used to set the cfg-mics value of card->components 1122 - * string. Overwrite it to the actual number of PCH DMICs used in the device. 1123 - */ 1124 - mach_params->dmic_num = dmic_num; 1125 1122 1126 1123 if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT) 1127 1124 bt_num = 1; 1128 1125 1129 - dev_dbg(dev, "sdw %d, ssp %d, dmic %d, hdmi %d, bt: %d\n", 1126 + dev_dbg(dev, "DAI link numbers: sdw %d, ssp %d, dmic %d, hdmi %d, bt: %d\n", 1130 1127 sdw_be_num, ssp_num, dmic_num, 1131 1128 intel_ctx->hdmi.idisp_codec ? hdmi_num : 0, bt_num); 1132 1129
+44 -1
sound/soc/intel/common/soc-acpi-intel-arl-match.c
··· 138 138 }, 139 139 }; 140 140 141 - static const struct snd_soc_acpi_adr_device cs35l56_3_l1_adr[] = { 141 + static const struct snd_soc_acpi_adr_device cs35l56_3_l3_adr[] = { 142 142 { 143 143 .adr = 0x00033301fa355601ull, 144 + .num_endpoints = 1, 145 + .endpoints = &spk_l_endpoint, 146 + .name_prefix = "AMP1" 147 + }, 148 + }; 149 + 150 + static const struct snd_soc_acpi_adr_device cs35l56_2_r3_adr[] = { 151 + { 152 + .adr = 0x00023301fa355601ull, 153 + .num_endpoints = 1, 154 + .endpoints = &spk_r_endpoint, 155 + .name_prefix = "AMP2" 156 + }, 157 + }; 158 + 159 + static const struct snd_soc_acpi_adr_device cs35l56_3_l1_adr[] = { 160 + { 161 + .adr = 0x00033101fa355601ull, 144 162 .num_endpoints = 1, 145 163 .endpoints = &spk_l_endpoint, 146 164 .name_prefix = "AMP1" ··· 324 306 }, 325 307 { 326 308 .mask = BIT(3), 309 + .num_adr = ARRAY_SIZE(cs35l56_3_l3_adr), 310 + .adr_d = cs35l56_3_l3_adr, 311 + }, 312 + {} 313 + }; 314 + 315 + static const struct snd_soc_acpi_link_adr arl_cs42l43_l0_cs35l56_3_l23[] = { 316 + { 317 + .mask = BIT(0), 318 + .num_adr = ARRAY_SIZE(cs42l43_0_adr), 319 + .adr_d = cs42l43_0_adr, 320 + }, 321 + { 322 + .mask = BIT(2), 323 + .num_adr = ARRAY_SIZE(cs35l56_2_r3_adr), 324 + .adr_d = cs35l56_2_r3_adr, 325 + }, 326 + { 327 + .mask = BIT(3), 327 328 .num_adr = ARRAY_SIZE(cs35l56_3_l1_adr), 328 329 .adr_d = cs35l56_3_l1_adr, 329 330 }, ··· 440 403 { 441 404 .link_mask = BIT(0) | BIT(2) | BIT(3), 442 405 .links = arl_cs42l43_l0_cs35l56_2_l23, 406 + .drv_name = "sof_sdw", 407 + .sof_tplg_filename = "sof-arl-cs42l43-l0-cs35l56-l23.tplg", 408 + }, 409 + { 410 + .link_mask = BIT(0) | BIT(2) | BIT(3), 411 + .links = arl_cs42l43_l0_cs35l56_3_l23, 443 412 .drv_name = "sof_sdw", 444 413 .sof_tplg_filename = "sof-arl-cs42l43-l0-cs35l56-l23.tplg", 445 414 },
+70
sound/soc/intel/common/soc-acpi-intel-lnl-match.c
··· 91 91 }, 92 92 }; 93 93 94 + static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = { 95 + /* Jack Endpoint */ 96 + { 97 + .num = 0, 98 + .aggregated = 0, 99 + .group_position = 0, 100 + .group_id = 0, 101 + }, 102 + /* DMIC Endpoint */ 103 + { 104 + .num = 1, 105 + .aggregated = 0, 106 + .group_position = 0, 107 + .group_id = 0, 108 + }, 109 + }; 110 + 94 111 static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints_endpoints[] = { 95 112 /* Jack Endpoint */ 96 113 { ··· 312 295 } 313 296 }; 314 297 298 + static const struct snd_soc_acpi_adr_device rt1320_1_group2_adr[] = { 299 + { 300 + .adr = 0x000130025D132001ull, 301 + .num_endpoints = 1, 302 + .endpoints = &spk_l_endpoint, 303 + .name_prefix = "rt1320-1" 304 + } 305 + }; 306 + 307 + static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = { 308 + { 309 + .adr = 0x000330025D132001ull, 310 + .num_endpoints = 1, 311 + .endpoints = &spk_r_endpoint, 312 + .name_prefix = "rt1320-2" 313 + } 314 + }; 315 + 315 316 static const struct snd_soc_acpi_adr_device rt713_0_adr[] = { 316 317 { 317 318 .adr = 0x000031025D071301ull, 318 319 .num_endpoints = 1, 319 320 .endpoints = &single_endpoint, 321 + .name_prefix = "rt713" 322 + } 323 + }; 324 + 325 + static const struct snd_soc_acpi_adr_device rt713_vb_2_adr[] = { 326 + { 327 + .adr = 0x000230025d071301ull, 328 + .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 329 + .endpoints = jack_dmic_endpoints, 320 330 .name_prefix = "rt713" 321 331 } 322 332 }; ··· 497 453 {} 498 454 }; 499 455 456 + static const struct snd_soc_acpi_link_adr lnl_sdw_rt713_vb_l2_rt1320_l13[] = { 457 + { 458 + .mask = BIT(2), 459 + .num_adr = ARRAY_SIZE(rt713_vb_2_adr), 460 + .adr_d = rt713_vb_2_adr, 461 + }, 462 + { 463 + .mask = BIT(1), 464 + .num_adr = ARRAY_SIZE(rt1320_1_group2_adr), 465 + .adr_d = rt1320_1_group2_adr, 466 + }, 467 + { 468 + .mask = BIT(3), 469 + .num_adr = ARRAY_SIZE(rt1320_3_group2_adr), 470 + .adr_d = rt1320_3_group2_adr, 471 + }, 472 + {} 473 + }; 474 + 500 475 static const struct snd_soc_acpi_link_adr lnl_sdw_rt712_vb_l2_rt1320_l1[] = { 501 476 { 502 477 .mask = BIT(2), ··· 612 549 .drv_name = "sof_sdw", 613 550 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 614 551 .sof_tplg_filename = "sof-lnl-rt712-l2-rt1320-l1.tplg" 552 + }, 553 + { 554 + .link_mask = BIT(1) | BIT(2) | BIT(3), 555 + .links = lnl_sdw_rt713_vb_l2_rt1320_l13, 556 + .drv_name = "sof_sdw", 557 + .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 558 + .sof_tplg_filename = "sof-lnl-rt713-l2-rt1320-l13.tplg" 615 559 }, 616 560 {}, 617 561 };
+148
sound/soc/intel/common/soc-acpi-intel-ptl-match.c
··· 8 8 9 9 #include <sound/soc-acpi.h> 10 10 #include <sound/soc-acpi-intel-match.h> 11 + #include "soc-acpi-intel-sdca-quirks.h" 11 12 #include "soc-acpi-intel-sdw-mockup-match.h" 12 13 #include <sound/soc-acpi-intel-ssp-common.h> 13 14 ··· 36 35 .group_id = 0, 37 36 }; 38 37 38 + static const struct snd_soc_acpi_endpoint spk_l_endpoint = { 39 + .num = 0, 40 + .aggregated = 1, 41 + .group_position = 0, 42 + .group_id = 1, 43 + }; 44 + 45 + static const struct snd_soc_acpi_endpoint spk_r_endpoint = { 46 + .num = 0, 47 + .aggregated = 1, 48 + .group_position = 1, 49 + .group_id = 1, 50 + }; 51 + 39 52 /* 40 53 * Multi-function codecs with three endpoints created for 41 54 * headset, amp and dmic functions. ··· 75 60 }, 76 61 }; 77 62 63 + static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = { 64 + /* Jack Endpoint */ 65 + { 66 + .num = 0, 67 + .aggregated = 0, 68 + .group_position = 0, 69 + .group_id = 0, 70 + }, 71 + /* DMIC Endpoint */ 72 + { 73 + .num = 1, 74 + .aggregated = 0, 75 + .group_position = 0, 76 + .group_id = 0, 77 + }, 78 + }; 79 + 80 + static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints_endpoints[] = { 81 + /* Jack Endpoint */ 82 + { 83 + .num = 0, 84 + .aggregated = 0, 85 + .group_position = 0, 86 + .group_id = 0, 87 + }, 88 + /* Amp Endpoint, work as spk_l_endpoint */ 89 + { 90 + .num = 1, 91 + .aggregated = 1, 92 + .group_position = 0, 93 + .group_id = 1, 94 + }, 95 + /* DMIC Endpoint */ 96 + { 97 + .num = 2, 98 + .aggregated = 0, 99 + .group_position = 0, 100 + .group_id = 0, 101 + }, 102 + }; 103 + 78 104 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = { 79 105 { 80 106 .adr = 0x000030025D071101ull, 81 107 .num_endpoints = 1, 82 108 .endpoints = &single_endpoint, 83 109 .name_prefix = "rt711" 110 + } 111 + }; 112 + 113 + static const struct snd_soc_acpi_adr_device rt712_vb_2_group1_adr[] = { 114 + { 115 + .adr = 0x000230025D071201ull, 116 + .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints_endpoints), 117 + .endpoints = jack_amp_g1_dmic_endpoints_endpoints, 118 + .name_prefix = "rt712" 119 + } 120 + }; 121 + 122 + static const struct snd_soc_acpi_adr_device rt713_vb_2_adr[] = { 123 + { 124 + .adr = 0x000230025d071301ull, 125 + .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 126 + .endpoints = jack_dmic_endpoints, 127 + .name_prefix = "rt713" 84 128 } 85 129 }; 86 130 ··· 188 114 } 189 115 }; 190 116 117 + static const struct snd_soc_acpi_adr_device rt1320_1_group1_adr[] = { 118 + { 119 + .adr = 0x000130025D132001ull, 120 + .num_endpoints = 1, 121 + .endpoints = &spk_r_endpoint, 122 + .name_prefix = "rt1320-1" 123 + } 124 + }; 125 + 126 + static const struct snd_soc_acpi_adr_device rt1320_1_group2_adr[] = { 127 + { 128 + .adr = 0x000130025D132001ull, 129 + .num_endpoints = 1, 130 + .endpoints = &spk_l_endpoint, 131 + .name_prefix = "rt1320-1" 132 + } 133 + }; 134 + 135 + static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = { 136 + { 137 + .adr = 0x000330025D132001ull, 138 + .num_endpoints = 1, 139 + .endpoints = &spk_r_endpoint, 140 + .name_prefix = "rt1320-2" 141 + } 142 + }; 143 + 191 144 static const struct snd_soc_acpi_link_adr ptl_rt722_only[] = { 192 145 { 193 146 .mask = BIT(0), ··· 247 146 .mask = BIT(0), 248 147 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 249 148 .adr_d = rt711_sdca_0_adr, 149 + }, 150 + {} 151 + }; 152 + 153 + static const struct snd_soc_acpi_link_adr lnl_sdw_rt713_vb_l2_rt1320_l13[] = { 154 + { 155 + .mask = BIT(2), 156 + .num_adr = ARRAY_SIZE(rt713_vb_2_adr), 157 + .adr_d = rt713_vb_2_adr, 158 + }, 159 + { 160 + .mask = BIT(1), 161 + .num_adr = ARRAY_SIZE(rt1320_1_group2_adr), 162 + .adr_d = rt1320_1_group2_adr, 163 + }, 164 + { 165 + .mask = BIT(3), 166 + .num_adr = ARRAY_SIZE(rt1320_3_group2_adr), 167 + .adr_d = rt1320_3_group2_adr, 168 + }, 169 + {} 170 + }; 171 + 172 + static const struct snd_soc_acpi_link_adr lnl_sdw_rt712_vb_l2_rt1320_l1[] = { 173 + { 174 + .mask = BIT(2), 175 + .num_adr = ARRAY_SIZE(rt712_vb_2_group1_adr), 176 + .adr_d = rt712_vb_2_group1_adr, 177 + }, 178 + { 179 + .mask = BIT(1), 180 + .num_adr = ARRAY_SIZE(rt1320_1_group1_adr), 181 + .adr_d = rt1320_1_group1_adr, 250 182 }, 251 183 {} 252 184 }; ··· 334 200 .links = ptl_rt722_l3, 335 201 .drv_name = "sof_sdw", 336 202 .sof_tplg_filename = "sof-ptl-rt722.tplg", 203 + }, 204 + { 205 + .link_mask = BIT(1) | BIT(2), 206 + .links = lnl_sdw_rt712_vb_l2_rt1320_l1, 207 + .drv_name = "sof_sdw", 208 + .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 209 + .sof_tplg_filename = "sof-lnl-rt712-l2-rt1320-l1.tplg" 210 + }, 211 + { 212 + .link_mask = BIT(1) | BIT(2) | BIT(3), 213 + .links = lnl_sdw_rt713_vb_l2_rt1320_l13, 214 + .drv_name = "sof_sdw", 215 + .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 216 + .sof_tplg_filename = "sof-lnl-rt713-l2-rt1320-l13.tplg" 337 217 }, 338 218 {}, 339 219 };