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.

Merge tag 'sound-fix-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"Two regression fixes that had been introduced in this merge window,
additional HD-audio quirks, and a further enhancement for the new
kunit"

* tag 'sound-fix-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: core: add kunitconfig
ALSA: hda/realtek: add in quirk for Acer Swift Go 16 - SFG16-71
Revert "ALSA: usb-audio: Name feature ctl using output if input is PCM"
ALSA: timer: Fix missing irq-disable at closing
ALSA: hda/realtek: Add quirk for Lenovo Yoga 9 14IMH9

+42 -36
+5
sound/core/.kunitconfig
··· 1 + CONFIG_KUNIT=y 2 + CONFIG_SOUND=y 3 + CONFIG_SND=y 4 + CONFIG_SND_PCM=y 5 + CONFIG_SND_CORE_TEST=y
+1 -1
sound/core/timer.c
··· 409 409 struct snd_timer *timer = timeri->timer; 410 410 411 411 if (timer) { 412 - guard(spinlock)(&timer->lock); 412 + guard(spinlock_irq)(&timer->lock); 413 413 timeri->flags |= SNDRV_TIMER_IFLG_DEAD; 414 414 } 415 415
+22
sound/pci/hda/patch_realtek.c
··· 6891 6891 comp_generic_fixup(cdc, action, "i2c", "INT8866", "-%s:00", 1); 6892 6892 } 6893 6893 6894 + static void alc256_fixup_acer_sfg16_micmute_led(struct hda_codec *codec, 6895 + const struct hda_fixup *fix, int action) 6896 + { 6897 + alc_fixup_hp_gpio_led(codec, action, 0, 0x04); 6898 + } 6899 + 6900 + 6894 6901 /* for alc295_fixup_hp_top_speakers */ 6895 6902 #include "hp_x360_helper.c" 6896 6903 ··· 7367 7360 ALC287_FIXUP_LEGION_16ITHG6, 7368 7361 ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK, 7369 7362 ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN, 7363 + ALC287_FIXUP_YOGA9_14IMH9_BASS_SPK_PIN, 7370 7364 ALC295_FIXUP_DELL_INSPIRON_TOP_SPEAKERS, 7371 7365 ALC236_FIXUP_DELL_DUAL_CODECS, 7372 7366 ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI, ··· 7381 7373 ALC289_FIXUP_DELL_CS35L41_SPI_2, 7382 7374 ALC294_FIXUP_CS35L41_I2C_2, 7383 7375 ALC245_FIXUP_CS35L56_SPI_4_HP_GPIO_LED, 7376 + ALC256_FIXUP_ACER_SFG16_MICMUTE_LED, 7384 7377 }; 7385 7378 7386 7379 /* A special fixup for Lenovo C940 and Yoga Duet 7; ··· 9499 9490 .chained = true, 9500 9491 .chain_id = ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK, 9501 9492 }, 9493 + [ALC287_FIXUP_YOGA9_14IMH9_BASS_SPK_PIN] = { 9494 + .type = HDA_FIXUP_FUNC, 9495 + .v.func = alc287_fixup_yoga9_14iap7_bass_spk_pin, 9496 + .chained = true, 9497 + .chain_id = ALC287_FIXUP_CS35L41_I2C_2, 9498 + }, 9502 9499 [ALC295_FIXUP_DELL_INSPIRON_TOP_SPEAKERS] = { 9503 9500 .type = HDA_FIXUP_FUNC, 9504 9501 .v.func = alc295_fixup_dell_inspiron_top_speakers, ··· 9577 9562 .chained = true, 9578 9563 .chain_id = ALC285_FIXUP_HP_GPIO_LED, 9579 9564 }, 9565 + [ALC256_FIXUP_ACER_SFG16_MICMUTE_LED] = { 9566 + .type = HDA_FIXUP_FUNC, 9567 + .v.func = alc256_fixup_acer_sfg16_micmute_led, 9568 + }, 9580 9569 }; 9581 9570 9582 9571 static const struct snd_pci_quirk alc269_fixup_tbl[] = { ··· 9624 9605 SND_PCI_QUIRK(0x1025, 0x1430, "Acer TravelMate B311R-31", ALC256_FIXUP_ACER_MIC_NO_PRESENCE), 9625 9606 SND_PCI_QUIRK(0x1025, 0x1466, "Acer Aspire A515-56", ALC255_FIXUP_ACER_HEADPHONE_AND_MIC), 9626 9607 SND_PCI_QUIRK(0x1025, 0x1534, "Acer Predator PH315-54", ALC255_FIXUP_ACER_MIC_NO_PRESENCE), 9608 + SND_PCI_QUIRK(0x1025, 0x169a, "Acer Swift SFG16", ALC256_FIXUP_ACER_SFG16_MICMUTE_LED), 9627 9609 SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), 9628 9610 SND_PCI_QUIRK(0x1028, 0x053c, "Dell Latitude E5430", ALC292_FIXUP_DELL_E7X), 9629 9611 SND_PCI_QUIRK(0x1028, 0x054b, "Dell XPS one 2710", ALC275_FIXUP_DELL_XPS), ··· 10290 10270 SND_PCI_QUIRK(0x17aa, 0x38c3, "Y980 DUAL", ALC287_FIXUP_TAS2781_I2C), 10291 10271 SND_PCI_QUIRK(0x17aa, 0x38cb, "Y790 YG DUAL", ALC287_FIXUP_TAS2781_I2C), 10292 10272 SND_PCI_QUIRK(0x17aa, 0x38cd, "Y790 VECO DUAL", ALC287_FIXUP_TAS2781_I2C), 10273 + SND_PCI_QUIRK(0x17aa, 0x38d2, "Lenovo Yoga 9 14IMH9", ALC287_FIXUP_YOGA9_14IMH9_BASS_SPK_PIN), 10274 + SND_PCI_QUIRK(0x17aa, 0x38d7, "Lenovo Yoga 9 14IMH9", ALC287_FIXUP_YOGA9_14IMH9_BASS_SPK_PIN), 10293 10275 SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI), 10294 10276 SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC), 10295 10277 SND_PCI_QUIRK(0x17aa, 0x3978, "Lenovo B50-70", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
+14 -35
sound/usb/mixer.c
··· 1652 1652 return NULL; 1653 1653 } 1654 1654 1655 - static int feature_unit_mutevol_ctl_name(struct usb_mixer_interface *mixer, 1656 - struct snd_kcontrol *kctl, 1657 - struct usb_audio_term *iterm, 1658 - struct usb_audio_term *oterm) 1659 - { 1660 - struct usb_audio_term *aterm, *bterm; 1661 - bool output_first; 1662 - int len = 0; 1663 - 1664 - /* 1665 - * If the input terminal is USB Streaming, we try getting the name of 1666 - * the output terminal first in hopes of getting something more 1667 - * descriptive than "PCM". 1668 - */ 1669 - output_first = iterm && !(iterm->type >> 16) && (iterm->type & 0xff00) == 0x0100; 1670 - 1671 - aterm = output_first ? oterm : iterm; 1672 - bterm = output_first ? iterm : oterm; 1673 - 1674 - if (aterm) 1675 - len = get_term_name(mixer->chip, aterm, kctl->id.name, 1676 - sizeof(kctl->id.name), 1); 1677 - if (!len && bterm) 1678 - len = get_term_name(mixer->chip, bterm, kctl->id.name, 1679 - sizeof(kctl->id.name), 1); 1680 - return len; 1681 - } 1682 - 1683 1655 static void __build_feature_ctl(struct usb_mixer_interface *mixer, 1684 1656 const struct usbmix_name_map *imap, 1685 1657 unsigned int ctl_mask, int control, ··· 1733 1761 case UAC_FU_MUTE: 1734 1762 case UAC_FU_VOLUME: 1735 1763 /* 1736 - * Determine the control name: 1737 - * - If a name id is given in descriptor, use it. 1738 - * - If input and output terminals are present, try to derive 1739 - * the name from either of these. 1740 - * - Otherwise, make up a name using the feature unit ID. 1764 + * determine the control name. the rule is: 1765 + * - if a name id is given in descriptor, use it. 1766 + * - if the connected input can be determined, then use the name 1767 + * of terminal type. 1768 + * - if the connected output can be determined, use it. 1769 + * - otherwise, anonymous name. 1741 1770 */ 1742 1771 if (!len) { 1743 - len = feature_unit_mutevol_ctl_name(mixer, kctl, iterm, 1744 - oterm); 1772 + if (iterm) 1773 + len = get_term_name(mixer->chip, iterm, 1774 + kctl->id.name, 1775 + sizeof(kctl->id.name), 1); 1776 + if (!len && oterm) 1777 + len = get_term_name(mixer->chip, oterm, 1778 + kctl->id.name, 1779 + sizeof(kctl->id.name), 1); 1745 1780 if (!len) 1746 1781 snprintf(kctl->id.name, sizeof(kctl->id.name), 1747 1782 "Feature %d", unitid);