Commit 3074cbea80e718df9d55a7b9103400253c43fe60

Authored by David Henningsson
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),