Commit cb766404 authored by Takashi Iwai's avatar Takashi Iwai

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: default avatarTakashi Iwai <tiwai@suse.de>
parent f27a64f9
...@@ -5677,6 +5677,7 @@ static const struct hda_verb alc268_beep_init_verbs[] = { ...@@ -5677,6 +5677,7 @@ static const struct hda_verb alc268_beep_init_verbs[] = {
enum { enum {
ALC268_FIXUP_INV_DMIC, ALC268_FIXUP_INV_DMIC,
ALC268_FIXUP_HP_EAPD,
}; };
static const struct alc_fixup alc268_fixups[] = { static const struct alc_fixup alc268_fixups[] = {
...@@ -5684,10 +5685,26 @@ static const struct alc_fixup alc268_fixups[] = { ...@@ -5684,10 +5685,26 @@ static const struct alc_fixup alc268_fixups[] = {
.type = ALC_FIXUP_FUNC, .type = ALC_FIXUP_FUNC,
.v.func = alc_fixup_inv_dmic_0x12, .v.func = alc_fixup_inv_dmic_0x12,
}, },
[ALC268_FIXUP_HP_EAPD] = {
.type = ALC_FIXUP_VERBS,
.v.verbs = (const struct hda_verb[]) {
{0x15, AC_VERB_SET_EAPD_BTLENABLE, 0},
{}
}
},
}; };
static const struct alc_model_fixup alc268_fixup_models[] = { static const struct alc_model_fixup alc268_fixup_models[] = {
{.id = ALC268_FIXUP_INV_DMIC, .name = "inv-dmic"}, {.id = ALC268_FIXUP_INV_DMIC, .name = "inv-dmic"},
{.id = ALC268_FIXUP_HP_EAPD, .name = "hp-eapd"},
{}
};
static const struct snd_pci_quirk alc268_fixup_tbl[] = {
/* below is codec SSID since multiple Toshiba laptops have the
* same PCI SSID 1179:ff00
*/
SND_PCI_QUIRK(0x1179, 0xff06, "Toshiba P200", ALC268_FIXUP_HP_EAPD),
{} {}
}; };
...@@ -5722,7 +5739,7 @@ static int patch_alc268(struct hda_codec *codec) ...@@ -5722,7 +5739,7 @@ static int patch_alc268(struct hda_codec *codec)
spec = codec->spec; spec = codec->spec;
alc_pick_fixup(codec, alc268_fixup_models, NULL, alc268_fixups); alc_pick_fixup(codec, alc268_fixup_models, alc268_fixup_tbl, alc268_fixups);
alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE); alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE);
/* automatic parse from the BIOS config */ /* automatic parse from the BIOS config */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment