aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2013-11-29 06:47:34 -0500
committerTakashi Iwai <tiwai@suse.de>2013-11-29 10:20:02 -0500
commit6ddf0fd1c462a418a3cbb8b0653820dc48ffbd98 (patch)
tree125ef281f93ce6ad7c49f0a4497f714f691ad449
parent4d6ff250857a8b5f8e33ea62ff16f165085f8655 (diff)
ALSA: hda - Fix silent output on ASUS W7J laptop
The recent kernels got regressions on ASUS W7J with ALC660 codec where no sound comes out. After a long debugging session, we found out that setting the pin control on the unused NID 0x10 is mandatory for the outputs. And, it was found out that another magic of NID 0x0f that is required for other ASUS laptops isn't needed on this machine. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=66081 Reported-and-tested-by: Andrey Lipaev <lipaev@mail.ru> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/patch_realtek.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 6366a6683e22..a98f3296b891 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -4494,6 +4494,7 @@ enum {
4494 ALC861_FIXUP_AMP_VREF_0F, 4494 ALC861_FIXUP_AMP_VREF_0F,
4495 ALC861_FIXUP_NO_JACK_DETECT, 4495 ALC861_FIXUP_NO_JACK_DETECT,
4496 ALC861_FIXUP_ASUS_A6RP, 4496 ALC861_FIXUP_ASUS_A6RP,
4497 ALC660_FIXUP_ASUS_W7J,
4497}; 4498};
4498 4499
4499/* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */ 4500/* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */
@@ -4543,10 +4544,21 @@ static const struct hda_fixup alc861_fixups[] = {
4543 .v.func = alc861_fixup_asus_amp_vref_0f, 4544 .v.func = alc861_fixup_asus_amp_vref_0f,
4544 .chained = true, 4545 .chained = true,
4545 .chain_id = ALC861_FIXUP_NO_JACK_DETECT, 4546 .chain_id = ALC861_FIXUP_NO_JACK_DETECT,
4547 },
4548 [ALC660_FIXUP_ASUS_W7J] = {
4549 .type = HDA_FIXUP_VERBS,
4550 .v.verbs = (const struct hda_verb[]) {
4551 /* ASUS W7J needs a magic pin setup on unused NID 0x10
4552 * for enabling outputs
4553 */
4554 {0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24},
4555 { }
4556 },
4546 } 4557 }
4547}; 4558};
4548 4559
4549static const struct snd_pci_quirk alc861_fixup_tbl[] = { 4560static const struct snd_pci_quirk alc861_fixup_tbl[] = {
4561 SND_PCI_QUIRK(0x1043, 0x1253, "ASUS W7J", ALC660_FIXUP_ASUS_W7J),
4550 SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", ALC861_FIXUP_ASUS_A6RP), 4562 SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", ALC861_FIXUP_ASUS_A6RP),
4551 SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", ALC861_FIXUP_AMP_VREF_0F), 4563 SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", ALC861_FIXUP_AMP_VREF_0F),
4552 SND_PCI_QUIRK(0x1462, 0x7254, "HP DX2200", ALC861_FIXUP_NO_JACK_DETECT), 4564 SND_PCI_QUIRK(0x1462, 0x7254, "HP DX2200", ALC861_FIXUP_NO_JACK_DETECT),