aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/pci/hda/patch_realtek.c43
1 files changed, 37 insertions, 6 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index ef43171c0bd0..a84e0493499d 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3770,10 +3770,14 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec,
3770static void alc290_fixup_mono_speakers(struct hda_codec *codec, 3770static void alc290_fixup_mono_speakers(struct hda_codec *codec,
3771 const struct hda_fixup *fix, int action) 3771 const struct hda_fixup *fix, int action)
3772{ 3772{
3773 if (action == HDA_FIXUP_ACT_PRE_PROBE) 3773 if (action == HDA_FIXUP_ACT_PRE_PROBE) {
3774 /* Remove DAC node 0x03, as it seems to be 3774 /* DAC node 0x03 is giving mono output. We therefore want to
3775 giving mono output */ 3775 make sure 0x14 (front speaker) and 0x15 (headphones) use the
3776 snd_hda_override_wcaps(codec, 0x03, 0); 3776 stereo DAC, while leaving 0x17 (bass speaker) for node 0x03. */
3777 hda_nid_t conn1[2] = { 0x0c };
3778 snd_hda_override_conn_list(codec, 0x14, 1, conn1);
3779 snd_hda_override_conn_list(codec, 0x15, 1, conn1);
3780 }
3777} 3781}
3778 3782
3779#if IS_ENABLED(CONFIG_THINKPAD_ACPI) 3783#if IS_ENABLED(CONFIG_THINKPAD_ACPI)
@@ -3913,6 +3917,9 @@ enum {
3913 ALC282_FIXUP_ASUS_TX300, 3917 ALC282_FIXUP_ASUS_TX300,
3914 ALC283_FIXUP_INT_MIC, 3918 ALC283_FIXUP_INT_MIC,
3915 ALC290_FIXUP_MONO_SPEAKERS, 3919 ALC290_FIXUP_MONO_SPEAKERS,
3920 ALC290_FIXUP_MONO_SPEAKERS_HSJACK,
3921 ALC290_FIXUP_SUBWOOFER,
3922 ALC290_FIXUP_SUBWOOFER_HSJACK,
3916 ALC269_FIXUP_THINKPAD_ACPI, 3923 ALC269_FIXUP_THINKPAD_ACPI,
3917 ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, 3924 ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
3918 ALC255_FIXUP_HEADSET_MODE, 3925 ALC255_FIXUP_HEADSET_MODE,
@@ -4235,9 +4242,31 @@ static const struct hda_fixup alc269_fixups[] = {
4235 .chained = true, 4242 .chained = true,
4236 .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST 4243 .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
4237 }, 4244 },
4245 [ALC290_FIXUP_SUBWOOFER_HSJACK] = {
4246 .type = HDA_FIXUP_PINS,
4247 .v.pins = (const struct hda_pintbl[]) {
4248 { 0x17, 0x90170112 }, /* subwoofer */
4249 { }
4250 },
4251 .chained = true,
4252 .chain_id = ALC290_FIXUP_MONO_SPEAKERS_HSJACK,
4253 },
4254 [ALC290_FIXUP_SUBWOOFER] = {
4255 .type = HDA_FIXUP_PINS,
4256 .v.pins = (const struct hda_pintbl[]) {
4257 { 0x17, 0x90170112 }, /* subwoofer */
4258 { }
4259 },
4260 .chained = true,
4261 .chain_id = ALC290_FIXUP_MONO_SPEAKERS,
4262 },
4238 [ALC290_FIXUP_MONO_SPEAKERS] = { 4263 [ALC290_FIXUP_MONO_SPEAKERS] = {
4239 .type = HDA_FIXUP_FUNC, 4264 .type = HDA_FIXUP_FUNC,
4240 .v.func = alc290_fixup_mono_speakers, 4265 .v.func = alc290_fixup_mono_speakers,
4266 },
4267 [ALC290_FIXUP_MONO_SPEAKERS_HSJACK] = {
4268 .type = HDA_FIXUP_FUNC,
4269 .v.func = alc290_fixup_mono_speakers,
4241 .chained = true, 4270 .chained = true,
4242 .chain_id = ALC269_FIXUP_DELL3_MIC_NO_PRESENCE, 4271 .chain_id = ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
4243 }, 4272 },
@@ -4282,6 +4311,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
4282 SND_PCI_QUIRK(0x1028, 0x05cb, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 4311 SND_PCI_QUIRK(0x1028, 0x05cb, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
4283 SND_PCI_QUIRK(0x1028, 0x05cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 4312 SND_PCI_QUIRK(0x1028, 0x05cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
4284 SND_PCI_QUIRK(0x1028, 0x05cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 4313 SND_PCI_QUIRK(0x1028, 0x05cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
4314 SND_PCI_QUIRK(0x1028, 0x05da, "Dell Vostro 5460", ALC290_FIXUP_SUBWOOFER),
4285 SND_PCI_QUIRK(0x1028, 0x05de, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 4315 SND_PCI_QUIRK(0x1028, 0x05de, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
4286 SND_PCI_QUIRK(0x1028, 0x05e0, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 4316 SND_PCI_QUIRK(0x1028, 0x05e0, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
4287 SND_PCI_QUIRK(0x1028, 0x05e9, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 4317 SND_PCI_QUIRK(0x1028, 0x05e9, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
@@ -4303,10 +4333,11 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
4303 SND_PCI_QUIRK(0x1028, 0x0610, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 4333 SND_PCI_QUIRK(0x1028, 0x0610, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
4304 SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 4334 SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
4305 SND_PCI_QUIRK(0x1028, 0x0614, "Dell Inspiron 3135", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 4335 SND_PCI_QUIRK(0x1028, 0x0614, "Dell Inspiron 3135", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
4306 SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS), 4336 SND_PCI_QUIRK(0x1028, 0x0615, "Dell Vostro 5470", ALC290_FIXUP_SUBWOOFER_HSJACK),
4337 SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_SUBWOOFER_HSJACK),
4307 SND_PCI_QUIRK(0x1028, 0x061f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE), 4338 SND_PCI_QUIRK(0x1028, 0x061f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE),
4308 SND_PCI_QUIRK(0x1028, 0x0629, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 4339 SND_PCI_QUIRK(0x1028, 0x0629, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
4309 SND_PCI_QUIRK(0x1028, 0x0638, "Dell Inspiron 5439", ALC290_FIXUP_MONO_SPEAKERS), 4340 SND_PCI_QUIRK(0x1028, 0x0638, "Dell Inspiron 5439", ALC290_FIXUP_MONO_SPEAKERS_HSJACK),
4310 SND_PCI_QUIRK(0x1028, 0x063e, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 4341 SND_PCI_QUIRK(0x1028, 0x063e, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
4311 SND_PCI_QUIRK(0x1028, 0x063f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE), 4342 SND_PCI_QUIRK(0x1028, 0x063f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE),
4312 SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 4343 SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),