Re: [PATCH 0/4] ALSA: usb-audio: Demote the severity of sticky GET_CUR
Takashi Iwai <[email protected]>
| Newsgroups | org.kernel.vger.linux-sound,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Sat, 22 Aug 2026 20:52:27 +0200, Rong Zhang wrote: > > Currently, a mixer is disabled when its GET_CUR is sticky, causing > userspace to fall back to soft mixers, unless > QUIRK_FLAG_MIXER_GET_CUR_BROKEN is set. This leads to issues on some > wireless headphones with broken GET_CUR but effective SET_CUR, which use > poorly-performed lossy codecs and are prone to audible distortion at low > volume. They have to set the quirk flag to reeanble the mixer. > > Considering that users can always opt into soft mixers if they need it, > i.e., when SET_CUR is stubbed, demote the severity of sticky GET_CUR by > marking GET_CUR as broken and only provide mixer values from the cache. > The mixer itself is still registered. > > The default behavior of sticky check now becomes what > QUIRK_FLAG_MIXER_GET_CUR_BROKEN originally does, so the quirk flag is no > longer needed. > > On some devices, whether their GET_CUR being sticky depends on whether > hotpluggable components are present. When the hotpluggable components > are missing on probe, their GET_CUR behavior is classified as broken. > Therefore, reverse QUIRK_FLAG_MIXER_GET_CUR_BROKEN as > QUIRK_FLAG_MIXER_GET_CUR_OK, so that it can be set to prevent the > heuristics from gating GET_CUR. > > Note that even if the quirk flag is set, init_cur_mix_raw() should still > initialize the mixer value to cval->min, otherwise restoring the bogus > saved value on the first channel could lead to unbalanced channels. > > The first user of QUIRK_FLAG_MIXER_GET_CUR_OK is Logitech PRO X > Wireless, whose Playback mixer's GET_CUR somehow becomes broken when the > microphone is detached, so set QUIRK_FLAG_MIXER_GET_CUR_OK to prevent > the mixer behavior from depending on whether the microphone is attached. > The device also needs QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE as the minimum > mixer value doesn't work properly. > > Reported-by: Alexander Niemeyer <[email protected]> > Closes: https://msgid.link/[email protected] > Closes: https://msgid.link/[email protected] > Signed-off-by: Rong Zhang <[email protected]> Applied all four patches now. Thanks. Takashi