diff options
author | Takashi Iwai <tiwai@suse.de> | 2014-12-15 07:47:25 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2014-12-17 12:03:38 -0500 |
commit | 7327643ba1586546a082a0f3ffbd2095ccce089e (patch) | |
tree | d703f307999f2305969f9c287cd9e4b3e06042d6 /sound | |
parent | 38f74d5b82b329dff5bdf8626e8776a36a1835da (diff) |
ALSA: hda - Add quirk for Packard Bell EasyNote MX65
Packard Bell EasyNote MX65 with AD1986A codec needs a few fixups,
namely, the pin config overrides to set only the known I/O pins and
the EAPD has to be turned on. In addition, add stereo mix input
forcibly for avoiding the weird KDE behavior by this update.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=88251
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_analog.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index eb54da757407..a9d78e275138 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
@@ -257,6 +257,18 @@ static void ad1986a_fixup_eapd(struct hda_codec *codec, | |||
257 | } | 257 | } |
258 | } | 258 | } |
259 | 259 | ||
260 | /* enable stereo-mix input for avoiding regression on KDE (bko#88251) */ | ||
261 | static void ad1986a_fixup_eapd_mix_in(struct hda_codec *codec, | ||
262 | const struct hda_fixup *fix, int action) | ||
263 | { | ||
264 | struct ad198x_spec *spec = codec->spec; | ||
265 | |||
266 | if (action == HDA_FIXUP_ACT_PRE_PROBE) { | ||
267 | ad1986a_fixup_eapd(codec, fix, action); | ||
268 | spec->gen.add_stereo_mix_input = HDA_HINT_STEREO_MIX_ENABLE; | ||
269 | } | ||
270 | } | ||
271 | |||
260 | enum { | 272 | enum { |
261 | AD1986A_FIXUP_INV_JACK_DETECT, | 273 | AD1986A_FIXUP_INV_JACK_DETECT, |
262 | AD1986A_FIXUP_ULTRA, | 274 | AD1986A_FIXUP_ULTRA, |
@@ -265,6 +277,8 @@ enum { | |||
265 | AD1986A_FIXUP_LAPTOP, | 277 | AD1986A_FIXUP_LAPTOP, |
266 | AD1986A_FIXUP_LAPTOP_IMIC, | 278 | AD1986A_FIXUP_LAPTOP_IMIC, |
267 | AD1986A_FIXUP_EAPD, | 279 | AD1986A_FIXUP_EAPD, |
280 | AD1986A_FIXUP_EAPD_MIX_IN, | ||
281 | AD1986A_FIXUP_EASYNOTE, | ||
268 | }; | 282 | }; |
269 | 283 | ||
270 | static const struct hda_fixup ad1986a_fixups[] = { | 284 | static const struct hda_fixup ad1986a_fixups[] = { |
@@ -329,6 +343,30 @@ static const struct hda_fixup ad1986a_fixups[] = { | |||
329 | .type = HDA_FIXUP_FUNC, | 343 | .type = HDA_FIXUP_FUNC, |
330 | .v.func = ad1986a_fixup_eapd, | 344 | .v.func = ad1986a_fixup_eapd, |
331 | }, | 345 | }, |
346 | [AD1986A_FIXUP_EAPD_MIX_IN] = { | ||
347 | .type = HDA_FIXUP_FUNC, | ||
348 | .v.func = ad1986a_fixup_eapd_mix_in, | ||
349 | }, | ||
350 | [AD1986A_FIXUP_EASYNOTE] = { | ||
351 | .type = HDA_FIXUP_PINS, | ||
352 | .v.pins = (const struct hda_pintbl[]) { | ||
353 | { 0x1a, 0x0421402f }, /* headphone */ | ||
354 | { 0x1b, 0x90170110 }, /* speaker */ | ||
355 | { 0x1c, 0x411111f0 }, /* N/A */ | ||
356 | { 0x1d, 0x90a70130 }, /* int mic */ | ||
357 | { 0x1e, 0x411111f0 }, /* N/A */ | ||
358 | { 0x1f, 0x04a19040 }, /* mic */ | ||
359 | { 0x20, 0x411111f0 }, /* N/A */ | ||
360 | { 0x21, 0x411111f0 }, /* N/A */ | ||
361 | { 0x22, 0x411111f0 }, /* N/A */ | ||
362 | { 0x23, 0x411111f0 }, /* N/A */ | ||
363 | { 0x24, 0x411111f0 }, /* N/A */ | ||
364 | { 0x25, 0x411111f0 }, /* N/A */ | ||
365 | {} | ||
366 | }, | ||
367 | .chained = true, | ||
368 | .chain_id = AD1986A_FIXUP_EAPD_MIX_IN, | ||
369 | }, | ||
332 | }; | 370 | }; |
333 | 371 | ||
334 | static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { | 372 | static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { |
@@ -342,6 +380,7 @@ static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { | |||
342 | SND_PCI_QUIRK(0x144d, 0xc01e, "FSC V2060", AD1986A_FIXUP_LAPTOP), | 380 | SND_PCI_QUIRK(0x144d, 0xc01e, "FSC V2060", AD1986A_FIXUP_LAPTOP), |
343 | SND_PCI_QUIRK_MASK(0x144d, 0xff00, 0xc000, "Samsung", AD1986A_FIXUP_SAMSUNG), | 381 | SND_PCI_QUIRK_MASK(0x144d, 0xff00, 0xc000, "Samsung", AD1986A_FIXUP_SAMSUNG), |
344 | SND_PCI_QUIRK(0x144d, 0xc027, "Samsung Q1", AD1986A_FIXUP_ULTRA), | 382 | SND_PCI_QUIRK(0x144d, 0xc027, "Samsung Q1", AD1986A_FIXUP_ULTRA), |
383 | SND_PCI_QUIRK(0x1631, 0xc022, "PackardBell EasyNote MX65", AD1986A_FIXUP_EASYNOTE), | ||
345 | SND_PCI_QUIRK(0x17aa, 0x2066, "Lenovo N100", AD1986A_FIXUP_INV_JACK_DETECT), | 384 | SND_PCI_QUIRK(0x17aa, 0x2066, "Lenovo N100", AD1986A_FIXUP_INV_JACK_DETECT), |
346 | SND_PCI_QUIRK(0x17aa, 0x1011, "Lenovo M55", AD1986A_FIXUP_3STACK), | 385 | SND_PCI_QUIRK(0x17aa, 0x1011, "Lenovo M55", AD1986A_FIXUP_3STACK), |
347 | SND_PCI_QUIRK(0x17aa, 0x1017, "Lenovo A60", AD1986A_FIXUP_3STACK), | 386 | SND_PCI_QUIRK(0x17aa, 0x1017, "Lenovo A60", AD1986A_FIXUP_3STACK), |