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-5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"A few wrap-up small fixes for the usual HD-audio and USB-audio stuff:

- A regression fix for S3 suspend on old Intel platforms

- A fix for possible Oops in ASoC HD-audio binding

- Trivial quirks for various devices"

* tag 'sound-5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda/realtek - Fixed HP right speaker no sound
ALSA: hda: fix NULL pointer dereference during suspend
ALSA: hda/hdmi: Fix keep_power assignment for non-component devices
ALSA: hda: Workaround for spurious wakeups on some Intel platforms
ALSA: hda/realtek: Fix add a "ultra_low_power" function for intel reference board (alc256)
ALSA: hda/realtek: typo_fix: enable headset mic of ASUS ROG Zephyrus G14(GA401) series with ALC289
ALSA: hda/realtek: enable headset mic of ASUS ROG Zephyrus G15(GA502) series with ALC289
ALSA: usb-audio: Add implicit feedback quirk for SSL2

+56 -10
+8
sound/pci/hda/hda_codec.c
··· 2935 2935 struct hda_codec *codec = dev_to_hda_codec(dev); 2936 2936 unsigned int state; 2937 2937 2938 + /* Nothing to do if card registration fails and the component driver never probes */ 2939 + if (!codec->card) 2940 + return 0; 2941 + 2938 2942 cancel_delayed_work_sync(&codec->jackpoll_work); 2939 2943 state = hda_call_codec_suspend(codec); 2940 2944 if (codec->link_down_at_suspend || ··· 2952 2948 static int hda_codec_runtime_resume(struct device *dev) 2953 2949 { 2954 2950 struct hda_codec *codec = dev_to_hda_codec(dev); 2951 + 2952 + /* Nothing to do if card registration fails and the component driver never probes */ 2953 + if (!codec->card) 2954 + return 0; 2955 2955 2956 2956 codec_display_power(codec, true); 2957 2957 snd_hdac_codec_link_up(&codec->core);
+1 -1
sound/pci/hda/hda_controller.h
··· 41 41 /* 24 unused */ 42 42 #define AZX_DCAPS_COUNT_LPIB_DELAY (1 << 25) /* Take LPIB as delay */ 43 43 #define AZX_DCAPS_PM_RUNTIME (1 << 26) /* runtime PM support */ 44 - /* 27 unused */ 44 + #define AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP (1 << 27) /* Workaround for spurious wakeups after suspend */ 45 45 #define AZX_DCAPS_CORBRP_SELF_CLEAR (1 << 28) /* CORBRP clears itself after reset */ 46 46 #define AZX_DCAPS_NO_MSI64 (1 << 29) /* Stick to 32-bit MSIs */ 47 47 #define AZX_DCAPS_SEPARATE_STREAM_TAG (1 << 30) /* capture and playback use separate stream tag */
+14 -3
sound/pci/hda/hda_intel.c
··· 298 298 /* PCH for HSW/BDW; with runtime PM */ 299 299 /* no i915 binding for this as HSW/BDW has another controller for HDMI */ 300 300 #define AZX_DCAPS_INTEL_PCH \ 301 - (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME) 301 + (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\ 302 + AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP) 302 303 303 304 /* HSW HDMI */ 304 305 #define AZX_DCAPS_INTEL_HASWELL \ ··· 1029 1028 chip = card->private_data; 1030 1029 bus = azx_bus(chip); 1031 1030 snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); 1032 - pm_runtime_force_suspend(dev); 1031 + /* An ugly workaround: direct call of __azx_runtime_suspend() and 1032 + * __azx_runtime_resume() for old Intel platforms that suffer from 1033 + * spurious wakeups after S3 suspend 1034 + */ 1035 + if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP) 1036 + __azx_runtime_suspend(chip); 1037 + else 1038 + pm_runtime_force_suspend(dev); 1033 1039 if (bus->irq >= 0) { 1034 1040 free_irq(bus->irq, chip); 1035 1041 bus->irq = -1; ··· 1065 1057 if (azx_acquire_irq(chip, 1) < 0) 1066 1058 return -EIO; 1067 1059 1068 - pm_runtime_force_resume(dev); 1060 + if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP) 1061 + __azx_runtime_resume(chip, false); 1062 + else 1063 + pm_runtime_force_resume(dev); 1069 1064 snd_power_change_state(card, SNDRV_CTL_POWER_D0); 1070 1065 1071 1066 trace_azx_resume(chip);
+1 -1
sound/pci/hda/patch_hdmi.c
··· 2440 2440 mutex_lock(&spec->bind_lock); 2441 2441 spec->use_acomp_notifier = use_acomp; 2442 2442 spec->codec->relaxed_resume = use_acomp; 2443 + spec->codec->bus->keep_power = 0; 2443 2444 /* reprogram each jack detection logic depending on the notifier */ 2444 2445 for (i = 0; i < spec->num_pins; i++) 2445 2446 reprogram_jack_detect(spec->codec, ··· 2535 2534 if (!snd_hdac_acomp_init(&codec->bus->core, &spec->drm_audio_ops, 2536 2535 match_bound_vga, 0)) { 2537 2536 spec->acomp_registered = true; 2538 - codec->bus->keep_power = 0; 2539 2537 } 2540 2538 } 2541 2539
+31 -5
sound/pci/hda/patch_realtek.c
··· 5975 5975 snd_hda_codec_set_pin_target(codec, 0x19, PIN_VREFHIZ); 5976 5976 } 5977 5977 5978 + static void alc285_fixup_hp_gpio_amp_init(struct hda_codec *codec, 5979 + const struct hda_fixup *fix, int action) 5980 + { 5981 + if (action != HDA_FIXUP_ACT_INIT) 5982 + return; 5983 + 5984 + msleep(100); 5985 + alc_write_coef_idx(codec, 0x65, 0x0); 5986 + } 5987 + 5978 5988 /* for hda_fixup_thinkpad_acpi() */ 5979 5989 #include "thinkpad_helper.c" 5980 5990 ··· 6162 6152 ALC269VC_FIXUP_ACER_VCOPPERBOX_PINS, 6163 6153 ALC269VC_FIXUP_ACER_HEADSET_MIC, 6164 6154 ALC269VC_FIXUP_ACER_MIC_NO_PRESENCE, 6165 - ALC289_FIXUP_ASUS_G401, 6155 + ALC289_FIXUP_ASUS_GA401, 6156 + ALC289_FIXUP_ASUS_GA502, 6166 6157 ALC256_FIXUP_ACER_MIC_NO_PRESENCE, 6158 + ALC285_FIXUP_HP_GPIO_AMP_INIT, 6167 6159 }; 6168 6160 6169 6161 static const struct hda_fixup alc269_fixups[] = { ··· 7375 7363 .chained = true, 7376 7364 .chain_id = ALC269_FIXUP_HEADSET_MIC 7377 7365 }, 7378 - [ALC289_FIXUP_ASUS_G401] = { 7366 + [ALC289_FIXUP_ASUS_GA401] = { 7367 + .type = HDA_FIXUP_PINS, 7368 + .v.pins = (const struct hda_pintbl[]) { 7369 + { 0x19, 0x03a11020 }, /* headset mic with jack detect */ 7370 + { } 7371 + }, 7372 + }, 7373 + [ALC289_FIXUP_ASUS_GA502] = { 7379 7374 .type = HDA_FIXUP_PINS, 7380 7375 .v.pins = (const struct hda_pintbl[]) { 7381 7376 { 0x19, 0x03a11020 }, /* headset mic with jack detect */ ··· 7397 7378 }, 7398 7379 .chained = true, 7399 7380 .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE 7381 + }, 7382 + [ALC285_FIXUP_HP_GPIO_AMP_INIT] = { 7383 + .type = HDA_FIXUP_FUNC, 7384 + .v.func = alc285_fixup_hp_gpio_amp_init, 7385 + .chained = true, 7386 + .chain_id = ALC285_FIXUP_HP_GPIO_LED 7400 7387 }, 7401 7388 }; 7402 7389 ··· 7554 7529 SND_PCI_QUIRK(0x103c, 0x84e7, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3), 7555 7530 SND_PCI_QUIRK(0x103c, 0x869d, "HP", ALC236_FIXUP_HP_MUTE_LED), 7556 7531 SND_PCI_QUIRK(0x103c, 0x8729, "HP", ALC285_FIXUP_HP_GPIO_LED), 7557 - SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_LED), 7532 + SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_AMP_INIT), 7558 7533 SND_PCI_QUIRK(0x103c, 0x877a, "HP", ALC285_FIXUP_HP_MUTE_LED), 7559 7534 SND_PCI_QUIRK(0x103c, 0x877d, "HP", ALC236_FIXUP_HP_MUTE_LED), 7560 7535 SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC), ··· 7586 7561 SND_PCI_QUIRK(0x1043, 0x1bbd, "ASUS Z550MA", ALC255_FIXUP_ASUS_MIC_NO_PRESENCE), 7587 7562 SND_PCI_QUIRK(0x1043, 0x1c23, "Asus X55U", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), 7588 7563 SND_PCI_QUIRK(0x1043, 0x1ccd, "ASUS X555UB", ALC256_FIXUP_ASUS_MIC), 7589 - SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_G401), 7564 + SND_PCI_QUIRK(0x1043, 0x1e11, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA502), 7565 + SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_GA401), 7590 7566 SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2), 7591 7567 SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC), 7592 7568 SND_PCI_QUIRK(0x1043, 0x834a, "ASUS S101", ALC269_FIXUP_STEREO_DMIC), ··· 7607 7581 SND_PCI_QUIRK(0x10cf, 0x1629, "Lifebook U7x7", ALC255_FIXUP_LIFEBOOK_U7x7_HEADSET_MIC), 7608 7582 SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC), 7609 7583 SND_PCI_QUIRK(0x10ec, 0x10f2, "Intel Reference board", ALC700_FIXUP_INTEL_REFERENCE), 7610 - SND_PCI_QUIRK(0x10ec, 0x1230, "Intel Reference board", ALC225_FIXUP_HEADSET_JACK), 7584 + SND_PCI_QUIRK(0x10ec, 0x1230, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK), 7611 7585 SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-SZ6", ALC269_FIXUP_HEADSET_MODE), 7612 7586 SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC), 7613 7587 SND_PCI_QUIRK(0x144d, 0xc169, "Samsung Notebook 9 Pen (NP930SBE-K01US)", ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET),
+1
sound/usb/pcm.c
··· 367 367 ifnum = 0; 368 368 goto add_sync_ep_from_ifnum; 369 369 case USB_ID(0x07fd, 0x0008): /* MOTU M Series */ 370 + case USB_ID(0x31e9, 0x0001): /* Solid State Logic SSL2 */ 370 371 case USB_ID(0x31e9, 0x0002): /* Solid State Logic SSL2+ */ 371 372 case USB_ID(0x0d9a, 0x00df): /* RTX6001 */ 372 373 ep = 0x81;