mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
![Takashi Iwai](/assets/img/avatar_default.png)
[ Upstream commit 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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
492 lines
19 KiB
C
492 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;
|
|
}
|
|
}
|