aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-02-13 09:25:07 -0500
committerTakashi Iwai <tiwai@suse.de>2012-02-13 09:26:41 -0500
commit02a237b24d57e2e2d5402c92549e9e792aa24359 (patch)
tree9bc15baa30e6a746a4a24773d0a778786a116e87 /sound
parent805a6af8dba5dfdd35ec35dc52ec0122400b2610 (diff)
ALSA: hda - Fix silent speaker output on Acer Aspire 6935
Since 3.2 kernel, the driver starts trying to assign the multi-io DACs before the speaker, thus it assigns DAC2/3 for multi-io and DAC4 for the speaker for a standard laptop setup like a HP, a speaker, a mic-in and a line-in. However, on Acer Aspire 6935, it seems that the speaker pin 0x14 must be connected with either DAC1 or 2; otherwise it results in silence by some reason, although the codec itself allows the routing to DAC3/4. As a workaround, the connection list of each pin is reduced to be mapped to either only DAC1/2 or DAC3/4, so that the compatible assignment as in kernel 3.1 is achieved. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42740 Cc: <stable@kernel.org> [v3.2+] Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_realtek.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 1d07e8fa2433..c4bde7108328 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -4201,8 +4201,26 @@ enum {
4201 PINFIX_PB_M5210, 4201 PINFIX_PB_M5210,
4202 PINFIX_ACER_ASPIRE_7736, 4202 PINFIX_ACER_ASPIRE_7736,
4203 PINFIX_ASUS_W90V, 4203 PINFIX_ASUS_W90V,
4204 ALC889_FIXUP_DAC_ROUTE,
4204}; 4205};
4205 4206
4207/* Fix the connection of some pins for ALC889:
4208 * At least, Acer Aspire 5935 shows the connections to DAC3/4 don't
4209 * work correctly (bko#42740)
4210 */
4211static void alc889_fixup_dac_route(struct hda_codec *codec,
4212 const struct alc_fixup *fix, int action)
4213{
4214 if (action == ALC_FIXUP_ACT_PRE_PROBE) {
4215 hda_nid_t conn1[2] = { 0x0c, 0x0d };
4216 hda_nid_t conn2[2] = { 0x0e, 0x0f };
4217 snd_hda_override_conn_list(codec, 0x14, 2, conn1);
4218 snd_hda_override_conn_list(codec, 0x15, 2, conn1);
4219 snd_hda_override_conn_list(codec, 0x18, 2, conn2);
4220 snd_hda_override_conn_list(codec, 0x1a, 2, conn2);
4221 }
4222}
4223
4206static const struct alc_fixup alc882_fixups[] = { 4224static const struct alc_fixup alc882_fixups[] = {
4207 [PINFIX_ABIT_AW9D_MAX] = { 4225 [PINFIX_ABIT_AW9D_MAX] = {
4208 .type = ALC_FIXUP_PINS, 4226 .type = ALC_FIXUP_PINS,
@@ -4239,10 +4257,15 @@ static const struct alc_fixup alc882_fixups[] = {
4239 { } 4257 { }
4240 } 4258 }
4241 }, 4259 },
4260 [ALC889_FIXUP_DAC_ROUTE] = {
4261 .type = ALC_FIXUP_FUNC,
4262 .v.func = alc889_fixup_dac_route,
4263 },
4242}; 4264};
4243 4265
4244static const struct snd_pci_quirk alc882_fixup_tbl[] = { 4266static const struct snd_pci_quirk alc882_fixup_tbl[] = {
4245 SND_PCI_QUIRK(0x1025, 0x0155, "Packard-Bell M5120", PINFIX_PB_M5210), 4267 SND_PCI_QUIRK(0x1025, 0x0155, "Packard-Bell M5120", PINFIX_PB_M5210),
4268 SND_PCI_QUIRK(0x1025, 0x0259, "Acer Aspire 5935", ALC889_FIXUP_DAC_ROUTE),
4246 SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", PINFIX_ASUS_W90V), 4269 SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", PINFIX_ASUS_W90V),
4247 SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", PINFIX_LENOVO_Y530), 4270 SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", PINFIX_LENOVO_Y530),
4248 SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", PINFIX_ABIT_AW9D_MAX), 4271 SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", PINFIX_ABIT_AW9D_MAX),