diff options
author | Takashi Iwai <tiwai@suse.de> | 2012-10-20 04:55:21 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-10-20 12:20:55 -0400 |
commit | cb766404e6b8c566569eb9ada02ea45d28729864 (patch) | |
tree | 080aedfc5d3e03f11b09166cd6bba7f00ac2e8b1 /sound/pci | |
parent | f27a64f9973ff932ece576793c195de60c1c6c9b (diff) |
ALSA: hda - Fix silent headphone output from Toshiba P200
By some reason, Toshiba laptop doesn't like the EAPD turned up for the
headphone pin. Add a fix up code to force to turn down EAPD for NID
0x15.
Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=569991
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 2c62edd6d4fd..f7397ad02a0d 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -5677,6 +5677,7 @@ static const struct hda_verb alc268_beep_init_verbs[] = { | |||
5677 | 5677 | ||
5678 | enum { | 5678 | enum { |
5679 | ALC268_FIXUP_INV_DMIC, | 5679 | ALC268_FIXUP_INV_DMIC, |
5680 | ALC268_FIXUP_HP_EAPD, | ||
5680 | }; | 5681 | }; |
5681 | 5682 | ||
5682 | static const struct alc_fixup alc268_fixups[] = { | 5683 | static const struct alc_fixup alc268_fixups[] = { |
@@ -5684,10 +5685,26 @@ static const struct alc_fixup alc268_fixups[] = { | |||
5684 | .type = ALC_FIXUP_FUNC, | 5685 | .type = ALC_FIXUP_FUNC, |
5685 | .v.func = alc_fixup_inv_dmic_0x12, | 5686 | .v.func = alc_fixup_inv_dmic_0x12, |
5686 | }, | 5687 | }, |
5688 | [ALC268_FIXUP_HP_EAPD] = { | ||
5689 | .type = ALC_FIXUP_VERBS, | ||
5690 | .v.verbs = (const struct hda_verb[]) { | ||
5691 | {0x15, AC_VERB_SET_EAPD_BTLENABLE, 0}, | ||
5692 | {} | ||
5693 | } | ||
5694 | }, | ||
5687 | }; | 5695 | }; |
5688 | 5696 | ||
5689 | static const struct alc_model_fixup alc268_fixup_models[] = { | 5697 | static const struct alc_model_fixup alc268_fixup_models[] = { |
5690 | {.id = ALC268_FIXUP_INV_DMIC, .name = "inv-dmic"}, | 5698 | {.id = ALC268_FIXUP_INV_DMIC, .name = "inv-dmic"}, |
5699 | {.id = ALC268_FIXUP_HP_EAPD, .name = "hp-eapd"}, | ||
5700 | {} | ||
5701 | }; | ||
5702 | |||
5703 | static const struct snd_pci_quirk alc268_fixup_tbl[] = { | ||
5704 | /* below is codec SSID since multiple Toshiba laptops have the | ||
5705 | * same PCI SSID 1179:ff00 | ||
5706 | */ | ||
5707 | SND_PCI_QUIRK(0x1179, 0xff06, "Toshiba P200", ALC268_FIXUP_HP_EAPD), | ||
5691 | {} | 5708 | {} |
5692 | }; | 5709 | }; |
5693 | 5710 | ||
@@ -5722,7 +5739,7 @@ static int patch_alc268(struct hda_codec *codec) | |||
5722 | 5739 | ||
5723 | spec = codec->spec; | 5740 | spec = codec->spec; |
5724 | 5741 | ||
5725 | alc_pick_fixup(codec, alc268_fixup_models, NULL, alc268_fixups); | 5742 | alc_pick_fixup(codec, alc268_fixup_models, alc268_fixup_tbl, alc268_fixups); |
5726 | alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE); | 5743 | alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE); |
5727 | 5744 | ||
5728 | /* automatic parse from the BIOS config */ | 5745 | /* automatic parse from the BIOS config */ |