Skip to content

Commit 338cae5

Browse files
David Henningssontiwai
authored andcommitted
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: [email protected] (v3.10+) BugLink: https://bugs.launchpad.net/bugs/1236228 Signed-off-by: David Henningsson <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
1 parent a9d14bc commit 338cae5

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

sound/pci/hda/patch_realtek.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3496,6 +3496,15 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec,
34963496
}
34973497
}
34983498

3499+
static 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+
34993508
enum {
35003509
ALC269_FIXUP_SONY_VAIO,
35013510
ALC275_FIXUP_SONY_VAIO_GPIO2,
@@ -3522,6 +3531,7 @@ enum {
35223531
ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT,
35233532
ALC269_FIXUP_DELL1_MIC_NO_PRESENCE,
35243533
ALC269_FIXUP_DELL2_MIC_NO_PRESENCE,
3534+
ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
35253535
ALC269_FIXUP_HEADSET_MODE,
35263536
ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
35273537
ALC269_FIXUP_ASUS_X101_FUNC,
@@ -3535,6 +3545,7 @@ enum {
35353545
ALC283_FIXUP_CHROME_BOOK,
35363546
ALC282_FIXUP_ASUS_TX300,
35373547
ALC283_FIXUP_INT_MIC,
3548+
ALC290_FIXUP_MONO_SPEAKERS,
35383549
};
35393550

35403551
static const struct hda_fixup alc269_fixups[] = {
@@ -3712,6 +3723,15 @@ static const struct hda_fixup alc269_fixups[] = {
37123723
.chained = true,
37133724
.chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
37143725
},
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+
},
37153735
[ALC269_FIXUP_HEADSET_MODE] = {
37163736
.type = HDA_FIXUP_FUNC,
37173737
.v.func = alc_fixup_headset_mode,
@@ -3804,6 +3824,12 @@ static const struct hda_fixup alc269_fixups[] = {
38043824
.chained = true,
38053825
.chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
38063826
},
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+
},
38073833
};
38083834

38093835
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -3845,6 +3871,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
38453871
SND_PCI_QUIRK(0x1028, 0x0608, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
38463872
SND_PCI_QUIRK(0x1028, 0x0609, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
38473873
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),
38483875
SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
38493876
SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
38503877
SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),

0 commit comments

Comments
 (0)