···192192 RT711_JD1),193193 },194194 {195195+ /*196196+ * this entry covers HP Spectre x360 where the DMI information197197+ * changed somehow198198+ */199199+ .callback = sof_sdw_quirk_cb,200200+ .matches = {201201+ DMI_MATCH(DMI_SYS_VENDOR, "HP"),202202+ DMI_MATCH(DMI_BOARD_NAME, "8709"),203203+ },204204+ .driver_data = (void *)(SOF_SDW_TGL_HDMI |205205+ SOF_SDW_PCH_DMIC |206206+ RT711_JD1),207207+ },208208+ {195209 /* NUC15 'Bishop County' LAPBC510 and LAPBC710 skews */196210 .callback = sof_sdw_quirk_cb,197211 .matches = {···427413 .matches = {428414 DMI_MATCH(DMI_PRODUCT_FAMILY, "Intel_mtlrvp"),429415 },430430- .driver_data = (void *)(RT711_JD1 | SOF_SDW_TGL_HDMI),416416+ .driver_data = (void *)(RT711_JD1),417417+ },418418+ {419419+ .callback = sof_sdw_quirk_cb,420420+ .matches = {421421+ DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),422422+ DMI_MATCH(DMI_PRODUCT_NAME, "Meteor Lake Client Platform"),423423+ },424424+ .driver_data = (void *)(RT711_JD2_100K),425425+ },426426+ /* LunarLake devices */427427+ {428428+ .callback = sof_sdw_quirk_cb,429429+ .matches = {430430+ DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),431431+ DMI_MATCH(DMI_PRODUCT_NAME, "Lunar Lake Client Platform"),432432+ },433433+ .driver_data = (void *)(RT711_JD2_100K),431434 },432435 {}433436};···933902static int set_codec_init_func(struct snd_soc_card *card,934903 const struct snd_soc_acpi_link_adr *link,935904 struct snd_soc_dai_link *dai_links,936936- bool playback, int group_id)905905+ bool playback, int group_id, int adr_index)937906{938938- int i;907907+ int i = adr_index;939908940909 do {941910 /*942911 * Initialize the codec. If codec is part of an aggregated943912 * group (group_id>0), initialize all codecs belonging to944913 * same group.914914+ * The first link should start with link->adr_d[adr_index]915915+ * because that is the device that we want to initialize and916916+ * we should end immediately if it is not aggregated (group_id=0)945917 */946946- for (i = 0; i < link->num_adr; i++) {918918+ for ( ; i < link->num_adr; i++) {947919 int codec_index;948920949921 codec_index = find_codec_info_part(link->adr_d[i].adr);···962928 dai_links,963929 &codec_info_list[codec_index],964930 playback);931931+ if (!group_id)932932+ return 0;965933 }934934+ i = 0;966935 link++;967967- } while (link->mask && group_id);936936+ } while (link->mask);968937969938 return 0;970939}···12171180 dai_links[*link_index].nonatomic = true;1218118112191182 ret = set_codec_init_func(card, link, dai_links + (*link_index)++,12201220- playback, group_id);11831183+ playback, group_id, adr_index);12211184 if (ret < 0) {12221185 dev_err(dev, "failed to init codec %d", codec_index);12231186 return ret;