mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
ASoC: wm8903: Move the DRC QR threshold to the register that holds it
The DRC_THRESH_QR field is bits 7 and 6 of DRC_1, but the control sits on
DRC_0. Its shift and max are right for the field, only the register is
wrong.
Those bits of DRC_0 belong to DRC_STARTUP_GAIN, which "DRC Startup
Volume" claims as bits 10 to 6. So the two controls share bits 7 and 6.
Writing either one moves the other, and the quick release threshold is
never reached at all.
The six fields of DRC_1 tile it exactly, so there is nowhere else the
threshold could live. Point the control at DRC_1.
Found by a sweep for two controls claiming the same bits of one
register. No board with this codec was to hand, the register map is
the driver's own wm8903.h.
Fixes: f1c0a02f32 ("ALSA: ASoC: Add WM8903 CODEC driver")
Signed-off-by: HyeongJun An <sammiee5311@gmail.com>
Assisted-by: Claude:claude-opus-5
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://patch.msgid.link/20260920135327.3628704-1-sammiee5311@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
d395e1b62d
commit
e31ae4aeb0
|
|
@ -676,7 +676,7 @@ SOC_ENUM("DRC Decay Rate", drc_decay),
|
|||
SOC_ENUM("DRC FF Delay", drc_ff_delay),
|
||||
SOC_SINGLE("DRC Anticlip Switch", WM8903_DRC_0, 1, 1, 0),
|
||||
SOC_SINGLE("DRC QR Switch", WM8903_DRC_0, 2, 1, 0),
|
||||
SOC_SINGLE_TLV("DRC QR Threshold Volume", WM8903_DRC_0, 6, 3, 0, drc_tlv_max),
|
||||
SOC_SINGLE_TLV("DRC QR Threshold Volume", WM8903_DRC_1, 6, 3, 0, drc_tlv_max),
|
||||
SOC_ENUM("DRC QR Decay Rate", drc_qr_decay),
|
||||
SOC_SINGLE("DRC Smoothing Switch", WM8903_DRC_0, 3, 1, 0),
|
||||
SOC_SINGLE("DRC Smoothing Hysteresis Switch", WM8903_DRC_0, 0, 1, 0),
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user