mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 10:09:10 +02:00
Intel HD Audio defines Coefficient Index and Processing Coefficient as
separate audio widget controls in the Audio Widget Verb Definitions:
Coefficient Index selects the coefficient slot, while Processing
Coefficient accesses the value at the selected slot.
hda_reg_read_coef() selects the slot with AC_VERB_SET_COEF_INDEX, but
then uses AC_VERB_GET_COEF_INDEX for the value read. That reads back the
selected index instead of the coefficient value. hda_reg_write_coef()
has the same issue and builds the value write from AC_VERB_GET_COEF_INDEX
instead of AC_VERB_SET_PROC_COEF.
This only affects the regmap coefficient cache path used by codecs that
set codec->cache_coef. Direct coefficient helpers already use the normal
SET_COEF_INDEX followed by GET_PROC_COEF or SET_PROC_COEF sequence, which
is likely why this has not been noticed widely.
Use AC_VERB_GET_PROC_COEF for cached coefficient reads and
AC_VERB_SET_PROC_COEF for cached coefficient writes.
Fixes:
|
||
|---|---|---|
| .. | ||
| ext | ||
| array.c | ||
| bus.c | ||
| component.c | ||
| controller.c | ||
| device.c | ||
| hda_bus_type.c | ||
| hdmi_chmap.c | ||
| i915.c | ||
| intel-dsp-config.c | ||
| intel-nhlt.c | ||
| intel-sdw-acpi.c | ||
| Kconfig | ||
| local.h | ||
| Makefile | ||
| regmap.c | ||
| stream.c | ||
| sysfs.c | ||
| trace.c | ||
| trace.h | ||