ALSA: hda/realtek: Add quirk for Lenovo Ideapad S740
Lenovo Ideapad S740 requires quite a few COEF setups to make its speakers working. The verb table was provided from Ryan Prescott as the result of investigation via qemu: https://github.com/ryanprescott/realtek-verb-tools/wiki/How-to-sniff-verbs-from-a-Windows-sound-driver BugLink: https://github.com/thesofproject/linux/issues/2748 Tested-by: Ryan Prescott <ryan@cousinscomputers.net> Link: https://lore.kernel.org/r/20210416081211.20059-1-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
d1ee66c5d3
commit
26928ca1f0
|
@ -0,0 +1,492 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/* Fixes for Lenovo Ideapad S740, to be included from codec driver */
|
||||
|
||||
static const struct hda_verb alc285_ideapad_s740_coefs[] = {
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x10 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0320 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x24 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0041 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x24 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0041 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x007f },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x007f },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x003c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0011 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x003c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0011 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x000c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001a },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x000c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001a },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x000f },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0042 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x000f },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0042 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0010 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0040 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0010 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0040 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0003 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0009 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0003 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0009 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x004c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x004c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001d },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x004e },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001d },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x004e },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001b },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001b },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0019 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0025 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0019 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0025 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0018 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0037 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0018 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0037 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001a },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0040 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001a },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0040 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0016 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0076 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0016 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0076 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0017 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0010 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0017 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0010 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0015 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0015 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0015 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0015 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0007 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0086 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0007 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0086 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0002 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0002 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0002 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0002 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x24 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0042 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x24 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0042 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x007f },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x007f },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x003c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0011 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x003c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0011 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x000c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x002a },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x000c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x002a },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x000f },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0046 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x000f },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0046 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0010 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0044 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0010 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0044 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0003 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0009 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0003 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0009 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x004c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x004c },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001b },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001b },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0019 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0025 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0019 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0025 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0018 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0037 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0018 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0037 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001a },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0040 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x001a },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0040 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0016 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0076 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0016 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0076 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0017 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0010 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0017 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0010 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0015 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0015 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0015 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0015 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0007 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0086 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0007 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0086 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0002 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0002 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0001 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x29 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0002 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0000 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xb020 },
|
||||
{}
|
||||
};
|
||||
|
||||
static void alc285_fixup_ideapad_s740_coef(struct hda_codec *codec,
|
||||
const struct hda_fixup *fix,
|
||||
int action)
|
||||
{
|
||||
switch (action) {
|
||||
case HDA_FIXUP_ACT_PRE_PROBE:
|
||||
snd_hda_add_verbs(codec, alc285_ideapad_s740_coefs);
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -6239,6 +6239,9 @@ static void alc_fixup_thinkpad_acpi(struct hda_codec *codec,
|
|||
/* for alc295_fixup_hp_top_speakers */
|
||||
#include "hp_x360_helper.c"
|
||||
|
||||
/* for alc285_fixup_ideapad_s740_coef() */
|
||||
#include "ideapad_s740_helper.c"
|
||||
|
||||
enum {
|
||||
ALC269_FIXUP_GPIO2,
|
||||
ALC269_FIXUP_SONY_VAIO,
|
||||
|
@ -6436,6 +6439,7 @@ enum {
|
|||
ALC282_FIXUP_ACER_DISABLE_LINEOUT,
|
||||
ALC255_FIXUP_ACER_LIMIT_INT_MIC_BOOST,
|
||||
ALC256_FIXUP_ACER_HEADSET_MIC,
|
||||
ALC285_FIXUP_IDEAPAD_S740_COEF,
|
||||
};
|
||||
|
||||
static const struct hda_fixup alc269_fixups[] = {
|
||||
|
@ -7920,6 +7924,12 @@ static const struct hda_fixup alc269_fixups[] = {
|
|||
.chained = true,
|
||||
.chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
|
||||
},
|
||||
[ALC285_FIXUP_IDEAPAD_S740_COEF] = {
|
||||
.type = HDA_FIXUP_FUNC,
|
||||
.v.func = alc285_fixup_ideapad_s740_coef,
|
||||
.chained = true,
|
||||
.chain_id = ALC269_FIXUP_THINKPAD_ACPI,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||
|
@ -8263,6 +8273,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
|||
SND_PCI_QUIRK(0x17aa, 0x3176, "ThinkCentre Station", ALC283_FIXUP_HEADSET_MIC),
|
||||
SND_PCI_QUIRK(0x17aa, 0x3178, "ThinkCentre Station", ALC283_FIXUP_HEADSET_MIC),
|
||||
SND_PCI_QUIRK(0x17aa, 0x3818, "Lenovo C940", ALC298_FIXUP_LENOVO_SPK_VOLUME),
|
||||
SND_PCI_QUIRK(0x17aa, 0x3827, "Ideapad S740", ALC285_FIXUP_IDEAPAD_S740_COEF),
|
||||
SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
|
||||
SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC),
|
||||
SND_PCI_QUIRK(0x17aa, 0x3978, "Lenovo B50-70", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
|
||||
|
|
Loading…
Reference in New Issue