[PATCH 2/2] ALSA: usb-audio: Prompt users to check MIXER_GET_CUR_BROKEN for potential sticky mixers

From: Rong Zhang

Date: Sat May 30 2026 - 17:02:47 EST


The UAC mixer core utilizes volume SET_CUR and GET_CUR to identify
devices with sticky mixers, i.e., consider a mixer as sticky if its
GET_CUR always returns a constant despite SET_CUR has been emitted.

Unfortunately, the methodology can't distinguish between sticky mixers
and working SET_CUR but broken GET_CUR, so a quirk flag
(MIXER_GET_CUR_BROKEN) has been added to tell that the device should
fall into the second category when GET_CUR returns a constant value, so
that the mixer is still usable. While the case is relatively rare, two
different devices have been reported as requiring the quirk flag.

Add an info message prompting users to check MIXER_GET_CUR_BROKEN for
potential sticky mixers, so that users can learn how to do some
experiments to determine what's going on. If the mixer surprisingly
turns out to be non-sticky, they can submit a patch for a new quirk
table entry.

Signed-off-by: Rong Zhang <i@xxxxxxxx>
---
sound/usb/mixer.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
index b98222e5f697..a2a499ecd267 100644
--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -1285,6 +1285,8 @@ static int check_sticky_volume_control(struct usb_mixer_elem_info *cval,
"%d:%d: sticky mixer values (%d/%d/%d => %d), disabling\n",
cval->head.id, mixer_ctrl_intf(cval->head.mixer),
cval->min, cval->max, cval->res, saved);
+ usb_audio_info(cval->head.mixer->chip,
+ "check MIXER_GET_CUR_BROKEN if you believe the mixer is non-sticky");

return -ENODEV;
}

--
2.53.0