Comment 3 for bug 1236228

Revision history for this message
Takashi Iwai (tiwai) wrote : Re: [PATCH] ALSA: hda - Fix mono speakers and headset mic on Dell Vostro 5470

At Mon, 7 Oct 2013 10:39:59 +0200,
David Henningsson wrote:
>
> 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 address hidden> (v3.10+)
> BugLink: https://bugs.launchpad.net/bugs/1236228
> Signed-off-by: David Henningsson <email address hidden>

Thanks, applied.

Takashi

> ---
> sound/pci/hda/patch_realtek.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index 0e303b9..52c26d3 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,
> }
> }
>
> +static void alc290_fixup_mono_speakers(struct hda_codec *codec,
> + const struct hda_fixup *fix, int action)
> +{
> + if (action == HDA_FIXUP_ACT_PRE_PROBE)
> + /* Remove DAC node 0x03, as it seems to be
> + giving mono output */
> + snd_hda_override_wcaps(codec, 0x03, 0);
> +}
> +
> enum {
> ALC269_FIXUP_SONY_VAIO,
> ALC275_FIXUP_SONY_VAIO_GPIO2,
> @@ -3522,6 +3531,7 @@ enum {
> ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT,
> ALC269_FIXUP_DELL1_MIC_NO_PRESENCE,
> ALC269_FIXUP_DELL2_MIC_NO_PRESENCE,
> + ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
> ALC269_FIXUP_HEADSET_MODE,
> ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
> ALC269_FIXUP_ASUS_X101_FUNC,
> @@ -3535,6 +3545,7 @@ enum {
> ALC283_FIXUP_CHROME_BOOK,
> ALC282_FIXUP_ASUS_TX300,
> ALC283_FIXUP_INT_MIC,
> + ALC290_FIXUP_MONO_SPEAKERS,
> };
>
> static const struct hda_fixup alc269_fixups[] = {
> @@ -3712,6 +3723,15 @@ static const struct hda_fixup alc269_fixups[] = {
> .chained = true,
> .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
> },
> + [ALC269_FIXUP_DELL3_MIC_NO_PRESENCE] = {
> + .type = HDA_FIXUP_PINS,
> + .v.pins = (const struct hda_pintbl[]) {
> + { 0x1a, 0x01a1913c }, /* use as headset mic, without its own jack detect */
> + { }
> + },
> + .chained = true,
> + .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
> + },
> [ALC269_FIXUP_HEADSET_MODE] = {
> .type = HDA_FIXUP_FUNC,
> .v.func = alc_fixup_headset_mode,
> @@ -3804,6 +3824,12 @@ static const struct hda_fixup alc269_fixups[] = {
> .chained = true,
> .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
> },
> + [ALC290_FIXUP_MONO_SPEAKERS] = {
> + .type = HDA_FIXUP_FUNC,
> + .v.func = alc290_fixup_mono_speakers,
> + .chained = true,
> + .chain_id = ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
> + },
> };
>
> static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> @@ -3845,6 +3871,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> SND_PCI_QUIRK(0x1028, 0x0608, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
> SND_PCI_QUIRK(0x1028, 0x0609, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
> SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
> + SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS),
> SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
> SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
> SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),
> --
> 1.7.9.5
>