sound fixes for 5.8-final or -rc8
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 -----BEGIN PGP SIGNATURE----- iQJCBAABCAAsFiEEIXTw5fNLNI7mMiVaLtJE4w1nLE8FAl8jz+EOHHRpd2FpQHN1 c2UuZGUACgkQLtJE4w1nLE/IvBAAwE/nGobhiLBRIMEm8odapHTYk9e4w729XgL5 SPxzyR1Q5+sc/fywe5uVF8sORbqe7OrZoCCehKwfyowaEOs+Tru/asjhMKvw6k9b JNUP+UXi+cxVkzAkdldHLU5R34cp2MbSGR13rbJeIWmgatLW+M60D7nwHMN6Z+QX x75uWSrIXyxag31AeCfYYuAncWd/ykaOpopH/OG7p944oca09Bm6CI+i74fplLwC NQt8sAg0RPTp/KdOTbPculnBABIZF8cRWJEvUZN6+e4+6RafhzStqkp1PFnumRYp NaltqTufqwxB+2us7zEtam89Nc8LQX9iVOAgqlW1H7tTqtuUli5C5qFpDi4QzAxy SvX4QAhDAUjjXMJRQZZzXcs9w8eZOeVYhcWOCrK6lSe5t1PB9//cBibqbJnhTa8L obSKkN3pySG2WD+3ENILh1yMGZBPhrJZEoUkrpCCU2nZ+IvCFsL1cQtN83/JCW1/ rBaYt/u88FiZKYABLoGzKy/JNlmF16Yw5so7Sqy6kj32SpBi/Yqz0e7PJDe6P6U1 rErL3s9+qmMC/w40kXYEHRf8Xx0OD6r73UJJzIxzjDri/JZ9cTrILTeDKikcpul/ yEr1F5S9ZK3mW0XqXDgHzbtP1P9oD5q6r7utegE9cGl/qhyFcLm33zpd1x2byeHa dHUBQbg= =iY22 -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
78431ab723
@ -2935,6 +2935,10 @@ static int hda_codec_runtime_suspend(struct device *dev)
|
||||
struct hda_codec *codec = dev_to_hda_codec(dev);
|
||||
unsigned int state;
|
||||
|
||||
/* Nothing to do if card registration fails and the component driver never probes */
|
||||
if (!codec->card)
|
||||
return 0;
|
||||
|
||||
cancel_delayed_work_sync(&codec->jackpoll_work);
|
||||
state = hda_call_codec_suspend(codec);
|
||||
if (codec->link_down_at_suspend ||
|
||||
@ -2949,6 +2953,10 @@ static int hda_codec_runtime_resume(struct device *dev)
|
||||
{
|
||||
struct hda_codec *codec = dev_to_hda_codec(dev);
|
||||
|
||||
/* Nothing to do if card registration fails and the component driver never probes */
|
||||
if (!codec->card)
|
||||
return 0;
|
||||
|
||||
codec_display_power(codec, true);
|
||||
snd_hdac_codec_link_up(&codec->core);
|
||||
hda_call_codec_resume(codec);
|
||||
|
@ -41,7 +41,7 @@
|
||||
/* 24 unused */
|
||||
#define AZX_DCAPS_COUNT_LPIB_DELAY (1 << 25) /* Take LPIB as delay */
|
||||
#define AZX_DCAPS_PM_RUNTIME (1 << 26) /* runtime PM support */
|
||||
/* 27 unused */
|
||||
#define AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP (1 << 27) /* Workaround for spurious wakeups after suspend */
|
||||
#define AZX_DCAPS_CORBRP_SELF_CLEAR (1 << 28) /* CORBRP clears itself after reset */
|
||||
#define AZX_DCAPS_NO_MSI64 (1 << 29) /* Stick to 32-bit MSIs */
|
||||
#define AZX_DCAPS_SEPARATE_STREAM_TAG (1 << 30) /* capture and playback use separate stream tag */
|
||||
|
@ -298,7 +298,8 @@ enum {
|
||||
/* PCH for HSW/BDW; with runtime PM */
|
||||
/* no i915 binding for this as HSW/BDW has another controller for HDMI */
|
||||
#define AZX_DCAPS_INTEL_PCH \
|
||||
(AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME)
|
||||
(AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\
|
||||
AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP)
|
||||
|
||||
/* HSW HDMI */
|
||||
#define AZX_DCAPS_INTEL_HASWELL \
|
||||
@ -1028,7 +1029,14 @@ static int azx_suspend(struct device *dev)
|
||||
chip = card->private_data;
|
||||
bus = azx_bus(chip);
|
||||
snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
|
||||
pm_runtime_force_suspend(dev);
|
||||
/* An ugly workaround: direct call of __azx_runtime_suspend() and
|
||||
* __azx_runtime_resume() for old Intel platforms that suffer from
|
||||
* spurious wakeups after S3 suspend
|
||||
*/
|
||||
if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP)
|
||||
__azx_runtime_suspend(chip);
|
||||
else
|
||||
pm_runtime_force_suspend(dev);
|
||||
if (bus->irq >= 0) {
|
||||
free_irq(bus->irq, chip);
|
||||
bus->irq = -1;
|
||||
@ -1057,7 +1065,10 @@ static int azx_resume(struct device *dev)
|
||||
if (azx_acquire_irq(chip, 1) < 0)
|
||||
return -EIO;
|
||||
|
||||
pm_runtime_force_resume(dev);
|
||||
if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP)
|
||||
__azx_runtime_resume(chip, false);
|
||||
else
|
||||
pm_runtime_force_resume(dev);
|
||||
snd_power_change_state(card, SNDRV_CTL_POWER_D0);
|
||||
|
||||
trace_azx_resume(chip);
|
||||
|
@ -2440,6 +2440,7 @@ static void generic_acomp_notifier_set(struct drm_audio_component *acomp,
|
||||
mutex_lock(&spec->bind_lock);
|
||||
spec->use_acomp_notifier = use_acomp;
|
||||
spec->codec->relaxed_resume = use_acomp;
|
||||
spec->codec->bus->keep_power = 0;
|
||||
/* reprogram each jack detection logic depending on the notifier */
|
||||
for (i = 0; i < spec->num_pins; i++)
|
||||
reprogram_jack_detect(spec->codec,
|
||||
@ -2534,7 +2535,6 @@ static void generic_acomp_init(struct hda_codec *codec,
|
||||
if (!snd_hdac_acomp_init(&codec->bus->core, &spec->drm_audio_ops,
|
||||
match_bound_vga, 0)) {
|
||||
spec->acomp_registered = true;
|
||||
codec->bus->keep_power = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5975,6 +5975,16 @@ static void alc_fixup_disable_mic_vref(struct hda_codec *codec,
|
||||
snd_hda_codec_set_pin_target(codec, 0x19, PIN_VREFHIZ);
|
||||
}
|
||||
|
||||
static void alc285_fixup_hp_gpio_amp_init(struct hda_codec *codec,
|
||||
const struct hda_fixup *fix, int action)
|
||||
{
|
||||
if (action != HDA_FIXUP_ACT_INIT)
|
||||
return;
|
||||
|
||||
msleep(100);
|
||||
alc_write_coef_idx(codec, 0x65, 0x0);
|
||||
}
|
||||
|
||||
/* for hda_fixup_thinkpad_acpi() */
|
||||
#include "thinkpad_helper.c"
|
||||
|
||||
@ -6152,8 +6162,10 @@ enum {
|
||||
ALC269VC_FIXUP_ACER_VCOPPERBOX_PINS,
|
||||
ALC269VC_FIXUP_ACER_HEADSET_MIC,
|
||||
ALC269VC_FIXUP_ACER_MIC_NO_PRESENCE,
|
||||
ALC289_FIXUP_ASUS_G401,
|
||||
ALC289_FIXUP_ASUS_GA401,
|
||||
ALC289_FIXUP_ASUS_GA502,
|
||||
ALC256_FIXUP_ACER_MIC_NO_PRESENCE,
|
||||
ALC285_FIXUP_HP_GPIO_AMP_INIT,
|
||||
};
|
||||
|
||||
static const struct hda_fixup alc269_fixups[] = {
|
||||
@ -7363,7 +7375,14 @@ static const struct hda_fixup alc269_fixups[] = {
|
||||
.chained = true,
|
||||
.chain_id = ALC269_FIXUP_HEADSET_MIC
|
||||
},
|
||||
[ALC289_FIXUP_ASUS_G401] = {
|
||||
[ALC289_FIXUP_ASUS_GA401] = {
|
||||
.type = HDA_FIXUP_PINS,
|
||||
.v.pins = (const struct hda_pintbl[]) {
|
||||
{ 0x19, 0x03a11020 }, /* headset mic with jack detect */
|
||||
{ }
|
||||
},
|
||||
},
|
||||
[ALC289_FIXUP_ASUS_GA502] = {
|
||||
.type = HDA_FIXUP_PINS,
|
||||
.v.pins = (const struct hda_pintbl[]) {
|
||||
{ 0x19, 0x03a11020 }, /* headset mic with jack detect */
|
||||
@ -7379,6 +7398,12 @@ static const struct hda_fixup alc269_fixups[] = {
|
||||
.chained = true,
|
||||
.chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE
|
||||
},
|
||||
[ALC285_FIXUP_HP_GPIO_AMP_INIT] = {
|
||||
.type = HDA_FIXUP_FUNC,
|
||||
.v.func = alc285_fixup_hp_gpio_amp_init,
|
||||
.chained = true,
|
||||
.chain_id = ALC285_FIXUP_HP_GPIO_LED
|
||||
},
|
||||
};
|
||||
|
||||
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||
@ -7529,7 +7554,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x103c, 0x84e7, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3),
|
||||
SND_PCI_QUIRK(0x103c, 0x869d, "HP", ALC236_FIXUP_HP_MUTE_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8729, "HP", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_AMP_INIT),
|
||||
SND_PCI_QUIRK(0x103c, 0x877a, "HP", ALC285_FIXUP_HP_MUTE_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x877d, "HP", ALC236_FIXUP_HP_MUTE_LED),
|
||||
SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC),
|
||||
@ -7561,7 +7586,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x1043, 0x1bbd, "ASUS Z550MA", ALC255_FIXUP_ASUS_MIC_NO_PRESENCE),
|
||||
SND_PCI_QUIRK(0x1043, 0x1c23, "Asus X55U", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
|
||||
SND_PCI_QUIRK(0x1043, 0x1ccd, "ASUS X555UB", ALC256_FIXUP_ASUS_MIC),
|
||||
SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_G401),
|
||||
SND_PCI_QUIRK(0x1043, 0x1e11, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA502),
|
||||
SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_GA401),
|
||||
SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2),
|
||||
SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC),
|
||||
SND_PCI_QUIRK(0x1043, 0x834a, "ASUS S101", ALC269_FIXUP_STEREO_DMIC),
|
||||
@ -7581,7 +7607,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x10cf, 0x1629, "Lifebook U7x7", ALC255_FIXUP_LIFEBOOK_U7x7_HEADSET_MIC),
|
||||
SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC),
|
||||
SND_PCI_QUIRK(0x10ec, 0x10f2, "Intel Reference board", ALC700_FIXUP_INTEL_REFERENCE),
|
||||
SND_PCI_QUIRK(0x10ec, 0x1230, "Intel Reference board", ALC225_FIXUP_HEADSET_JACK),
|
||||
SND_PCI_QUIRK(0x10ec, 0x1230, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK),
|
||||
SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-SZ6", ALC269_FIXUP_HEADSET_MODE),
|
||||
SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC),
|
||||
SND_PCI_QUIRK(0x144d, 0xc169, "Samsung Notebook 9 Pen (NP930SBE-K01US)", ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET),
|
||||
|
@ -367,6 +367,7 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
|
||||
ifnum = 0;
|
||||
goto add_sync_ep_from_ifnum;
|
||||
case USB_ID(0x07fd, 0x0008): /* MOTU M Series */
|
||||
case USB_ID(0x31e9, 0x0001): /* Solid State Logic SSL2 */
|
||||
case USB_ID(0x31e9, 0x0002): /* Solid State Logic SSL2+ */
|
||||
case USB_ID(0x0d9a, 0x00df): /* RTX6001 */
|
||||
ep = 0x81;
|
||||
|
Loading…
Reference in New Issue
Block a user