diff options
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 43 |
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, | |||
3770 | static void alc290_fixup_mono_speakers(struct hda_codec *codec, | 3770 | static 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), |