| From e312a869cd726c698a75caca0d9e5c22fd3f1534 Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Tue, 6 Mar 2018 12:14:17 +0100 |
| Subject: ALSA: hda/realtek - Fix dock line-out volume on Dell Precision 7520 |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| commit e312a869cd726c698a75caca0d9e5c22fd3f1534 upstream. |
| |
| The dock line-out pin (NID 0x17 of ALC3254 codec) on Dell Precision |
| 7520 may route to three different DACs, 0x02, 0x03 and 0x06. The |
| first two DACS have the volume amp controls while the last one |
| doesn't. And unfortunately, the auto-parser assigns this pin to DAC3, |
| resulting in the non-working volume control for the line out. |
| |
| Fix it by disabling the routing to DAC3 on the corresponding pin. |
| |
| Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199029 |
| Cc: <stable@vger.kernel.org> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/pci/hda/patch_realtek.c | 16 ++++++++++++++++ |
| 1 file changed, 16 insertions(+) |
| |
| --- a/sound/pci/hda/patch_realtek.c |
| +++ b/sound/pci/hda/patch_realtek.c |
| @@ -5129,6 +5129,16 @@ static void alc298_fixup_speaker_volume( |
| } |
| } |
| |
| +/* disable DAC3 (0x06) selection on NID 0x17 as it has no volume amp control */ |
| +static void alc295_fixup_disable_dac3(struct hda_codec *codec, |
| + const struct hda_fixup *fix, int action) |
| +{ |
| + if (action == HDA_FIXUP_ACT_PRE_PROBE) { |
| + hda_nid_t conn[2] = { 0x02, 0x03 }; |
| + snd_hda_override_conn_list(codec, 0x17, 2, conn); |
| + } |
| +} |
| + |
| /* Hook to update amp GPIO4 for automute */ |
| static void alc280_hp_gpio4_automute_hook(struct hda_codec *codec, |
| struct hda_jack_callback *jack) |
| @@ -5321,6 +5331,7 @@ enum { |
| ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY, |
| ALC255_FIXUP_DELL_SPK_NOISE, |
| ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, |
| + ALC295_FIXUP_DISABLE_DAC3, |
| ALC280_FIXUP_HP_HEADSET_MIC, |
| ALC221_FIXUP_HP_FRONT_MIC, |
| ALC292_FIXUP_TPT460, |
| @@ -6055,6 +6066,10 @@ static const struct hda_fixup alc269_fix |
| .chained = true, |
| .chain_id = ALC298_FIXUP_DELL_AIO_MIC_NO_PRESENCE, |
| }, |
| + [ALC295_FIXUP_DISABLE_DAC3] = { |
| + .type = HDA_FIXUP_FUNC, |
| + .v.func = alc295_fixup_disable_dac3, |
| + }, |
| [ALC256_FIXUP_DELL_INSPIRON_7559_SUBWOOFER] = { |
| .type = HDA_FIXUP_PINS, |
| .v.pins = (const struct hda_pintbl[]) { |
| @@ -6245,6 +6260,7 @@ static const struct snd_pci_quirk alc269 |
| SND_PCI_QUIRK(0x1028, 0x0725, "Dell Inspiron 3162", ALC255_FIXUP_DELL_SPK_NOISE), |
| SND_PCI_QUIRK(0x1028, 0x075b, "Dell XPS 13 9360", ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE), |
| SND_PCI_QUIRK(0x1028, 0x075d, "Dell AIO", ALC298_FIXUP_SPK_VOLUME), |
| + SND_PCI_QUIRK(0x1028, 0x07b0, "Dell Precision 7520", ALC295_FIXUP_DISABLE_DAC3), |
| SND_PCI_QUIRK(0x1028, 0x0798, "Dell Inspiron 17 7000 Gaming", ALC256_FIXUP_DELL_INSPIRON_7559_SUBWOOFER), |
| SND_PCI_QUIRK(0x1028, 0x080c, "Dell WYSE", ALC225_FIXUP_DELL_WYSE_MIC_NO_PRESENCE), |
| SND_PCI_QUIRK(0x1028, 0x082a, "Dell XPS 13 9360", ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE), |