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-4.20-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"Only usual suspects here: a few more fixups for Realtek HD-audio on
various PCs, including a regression fix in the previous fix for Lenovo
X1 Carbon, as well as a typo fix in the recent Fireface patch"

* tag 'sound-4.20-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda/realtek: Enable audio jacks of ASUS UX433FN/UX333FA with ALC294
ALSA: hda/realtek: Enable audio jacks of ASUS UX533FD with ALC294
ALSA: hda/realtek: ALC294 mic and headset-mode fixups for ASUS X542UN
ALSA: fireface: fix reference to wrong register for clock configuration
ALSA: hda/realtek - Fix the mute LED regresion on Lenovo X1 Carbon
ALSA: hda/realtek - Fixed headphone issue for ALC700

+78 -1
+1 -1
sound/firewire/fireface/ff-protocol-ff400.c
··· 30 30 int err; 31 31 32 32 err = snd_fw_transaction(ff->unit, TCODE_READ_QUADLET_REQUEST, 33 - FF400_SYNC_STATUS, &reg, sizeof(reg), 0); 33 + FF400_CLOCK_CONFIG, &reg, sizeof(reg), 0); 34 34 if (err < 0) 35 35 return err; 36 36 data = le32_to_cpu(reg);
+77
sound/pci/hda/patch_realtek.c
··· 5520 5520 ALC285_FIXUP_LENOVO_HEADPHONE_NOISE, 5521 5521 ALC295_FIXUP_HP_AUTO_MUTE, 5522 5522 ALC286_FIXUP_ACER_AIO_MIC_NO_PRESENCE, 5523 + ALC294_FIXUP_ASUS_MIC, 5524 + ALC294_FIXUP_ASUS_HEADSET_MIC, 5525 + ALC294_FIXUP_ASUS_SPK, 5523 5526 }; 5524 5527 5525 5528 static const struct hda_fixup alc269_fixups[] = { ··· 6395 6392 [ALC285_FIXUP_LENOVO_HEADPHONE_NOISE] = { 6396 6393 .type = HDA_FIXUP_FUNC, 6397 6394 .v.func = alc285_fixup_invalidate_dacs, 6395 + .chained = true, 6396 + .chain_id = ALC269_FIXUP_THINKPAD_ACPI 6398 6397 }, 6399 6398 [ALC295_FIXUP_HP_AUTO_MUTE] = { 6400 6399 .type = HDA_FIXUP_FUNC, ··· 6410 6405 }, 6411 6406 .chained = true, 6412 6407 .chain_id = ALC269_FIXUP_HEADSET_MIC 6408 + }, 6409 + [ALC294_FIXUP_ASUS_MIC] = { 6410 + .type = HDA_FIXUP_PINS, 6411 + .v.pins = (const struct hda_pintbl[]) { 6412 + { 0x13, 0x90a60160 }, /* use as internal mic */ 6413 + { 0x19, 0x04a11120 }, /* use as headset mic, without its own jack detect */ 6414 + { } 6415 + }, 6416 + .chained = true, 6417 + .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC 6418 + }, 6419 + [ALC294_FIXUP_ASUS_HEADSET_MIC] = { 6420 + .type = HDA_FIXUP_PINS, 6421 + .v.pins = (const struct hda_pintbl[]) { 6422 + { 0x19, 0x01a1113c }, /* use as headset mic, without its own jack detect */ 6423 + { } 6424 + }, 6425 + .chained = true, 6426 + .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC 6427 + }, 6428 + [ALC294_FIXUP_ASUS_SPK] = { 6429 + .type = HDA_FIXUP_VERBS, 6430 + .v.verbs = (const struct hda_verb[]) { 6431 + /* Set EAPD high */ 6432 + { 0x20, AC_VERB_SET_COEF_INDEX, 0x40 }, 6433 + { 0x20, AC_VERB_SET_PROC_COEF, 0x8800 }, 6434 + { } 6435 + }, 6436 + .chained = true, 6437 + .chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC 6413 6438 }, 6414 6439 }; 6415 6440 ··· 6583 6548 SND_PCI_QUIRK(0x1043, 0x12e0, "ASUS X541SA", ALC256_FIXUP_ASUS_MIC), 6584 6549 SND_PCI_QUIRK(0x1043, 0x13b0, "ASUS Z550SA", ALC256_FIXUP_ASUS_MIC), 6585 6550 SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK), 6551 + SND_PCI_QUIRK(0x1043, 0x14a1, "ASUS UX533FD", ALC294_FIXUP_ASUS_SPK), 6586 6552 SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A), 6587 6553 SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC), 6588 6554 SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), ··· 7191 7155 SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE, 7192 7156 ALC292_STANDARD_PINS, 7193 7157 {0x13, 0x90a60140}), 7158 + SND_HDA_PIN_QUIRK(0x10ec0294, 0x1043, "ASUS", ALC294_FIXUP_ASUS_MIC, 7159 + {0x14, 0x90170110}, 7160 + {0x1b, 0x90a70130}, 7161 + {0x21, 0x04211020}), 7162 + SND_HDA_PIN_QUIRK(0x10ec0294, 0x1043, "ASUS", ALC294_FIXUP_ASUS_SPK, 7163 + {0x12, 0x90a60130}, 7164 + {0x17, 0x90170110}, 7165 + {0x21, 0x04211020}), 7194 7166 SND_HDA_PIN_QUIRK(0x10ec0295, 0x1028, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, 7195 7167 ALC295_STANDARD_PINS, 7196 7168 {0x17, 0x21014020}, ··· 7269 7225 7270 7226 /* HP */ 7271 7227 alc_update_coef_idx(codec, 0x4, 0, 1<<11); 7228 + } 7229 + 7230 + static void alc294_hp_init(struct hda_codec *codec) 7231 + { 7232 + struct alc_spec *spec = codec->spec; 7233 + hda_nid_t hp_pin = spec->gen.autocfg.hp_pins[0]; 7234 + int i, val; 7235 + 7236 + if (!hp_pin) 7237 + return; 7238 + 7239 + snd_hda_codec_write(codec, hp_pin, 0, 7240 + AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE); 7241 + 7242 + msleep(100); 7243 + 7244 + snd_hda_codec_write(codec, hp_pin, 0, 7245 + AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0); 7246 + 7247 + alc_update_coef_idx(codec, 0x6f, 0x000f, 0);/* Set HP depop to manual mode */ 7248 + alc_update_coefex_idx(codec, 0x58, 0x00, 0x8000, 0x8000); /* HP depop procedure start */ 7249 + 7250 + /* Wait for depop procedure finish */ 7251 + val = alc_read_coefex_idx(codec, 0x58, 0x01); 7252 + for (i = 0; i < 20 && val & 0x0080; i++) { 7253 + msleep(50); 7254 + val = alc_read_coefex_idx(codec, 0x58, 0x01); 7255 + } 7256 + /* Set HP depop to auto mode */ 7257 + alc_update_coef_idx(codec, 0x6f, 0x000f, 0x000b); 7258 + msleep(50); 7272 7259 } 7273 7260 7274 7261 /* ··· 7427 7352 spec->codec_variant = ALC269_TYPE_ALC294; 7428 7353 spec->gen.mixer_nid = 0; /* ALC2x4 does not have any loopback mixer path */ 7429 7354 alc_update_coef_idx(codec, 0x6b, 0x0018, (1<<4) | (1<<3)); /* UAJ MIC Vref control by verb */ 7355 + alc294_hp_init(codec); 7430 7356 break; 7431 7357 case 0x10ec0300: 7432 7358 spec->codec_variant = ALC269_TYPE_ALC300; ··· 7439 7363 spec->codec_variant = ALC269_TYPE_ALC700; 7440 7364 spec->gen.mixer_nid = 0; /* ALC700 does not have any loopback mixer path */ 7441 7365 alc_update_coef_idx(codec, 0x4a, 1 << 15, 0); /* Combo jack auto trigger control */ 7366 + alc294_hp_init(codec); 7442 7367 break; 7443 7368 7444 7369 }