# --- T2-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # T2 SDE: package/.../linux/hda-realtek.patch.disabled # Copyright (C) 2017 - 2019 The T2 SDE Project # # More information can be found in the files COPYING and README. # # This patch file is dual-licensed. It is available under the license the # patched project is licensed under, as long as it is an OpenSource license # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms # of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # --- T2-COPYRIGHT-NOTE-END --- The Surface Pro 2 and 3 have a strage frequency response and miss most of the bass. I discovered connecting the HP out to the main DAC fixes this. Maybe the other is mono or whatever strangely mixed signal? As the Lenovo Ideapad 720S (AMD) and possibly the Dell XPS13 are also affected, this may be a general bug w/ most Realtek codecs and the hda_auto_parser, ... - Signed-off-by: René Rebe --- linux-4.18/sound/pci/hda/patch_realtek.c.vanilla 2018-08-22 22:55:52.901015155 +0200 +++ linux-4.18/sound/pci/hda/patch_realtek.c 2018-08-22 23:08:06.477047703 +0200 @@ -5264,6 +5264,18 @@ } } +static void alc288_fixup_headset(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + if (action == HDA_FIXUP_ACT_INIT) { + /* Surface Pro 2 or 3? */ + int nid = codec->core.vendor_id == 0x10ec0280 ? 0x15 : 0x21; + /* DAC node 0x0c is giving low bass output, reverse default order. */ + snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_CONNECT_SEL, 1); + + } +} + static void alc290_fixup_mono_speakers(struct hda_codec *codec, const struct hda_fixup *fix, int action) { @@ -5466,6 +5478,7 @@ ALC283_FIXUP_SENSE_COMBO_JACK, ALC282_FIXUP_ASUS_TX300, ALC283_FIXUP_INT_MIC, + ALC288_FIXUP_HEADSET, ALC290_FIXUP_MONO_SPEAKERS, ALC290_FIXUP_MONO_SPEAKERS_HSJACK, ALC290_FIXUP_SUBWOOFER, @@ -5942,6 +5955,10 @@ .chained = true, .chain_id = ALC290_FIXUP_MONO_SPEAKERS, }, + [ALC288_FIXUP_HEADSET] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc288_fixup_headset, + }, [ALC290_FIXUP_MONO_SPEAKERS] = { .type = HDA_FIXUP_FUNC, .v.func = alc290_fixup_mono_speakers, @@ -8816,7 +8816,9 @@ SND_PCI_QUIRK(0x19da, 0xa130, "Zotac Z68", ALC662_FIXUP_ZOTAC_Z68), SND_PCI_QUIRK(0x1b0a, 0x01b8, "ACER Veriton", ALC662_FIXUP_ACER_VERITON), SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T), - + SND_PCI_QUIRK(0x1414, 0x9c20, "Microsoft Surface Pro 2/3", ALC288_FIXUP_HEADSET), + SND_PCI_QUIRK(0x17aa, 0x3812, "Lenovo ideapad 720S", ALC288_FIXUP_HEADSET), + #if 0 /* Below is a quirk table taken from the old code. * Basically the device should work as is without the fixup table.