aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Henningsson <david.henningsson@canonical.com>2013-10-07 04:39:59 -0400
committerTakashi Iwai <tiwai@suse.de>2013-10-07 04:49:37 -0400
commit338cae565c53755de9f87d6a801517940d2d56f7 (patch)
treefdefdd07d40e891d4335926ce6045ebb6397e6b9
parenta9d14bc0b188a822e42787d01e56c06fe9750162 (diff)
ALSA: hda - Fix mono speakers and headset mic on Dell Vostro 5470
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. Cc: stable@kernel.org (v3.10+) BugLink: https://bugs.launchpad.net/bugs/1236228 Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/patch_realtek.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 0e303b99a47c..52c26d3a61d4 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3496,6 +3496,15 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec,
3496 } 3496 }
3497} 3497}
3498 3498
3499static void alc290_fixup_mono_speakers(struct hda_codec *codec,
3500 const struct hda_fixup *fix, int action)
3501{
3502 if (action == HDA_FIXUP_ACT_PRE_PROBE)
3503 /* Remove DAC node 0x03, as it seems to be
3504 giving mono output */
3505 snd_hda_override_wcaps(codec, 0x03, 0);
3506}
3507
3499enum { 3508enum {
3500 ALC269_FIXUP_SONY_VAIO, 3509 ALC269_FIXUP_SONY_VAIO,
3501 ALC275_FIXUP_SONY_VAIO_GPIO2, 3510 ALC275_FIXUP_SONY_VAIO_GPIO2,
@@ -3522,6 +3531,7 @@ enum {
3522 ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT, 3531 ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT,
3523 ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, 3532 ALC269_FIXUP_DELL1_MIC_NO_PRESENCE,
3524 ALC269_FIXUP_DELL2_MIC_NO_PRESENCE, 3533 ALC269_FIXUP_DELL2_MIC_NO_PRESENCE,
3534 ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
3525 ALC269_FIXUP_HEADSET_MODE, 3535 ALC269_FIXUP_HEADSET_MODE,
3526 ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC, 3536 ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
3527 ALC269_FIXUP_ASUS_X101_FUNC, 3537 ALC269_FIXUP_ASUS_X101_FUNC,
@@ -3535,6 +3545,7 @@ enum {
3535 ALC283_FIXUP_CHROME_BOOK, 3545 ALC283_FIXUP_CHROME_BOOK,
3536 ALC282_FIXUP_ASUS_TX300, 3546 ALC282_FIXUP_ASUS_TX300,
3537 ALC283_FIXUP_INT_MIC, 3547 ALC283_FIXUP_INT_MIC,
3548 ALC290_FIXUP_MONO_SPEAKERS,
3538}; 3549};
3539 3550
3540static const struct hda_fixup alc269_fixups[] = { 3551static const struct hda_fixup alc269_fixups[] = {
@@ -3712,6 +3723,15 @@ static const struct hda_fixup alc269_fixups[] = {
3712 .chained = true, 3723 .chained = true,
3713 .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC 3724 .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
3714 }, 3725 },
3726 [ALC269_FIXUP_DELL3_MIC_NO_PRESENCE] = {
3727 .type = HDA_FIXUP_PINS,
3728 .v.pins = (const struct hda_pintbl[]) {
3729 { 0x1a, 0x01a1913c }, /* use as headset mic, without its own jack detect */
3730 { }
3731 },
3732 .chained = true,
3733 .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
3734 },
3715 [ALC269_FIXUP_HEADSET_MODE] = { 3735 [ALC269_FIXUP_HEADSET_MODE] = {
3716 .type = HDA_FIXUP_FUNC, 3736 .type = HDA_FIXUP_FUNC,
3717 .v.func = alc_fixup_headset_mode, 3737 .v.func = alc_fixup_headset_mode,
@@ -3804,6 +3824,12 @@ static const struct hda_fixup alc269_fixups[] = {
3804 .chained = true, 3824 .chained = true,
3805 .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST 3825 .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
3806 }, 3826 },
3827 [ALC290_FIXUP_MONO_SPEAKERS] = {
3828 .type = HDA_FIXUP_FUNC,
3829 .v.func = alc290_fixup_mono_speakers,
3830 .chained = true,
3831 .chain_id = ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
3832 },
3807}; 3833};
3808 3834
3809static const struct snd_pci_quirk alc269_fixup_tbl[] = { 3835static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -3845,6 +3871,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
3845 SND_PCI_QUIRK(0x1028, 0x0608, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 3871 SND_PCI_QUIRK(0x1028, 0x0608, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
3846 SND_PCI_QUIRK(0x1028, 0x0609, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 3872 SND_PCI_QUIRK(0x1028, 0x0609, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
3847 SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 3873 SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
3874 SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS),
3848 SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 3875 SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
3849 SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 3876 SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
3850 SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2), 3877 SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),