aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2014-12-15 07:47:25 -0500
committerTakashi Iwai <tiwai@suse.de>2014-12-17 12:03:38 -0500
commit7327643ba1586546a082a0f3ffbd2095ccce089e (patch)
treed703f307999f2305969f9c287cd9e4b3e06042d6 /sound
parent38f74d5b82b329dff5bdf8626e8776a36a1835da (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.c39
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) */
261static 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
260enum { 272enum {
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
270static const struct hda_fixup ad1986a_fixups[] = { 284static 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
334static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { 372static 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),