Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull another round of sound fixes from Takashi Iwai:
"A few regression fixes for Realtek HD-audio codecs, mainly specific to
some laptop models."

* tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda/realtek - Fix mem leak (and rid us of trailing whitespace).
ALSA: hda/realtek - Add quirk for Mac Pro 5,1 machines
ALSA: hda/realtek - Add a fixup entry for Acer Aspire 8940G
ALSA: hda/realtek - Fix GPIO1 setup for Acer Aspire 4930 & co
ALSA: hda/realtek - Add a few ALC882 model strings back

+29 -11
+3 -1
Documentation/sound/alsa/HD-Audio-Models.txt
··· 43 43 44 44 ALC882/883/885/888/889 45 45 ====================== 46 - N/A 46 + acer-aspire-4930g Acer Aspire 4930G/5930G/6530G/6930G/7730G 47 + acer-aspire-8930g Acer Aspire 8330G/6935G 48 + acer-aspire Acer Aspire others 47 49 48 50 ALC861/660 49 51 ==========
+26 -10
sound/pci/hda/patch_realtek.c
··· 3398 3398 for (;;) { 3399 3399 badness = fill_and_eval_dacs(codec, fill_hardwired, 3400 3400 fill_mio_first); 3401 - if (badness < 0) 3401 + if (badness < 0) { 3402 + kfree(best_cfg); 3402 3403 return badness; 3404 + } 3403 3405 debug_badness("==> lo_type=%d, wired=%d, mio=%d, badness=0x%x\n", 3404 3406 cfg->line_out_type, fill_hardwired, fill_mio_first, 3405 3407 badness); ··· 3436 3434 cfg->line_out_type = AUTO_PIN_SPEAKER_OUT; 3437 3435 fill_hardwired = true; 3438 3436 continue; 3439 - } 3437 + } 3440 3438 if (cfg->hp_outs > 0 && 3441 3439 cfg->line_out_type == AUTO_PIN_SPEAKER_OUT) { 3442 3440 cfg->speaker_outs = cfg->line_outs; ··· 3450 3448 cfg->line_out_type = AUTO_PIN_HP_OUT; 3451 3449 fill_hardwired = true; 3452 3450 continue; 3453 - } 3451 + } 3454 3452 break; 3455 3453 } 3456 3454 ··· 4425 4423 static int alc880_parse_auto_config(struct hda_codec *codec) 4426 4424 { 4427 4425 static const hda_nid_t alc880_ignore[] = { 0x1d, 0 }; 4428 - static const hda_nid_t alc880_ssids[] = { 0x15, 0x1b, 0x14, 0 }; 4426 + static const hda_nid_t alc880_ssids[] = { 0x15, 0x1b, 0x14, 0 }; 4429 4427 return alc_parse_auto_config(codec, alc880_ignore, alc880_ssids); 4430 4428 } 4431 4429 ··· 5271 5269 { 0x16, 0x99130111 }, /* CLFE speaker */ 5272 5270 { 0x17, 0x99130112 }, /* surround speaker */ 5273 5271 { } 5274 - } 5272 + }, 5273 + .chained = true, 5274 + .chain_id = ALC882_FIXUP_GPIO1, 5275 5275 }, 5276 5276 [ALC882_FIXUP_ACER_ASPIRE_8930G] = { 5277 5277 .type = ALC_FIXUP_PINS, ··· 5316 5312 { 0x20, AC_VERB_SET_COEF_INDEX, 0x07 }, 5317 5313 { 0x20, AC_VERB_SET_PROC_COEF, 0x3050 }, 5318 5314 { } 5319 - } 5315 + }, 5316 + .chained = true, 5317 + .chain_id = ALC882_FIXUP_GPIO1, 5320 5318 }, 5321 5319 [ALC885_FIXUP_MACPRO_GPIO] = { 5322 5320 .type = ALC_FIXUP_FUNC, ··· 5365 5359 ALC882_FIXUP_ACER_ASPIRE_4930G), 5366 5360 SND_PCI_QUIRK(0x1025, 0x0155, "Packard-Bell M5120", ALC882_FIXUP_PB_M5210), 5367 5361 SND_PCI_QUIRK(0x1025, 0x0259, "Acer Aspire 5935", ALC889_FIXUP_DAC_ROUTE), 5362 + SND_PCI_QUIRK(0x1025, 0x026b, "Acer Aspire 8940G", ALC882_FIXUP_ACER_ASPIRE_8930G), 5368 5363 SND_PCI_QUIRK(0x1025, 0x0296, "Acer Aspire 7736z", ALC882_FIXUP_ACER_ASPIRE_7736), 5369 5364 SND_PCI_QUIRK(0x1043, 0x13c2, "Asus A7M", ALC882_FIXUP_EAPD), 5370 5365 SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V), ··· 5391 5384 SND_PCI_QUIRK(0x106b, 0x3f00, "Macbook 5,1", ALC889_FIXUP_IMAC91_VREF), 5392 5385 SND_PCI_QUIRK(0x106b, 0x4000, "MacbookPro 5,1", ALC889_FIXUP_IMAC91_VREF), 5393 5386 SND_PCI_QUIRK(0x106b, 0x4100, "Macmini 3,1", ALC889_FIXUP_IMAC91_VREF), 5387 + SND_PCI_QUIRK(0x106b, 0x4200, "Mac Pro 5,1", ALC885_FIXUP_MACPRO_GPIO), 5394 5388 SND_PCI_QUIRK(0x106b, 0x4600, "MacbookPro 5,2", ALC889_FIXUP_IMAC91_VREF), 5395 5389 SND_PCI_QUIRK(0x106b, 0x4900, "iMac 9,1 Aluminum", ALC889_FIXUP_IMAC91_VREF), 5396 5390 SND_PCI_QUIRK(0x106b, 0x4a00, "Macbook 5,2", ALC889_FIXUP_IMAC91_VREF), ··· 5404 5396 SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_FIXUP_EAPD), 5405 5397 SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", ALC882_FIXUP_LENOVO_Y530), 5406 5398 SND_PCI_QUIRK(0x8086, 0x0022, "DX58SO", ALC889_FIXUP_COEF), 5399 + {} 5400 + }; 5401 + 5402 + static const struct alc_model_fixup alc882_fixup_models[] = { 5403 + {.id = ALC882_FIXUP_ACER_ASPIRE_4930G, .name = "acer-aspire-4930g"}, 5404 + {.id = ALC882_FIXUP_ACER_ASPIRE_8930G, .name = "acer-aspire-8930g"}, 5405 + {.id = ALC883_FIXUP_ACER_EAPD, .name = "acer-aspire"}, 5407 5406 {} 5408 5407 }; 5409 5408 ··· 5454 5439 if (err < 0) 5455 5440 goto error; 5456 5441 5457 - alc_pick_fixup(codec, NULL, alc882_fixup_tbl, alc882_fixups); 5442 + alc_pick_fixup(codec, alc882_fixup_models, alc882_fixup_tbl, 5443 + alc882_fixups); 5458 5444 alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE); 5459 5445 5460 5446 alc_auto_parse_customize_define(codec); ··· 6095 6079 * Basically the device should work as is without the fixup table. 6096 6080 * If BIOS doesn't give a proper info, enable the corresponding 6097 6081 * fixup entry. 6098 - */ 6082 + */ 6099 6083 SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A", 6100 6084 ALC269_FIXUP_AMIC), 6101 6085 SND_PCI_QUIRK(0x1043, 0x1013, "ASUS N61Da", ALC269_FIXUP_AMIC), ··· 6312 6296 { 6313 6297 if (action == ALC_FIXUP_ACT_PRE_PROBE) 6314 6298 codec->no_jack_detect = 1; 6315 - } 6299 + } 6316 6300 6317 6301 static const struct alc_fixup alc861_fixups[] = { 6318 6302 [ALC861_FIXUP_FSC_AMILO_PI1505] = { ··· 6730 6714 * Basically the device should work as is without the fixup table. 6731 6715 * If BIOS doesn't give a proper info, enable the corresponding 6732 6716 * fixup entry. 6733 - */ 6717 + */ 6734 6718 SND_PCI_QUIRK(0x1043, 0x1000, "ASUS N50Vm", ALC662_FIXUP_ASUS_MODE1), 6735 6719 SND_PCI_QUIRK(0x1043, 0x1092, "ASUS NB", ALC662_FIXUP_ASUS_MODE3), 6736 6720 SND_PCI_QUIRK(0x1043, 0x1173, "ASUS K73Jn", ALC662_FIXUP_ASUS_MODE1),