mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 21:44:06 +08:00
26928ca1f0
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>
493 lines
19 KiB
C
493 lines
19 KiB
C
// 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;
|
|
}
|
|
}
|