Commit 3074cbea80e718df9d55a7b9103400253c43fe60
Committed by
Greg Kroah-Hartman
1 parent
586ff7faf6
ALSA: hda - Fix mono speakers and headset mic on Dell Vostro 5470
This is a backport for stable. The original commit SHA is 338cae565c53755de9f87d6a801517940d2d56f7. On this machine, DAC on node 0x03 seems to give mono output. Also, it needs additional patches for headset mic support. It supports CTIA style headsets only. Alsa-info available at the bug link below. BugLink: https://bugs.launchpad.net/bugs/1236228 Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Showing 1 changed file with 27 additions and 0 deletions Side-by-side Diff
sound/pci/hda/patch_realtek.c
... | ... | @@ -3308,6 +3308,15 @@ |
3308 | 3308 | } |
3309 | 3309 | } |
3310 | 3310 | |
3311 | +static void alc290_fixup_mono_speakers(struct hda_codec *codec, | |
3312 | + const struct hda_fixup *fix, int action) | |
3313 | +{ | |
3314 | + if (action == HDA_FIXUP_ACT_PRE_PROBE) | |
3315 | + /* Remove DAC node 0x03, as it seems to be | |
3316 | + giving mono output */ | |
3317 | + snd_hda_override_wcaps(codec, 0x03, 0); | |
3318 | +} | |
3319 | + | |
3311 | 3320 | enum { |
3312 | 3321 | ALC269_FIXUP_SONY_VAIO, |
3313 | 3322 | ALC275_FIXUP_SONY_VAIO_GPIO2, |
... | ... | @@ -3335,6 +3344,8 @@ |
3335 | 3344 | ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT, |
3336 | 3345 | ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, |
3337 | 3346 | ALC269_FIXUP_DELL2_MIC_NO_PRESENCE, |
3347 | + ALC269_FIXUP_DELL3_MIC_NO_PRESENCE, | |
3348 | + ALC290_FIXUP_MONO_SPEAKERS, | |
3338 | 3349 | ALC269_FIXUP_HEADSET_MODE, |
3339 | 3350 | ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC, |
3340 | 3351 | ALC269_FIXUP_ASUS_X101_FUNC, |
... | ... | @@ -3522,6 +3533,15 @@ |
3522 | 3533 | .chained = true, |
3523 | 3534 | .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC |
3524 | 3535 | }, |
3536 | + [ALC269_FIXUP_DELL3_MIC_NO_PRESENCE] = { | |
3537 | + .type = HDA_FIXUP_PINS, | |
3538 | + .v.pins = (const struct hda_pintbl[]) { | |
3539 | + { 0x1a, 0x01a1913c }, /* use as headset mic, without its own jack detect */ | |
3540 | + { } | |
3541 | + }, | |
3542 | + .chained = true, | |
3543 | + .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC | |
3544 | + }, | |
3525 | 3545 | [ALC269_FIXUP_HEADSET_MODE] = { |
3526 | 3546 | .type = HDA_FIXUP_FUNC, |
3527 | 3547 | .v.func = alc_fixup_headset_mode, |
... | ... | @@ -3603,6 +3623,12 @@ |
3603 | 3623 | { } |
3604 | 3624 | }, |
3605 | 3625 | }, |
3626 | + [ALC290_FIXUP_MONO_SPEAKERS] = { | |
3627 | + .type = HDA_FIXUP_FUNC, | |
3628 | + .v.func = alc290_fixup_mono_speakers, | |
3629 | + .chained = true, | |
3630 | + .chain_id = ALC269_FIXUP_DELL3_MIC_NO_PRESENCE, | |
3631 | + }, | |
3606 | 3632 | }; |
3607 | 3633 | |
3608 | 3634 | static const struct snd_pci_quirk alc269_fixup_tbl[] = { |
... | ... | @@ -3639,6 +3665,7 @@ |
3639 | 3665 | SND_PCI_QUIRK(0x1028, 0x0608, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), |
3640 | 3666 | SND_PCI_QUIRK(0x1028, 0x0609, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), |
3641 | 3667 | SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), |
3668 | + SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS), | |
3642 | 3669 | SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), |
3643 | 3670 | SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), |
3644 | 3671 | SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2), |