From nobody Mon Jun 8 20:54:37 2026 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D859E41C319; Tue, 26 May 2026 17:50:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779817814; cv=pass; b=aosoA/c42Au/r+9uFjqKXysZCykuDbPnP/ZfKrvBezgMDzJRH7xVz7SxJ44CBtYZQ3oCyuJAJXbkmjtCH03gE24codvYVKTDZ/Re9VbDhc+J/zv4DPG+k+XRXnyT7CkflDLcgNWAfMhQ17FBC4OM0+6dWsvjbNY6rIirIG02pEA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779817814; c=relaxed/simple; bh=DdD/pZ/nr15cbBsSL5kGBPgOLKWuqsf6ZPdeb/nYmEE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eQcQIu6VVgnJbJRd1MzTej9xuOSRJ99Zdkh+ztrb/KpWgCzRPq9oaFwoC2qWCuIYo5UVF1JypjHvhNQBUaUj9Y5veR5ROwq4/Faras+MZjGMDrPL2dJEbaU8+cHhIOV8IVzGebyA4zhMe3rPWYJqJ1H/WKfgiBM6vbPTo+37fXQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rong.moe; spf=pass smtp.mailfrom=rong.moe; dkim=pass (2048-bit key) header.d=rong.moe header.i=i@rong.moe header.b=SSi/aDoI; arc=pass smtp.client-ip=136.143.188.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rong.moe Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rong.moe Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rong.moe header.i=i@rong.moe header.b="SSi/aDoI" ARC-Seal: i=1; a=rsa-sha256; t=1779817799; cv=none; d=zohomail.com; s=zohoarc; b=cNQxDWIZMtjlShI/i3gdjnDxmAms46tzN6UedsgP7+onQKjBBc5qgQUqeWkoFA4eqI1AIILw3JrBJRcdawlqWgxILAkqjRsrgPrCiK0Zr9xPuatUQunLB+vEnIymfjjC1rSNHAxxr7GxSCnCkrpxLSo3KuWTCNJHQI6KrWNw/DU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779817799; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=GHspFBKSVp6v+wlp5GmuX41RZNfc8goqrKH0LS7xmwo=; b=fXIkPlJIhUXQoSKNQrh5pmzYC8RVtaWB57HQJDQQ457ehE4TUHABFJacYcquP7co763vf84Owxe7I5V+9ZuFRUnRk1APIY0V08WHrSmqzQ9UeVOKBzLN8usbcAZKbyE3mVD9993huVPmVEcWMv0Uv8+q9BmAZz79Cpah2OAzTGE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=rong.moe; spf=pass smtp.mailfrom=i@rong.moe; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1779817799; s=zmail2048; d=rong.moe; i=i@rong.moe; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=GHspFBKSVp6v+wlp5GmuX41RZNfc8goqrKH0LS7xmwo=; b=SSi/aDoIVuGIJWuFhNd+XF/24vscn89CO6+tyHUW1v9uxSniUeqwaWGTLLT2dGXt lKUIxUxtXWm0IzLmNZrtcFpgdDljoB0dp6A9eq7t/Ekh65zrTKfXsPpEpsi6IgIzV2E kyCvpebv/xvSmnpDG2l1OSq8znTQ2X0SF1Sc1XxJU805foDoQFKBl5YT8iTXJBRvsfw 2oofj6YuGXf8sg6ISHaFMyp6iku9Ag4qBSTb1IwvQrSXBOiJgKrQSXwXCf5zUzju4rh oXMfmbEFlk7FEt3/ECFCL8M4xFm8hDOqAFlbOcXyfJImOvSzrZHh9wI43TPiH9U4y1B zjLBPUXMng== Received: by mx.zohomail.com with SMTPS id 1779817797328909.2614707255308; Tue, 26 May 2026 10:49:57 -0700 (PDT) From: Rong Zhang Date: Wed, 27 May 2026 01:49:23 +0800 Subject: [PATCH 1/3] ALSA: doc: usb-audio: Add doc for QUIRK_FLAG_IFB_SILENCE_ON_EMPTY Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260527-uac-quirk-get-cur-vol-v1-1-e9362b712e5e@rong.moe> References: <20260527-uac-quirk-get-cur-vol-v1-0-e9362b712e5e@rong.moe> In-Reply-To: <20260527-uac-quirk-get-cur-vol-v1-0-e9362b712e5e@rong.moe> To: Jaroslav Kysela , Takashi Iwai , Jonathan Corbet , Shuah Khan Cc: Gordon Chen , linux-sound@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Rong Zhang X-Mailer: b4 0.16-dev-d5d98 X-ZohoMailClient: External QUIRK_FLAG_IFB_SILENCE_ON_EMPTY was introduced into usb-audio before without appropriate documentation, so add it. Fixes: a23812004228 ("ALSA: usb-audio: add IFB_SILENCE_ON_EMPTY quirk for B= ehringer Flow 8") Signed-off-by: Rong Zhang --- Documentation/sound/alsa-configuration.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/sound/alsa-configuration.rst b/Documentation/sou= nd/alsa-configuration.rst index f75f08763941..4b30cd63c5a5 100644 --- a/Documentation/sound/alsa-configuration.rst +++ b/Documentation/sound/alsa-configuration.rst @@ -2383,6 +2383,12 @@ quirk_flags ``V(x) =3D k * x``; ``dB(x) =3D 20 * log10(x)``. Overrides bit 24 * bit 28: ``mixer_capture_linear_vol`` Similar to bit 27 but for capture streams. Overrides bit 25 + * bit 29: ``ifb_silence_on_empty`` + In implicit feedback mode, when an entire capture URB returns wi= th + all iso_frame_desc[i].status !=3D 0 (bytes=3D=3D0), do not silen= tly return + from snd_usb_handle_sync_urb. Instead fall through and enqueue a + packet_info containing only size-0 packets, so the OUT ring keeps + moving (emits silence). Needed by Behringer Flow 8 (1397:050c). =20 This module supports multiple devices, autoprobe and hotplugging. =20 --=20 2.53.0 From nobody Mon Jun 8 20:54:37 2026 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D84F641C311; Tue, 26 May 2026 17:50:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779817814; cv=pass; b=S3GKiXgbhGLkzQhVLJ27/jVfS1pKdt7+pBwQmyN6zr1bi4ykqNdQDRBXnKmFuCbbj3A0A3OMz8Guk+vAOuCC2PSPX+l2vg8kzP0gyH3Q/drEdQ3Sc3CwtOfP9gZhCmN6k3pWplPf+yqphNS9mt7SJgZwoBdrres09ai2JNt056Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779817814; c=relaxed/simple; bh=vH7FauxUkp45yBL/ew16wMzMQf+NbBEHQ1nFF3xNEB8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SL0RJFErQDErgQ9qbwJghwLrQKvgYRnHggyeQWbA4H36Jhx0XEYo0a2pn5UjqASIgo9o6bgwYlOpMAaxbwNilfgucph1xGT15JSyYxYCfxBq7vHz0tIpVRbQ61k2mPfJYtnmpxczClK/T3Qml7aZv3eXv/CWLk3kBn0GJtl3u70= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rong.moe; spf=pass smtp.mailfrom=rong.moe; dkim=pass (2048-bit key) header.d=rong.moe header.i=i@rong.moe header.b=p/6AsAQR; arc=pass smtp.client-ip=136.143.188.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rong.moe Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rong.moe Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rong.moe header.i=i@rong.moe header.b="p/6AsAQR" ARC-Seal: i=1; a=rsa-sha256; t=1779817801; cv=none; d=zohomail.com; s=zohoarc; b=GoR+SOxvMZ+U0y6OOJr/l2BbUGpWGVp4+Yk1V4kxp01gdBhvpbWfqy9q5paImUxFqp3TG71vLQtyITYt6gTgVLvPLyFHl9AfrqWug1vms+xkTg10M/8R4MYOOG18QEf56jWGoSWR1vlzmF1RlwRQGjjck2pMEMiMicDM4npkGUk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779817801; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=VLrDT377GASBLn5Fv+sCaTen+2wMN2viBJCcFAipBEU=; b=QJN3N2tG90meN/Xlc9/+2JtQysaMscGFqcinOMgh3B6pwDG9hVP545API8ZPtiz12N4YKA5mAfsKSmaapFofBs4xBwgM6X3I4GyVEbYsHjBlMVrT1JIhIbXE5V7t57TYNXB2F6RGV5lTAFZL7nPkF8l5d3zF7gX6cjpzhDewVpI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=rong.moe; spf=pass smtp.mailfrom=i@rong.moe; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1779817801; s=zmail2048; d=rong.moe; i=i@rong.moe; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=VLrDT377GASBLn5Fv+sCaTen+2wMN2viBJCcFAipBEU=; b=p/6AsAQREqvp5lqyXRilbxmM/oAn4BKzz2FlD9xR/7Cfy3HZ0kbZzqac2J/G5mV+ aoQCbZVTPfRfFcrmsVCeuyoH6Ei9qumfPTf9kfm5KAtpVmTAkFhA/MuX4kHKkIxcvZK cAGJD4m5Nx8YpFk9LQKb1cULZ84LhYZtQe+WIXB8gBQpIvgb1FtNrBr5zIayUF12feD Sks197s07XO9H+UAlF5vnCp1PDwLfFDWovZYjNeJICVMwHLcZrOLYKiSC1BzgZtqYvM wHHgXs0bkSRxCr0rclul7HaqI1Dm8I8XtaMVODM1+9Aml4dqap8ObUGMcV0jVLbO/d8 OLk9EaBGiw== Received: by mx.zohomail.com with SMTPS id 177981780023181.57790475533602; Tue, 26 May 2026 10:50:00 -0700 (PDT) From: Rong Zhang Date: Wed, 27 May 2026 01:49:24 +0800 Subject: [PATCH 2/3] ALSA: usb-audio: Add QUIRK_FLAG_MIXER_SKIP_GET_CUR_VOL Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260527-uac-quirk-get-cur-vol-v1-2-e9362b712e5e@rong.moe> References: <20260527-uac-quirk-get-cur-vol-v1-0-e9362b712e5e@rong.moe> In-Reply-To: <20260527-uac-quirk-get-cur-vol-v1-0-e9362b712e5e@rong.moe> To: Jaroslav Kysela , Takashi Iwai , Jonathan Corbet , Shuah Khan Cc: Gordon Chen , linux-sound@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Rong Zhang X-Mailer: b4 0.16-dev-d5d98 X-ZohoMailClient: External Since commit 86aa1ea1f15c ("ALSA: usb-audio: Do not expose sticky mixers"), the UAC mixer core utilizes volume SET_CUR and GET_CUR to identify devices with sticky mixers. Unfortunately, even though most devices with sticky GET_CUR also have corresponding sticky SET_CUR, which I actually met more since the commit had been merged, there is also a rare case that some devices may have volume mixers that responds to SET_CUR properly but with its GET_CUR stubbed. This cause the sticky check to consider the mixer to be sticky and unnecessarily disable it. Add QUIRK_FLAG_MIXER_SKIP_GET_CUR_VOL to prevent sending GET_CUR to mixers by returning -ENXIO early. The error effectively skips the sticky check as it's only meaningful when the mixer has some sort of self- awareness. Similar to QUIRK_FLAG_GET_SAMPLE_RATE, this should also help if some unmet devices can't tolerate volume GET_CUR in other ways. Signed-off-by: Rong Zhang --- Documentation/sound/alsa-configuration.rst | 4 ++++ sound/usb/mixer.c | 5 +++++ sound/usb/quirks.c | 1 + sound/usb/usbaudio.h | 6 ++++++ 4 files changed, 16 insertions(+) diff --git a/Documentation/sound/alsa-configuration.rst b/Documentation/sou= nd/alsa-configuration.rst index 4b30cd63c5a5..bc3bc65c379a 100644 --- a/Documentation/sound/alsa-configuration.rst +++ b/Documentation/sound/alsa-configuration.rst @@ -2389,6 +2389,10 @@ quirk_flags from snd_usb_handle_sync_urb. Instead fall through and enqueue a packet_info containing only size-0 packets, so the OUT ring keeps moving (emits silence). Needed by Behringer Flow 8 (1397:050c). + * bit 30: ``mixer_skip_get_cur_vol`` + Skip reading current volume for mixers, as some devices return + constant values or errors but otherwise works fine, i.e., setting + volume takes desired effect. =20 This module supports multiple devices, autoprobe and hotplugging. =20 diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index d61bde654219..3b745aebb181 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -420,6 +420,11 @@ static int get_cur_ctl_value(struct usb_mixer_elem_inf= o *cval, static inline int get_cur_mix_raw(struct usb_mixer_elem_info *cval, int channel, int *value) { + struct snd_usb_audio *chip =3D cval->head.mixer->chip; + + if (chip->quirk_flags & QUIRK_FLAG_MIXER_SKIP_GET_CUR_VOL) + return -ENXIO; + return get_ctl_value(cval, UAC_GET_CUR, (cval->control << 8) | channel, value); diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index e2c95be38aca..fbd44baace68 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -2605,6 +2605,7 @@ static const char *const snd_usb_audio_quirk_flag_nam= es[] =3D { QUIRK_STRING_ENTRY(MIXER_PLAYBACK_LINEAR_VOL), QUIRK_STRING_ENTRY(MIXER_CAPTURE_LINEAR_VOL), QUIRK_STRING_ENTRY(IFB_SILENCE_ON_EMPTY), + QUIRK_STRING_ENTRY(MIXER_SKIP_GET_CUR_VOL), NULL }; =20 diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h index 9afcad8f143a..f4e048788f0b 100644 --- a/sound/usb/usbaudio.h +++ b/sound/usb/usbaudio.h @@ -242,6 +242,10 @@ extern bool snd_usb_skip_validation; * from snd_usb_handle_sync_urb. Instead fall through and enqueue a * packet_info containing only size-0 packets, so the OUT ring keeps * moving (emits silence). Needed by Behringer Flow 8 (1397:050c). + * QUIRK_FLAG_MIXER_SKIP_GET_CUR_VOL + * Skip reading current volume for mixers, as some devices return constant + * values or errors but otherwise works fine, i.e., setting volume takes + * desired effect. */ =20 enum { @@ -275,6 +279,7 @@ enum { QUIRK_TYPE_MIXER_PLAYBACK_LINEAR_VOL =3D 27, QUIRK_TYPE_MIXER_CAPTURE_LINEAR_VOL =3D 28, QUIRK_TYPE_IFB_SILENCE_ON_EMPTY =3D 29, + QUIRK_TYPE_MIXER_SKIP_GET_CUR_VOL =3D 30, /* Please also edit snd_usb_audio_quirk_flag_names */ }; =20 @@ -310,5 +315,6 @@ enum { #define QUIRK_FLAG_MIXER_PLAYBACK_LINEAR_VOL QUIRK_FLAG(MIXER_PLAYBACK_LIN= EAR_VOL) #define QUIRK_FLAG_MIXER_CAPTURE_LINEAR_VOL QUIRK_FLAG(MIXER_CAPTURE_LINEA= R_VOL) #define QUIRK_FLAG_IFB_SILENCE_ON_EMPTY QUIRK_FLAG(IFB_SILENCE_ON_EMPTY) +#define QUIRK_FLAG_MIXER_SKIP_GET_CUR_VOL QUIRK_FLAG(MIXER_SKIP_GET_CUR_VO= L) =20 #endif /* __USBAUDIO_H */ --=20 2.53.0 From nobody Mon Jun 8 20:54:37 2026 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8041C425CE4; Tue, 26 May 2026 17:50:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779817817; cv=pass; b=EEfUihs+rFkXB6jIOKiX7T1oVW7UEE4FbVmg1MpMwYpm8EOYhUvfjuNzyVG0ncXWv9NEqrx8/rE8IgcsE8YgaxNzyb/oPRNEnFBpNRHPPphBqxaGMOggrrqA8alFOxVZUqDnza720/h4XRUdMWSQk6KeWJJ9drOVjRSKOlnfy20= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779817817; c=relaxed/simple; bh=b0ROzcQ3VtB84YwbZKZ0qw1/xRJ/6XotqF+vu11oUNE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rcgJHEgpxArmRARPysmFTpwbstKw69Vpo5RN1c33mzp3eSWMnGmhd7pvUsupC4knJTYu2LSbr4FXycVMdW8gnMBsye4qgWiecqTX9UxkiMgHw3+v/XO/IgJa2BQEiSKl1Nyc49mDPuYaC+Z+Jopsa+rHmxXqrZGkZu9di1IXFVQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rong.moe; spf=pass smtp.mailfrom=rong.moe; dkim=pass (2048-bit key) header.d=rong.moe header.i=i@rong.moe header.b=neZR3L+W; arc=pass smtp.client-ip=136.143.188.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rong.moe Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rong.moe Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rong.moe header.i=i@rong.moe header.b="neZR3L+W" ARC-Seal: i=1; a=rsa-sha256; t=1779817805; cv=none; d=zohomail.com; s=zohoarc; b=e76DZK7ACQpnAkeA5Aa86xEVJN4a1kWA+sdlqEBq3ShvNtbBbDl0loVxBVGX5teIzKAOvw527+0NUzNob6TPzAnH+2rlKN+o0CgjPRl3JL7cir7UQ/O9lQ5+Y7d3x34Nv6i9ERmit1KHYVLSYshbtHN7KQ0h8n/umcQ7MKvivvA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779817805; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=bFayXMYaHzimwR7I9/ByGMntQhbFul3MJ5lxZl5T1mE=; b=bY1H4bxyCPHFXpcqTQ3oPiSDPy6UHsbhBQTx6UR1b9MuVtvDZ5uz+c8XAMAmgthebZ9aHhl90t4sYBeYFKxf/UU5pb/ktMKJjt0D3Fh0LaNng/Z3FG4NTs1Ct614ZUAGH2zs9bjmzv4Z/1IPxqzk2jbbyLPCB7iWGN0j4DpYBtc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=rong.moe; spf=pass smtp.mailfrom=i@rong.moe; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1779817805; s=zmail2048; d=rong.moe; i=i@rong.moe; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=bFayXMYaHzimwR7I9/ByGMntQhbFul3MJ5lxZl5T1mE=; b=neZR3L+WkFytTCHzefFYqdqghV0daIV0a0V9xPGcauMQVi0H324/dZzHFXEjiXRP nod0U+ax4xse2j1U5SSOMF4jrjR8eyUYDSEW6UIvpPQxWn1M9eq37W/ToCnpcN5Lb96 qQedUqMQ1iyVT00/1UEK3HSSvYHYNgzmEwKy1gum1HShrkN6qeG2rNfsK8AlLMulpUk pfxdi4do/QdPd3lJv7GU7p2J7bgGrD//VcGMOe9e+eCyghQthU0V9P0dE9hLH1QW/Ja 7aKN487S5B15g0kCWa827XAIQqWqzQGLZ383RyoxpVk6VGRNBeXuzmbSS3AxOSknXz3 hDAOakIUkA== Received: by mx.zohomail.com with SMTPS id 177981780307178.66511303424306; Tue, 26 May 2026 10:50:03 -0700 (PDT) From: Rong Zhang Date: Wed, 27 May 2026 01:49:25 +0800 Subject: [PATCH 3/3] ALSA: usb-audio: Add quirk flag for Sennheiser MOMENTUM 3 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260527-uac-quirk-get-cur-vol-v1-3-e9362b712e5e@rong.moe> References: <20260527-uac-quirk-get-cur-vol-v1-0-e9362b712e5e@rong.moe> In-Reply-To: <20260527-uac-quirk-get-cur-vol-v1-0-e9362b712e5e@rong.moe> To: Jaroslav Kysela , Takashi Iwai , Jonathan Corbet , Shuah Khan Cc: Gordon Chen , linux-sound@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Rong Zhang X-Mailer: b4 0.16-dev-d5d98 X-ZohoMailClient: External The Sennheiser MOMENTUM 3 is a wireless around-ear headphones featuring ANC, which can be connected via Bluetooth or USB-C. When connecting via USB-C, its UAC mixer works fine and precisely corresponds to the reported dB range. However, the mixer's volume GET_CUR method is somehow stubbed and returns a constant value (15dB). Since commit 86aa1ea1f15c ("ALSA: usb-audio: Do not expose sticky mixers"), the sticky check considers the mixer to be sticky and unnecessarily disables the mixer. Add a quirk table entry matching VID/PID=3D0x1377/0x6004 and applying the MIXER_SKIP_GET_CUR_VOL quirk flag, so that the mixer is usable again. Quirky device sample: usb 7-1.4.4.1.1.1: new full-speed USB device number 30 using xhci_hcd usb 7-1.4.4.1.1.1: New USB device found, idVendor=3D1377, idProduct=3D600= 4, bcdDevice=3D38.85 usb 7-1.4.4.1.1.1: New USB device strings: Mfr=3D1, Product=3D2, SerialNu= mber=3D3 usb 7-1.4.4.1.1.1: Product: MOMENTUM 3 usb 7-1.4.4.1.1.1: Manufacturer: Sennheiser electronic GmbH & Co. KG usb 7-1.4.4.1.1.1: SerialNumber: usb 7-1.4.4.1.1.1: Found last interface =3D 0 usb 7-1.4.4.1.1.1: 1:1: add audio endpoint 0x3 usb 7-1.4.4.1.1.1: Creating new data endpoint #3 usb 7-1.4.4.1.1.1: 1:1 Set sample rate 48000, clock 0 usb 7-1.4.4.1.1.1: 6:0: sticky mixer values (0/11520/768 =3D> 3840), disa= bling usb 7-1.4.4.1.1.1: [6] FU [PCM Playback Volume] skipped due to invalid vo= lume input: Sennheiser electronic GmbH & Co. KG MOMENTUM 3 as /devices/pci0000= :00/0000:00:08.3/0000:67:00.4/usb7/7-1/7-1.4/7-1.4.4/7-1.4.4.1/7-1.4.4.1.1/= 7-1.4.4.1.1.1/7-1.4.4.1.1.1:1.2/0003:1377:6004.002B/input/input208 input: Sennheiser electronic GmbH & Co. KG MOMENTUM 3 Consumer Control as= /devices/pci0000:00/0000:00:08.3/0000:67:00.4/usb7/7-1/7-1.4/7-1.4.4/7-1.4= .4.1/7-1.4.4.1.1/7-1.4.4.1.1.1/7-1.4.4.1.1.1:1.2/0003:1377:6004.002B/input/= input209 hid-generic 0003:1377:6004.002B: input,hiddev99,hidraw12: USB HID v1.11 D= evice [Sennheiser electronic GmbH & Co. KG MOMENTUM 3] on usb-0000:67:00.4-= 1.4.4.1.1.1/input2 Signed-off-by: Rong Zhang --- sound/usb/quirks.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index fbd44baace68..8cd8f475ec1f 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -2357,6 +2357,8 @@ static const struct usb_audio_quirk_flags_table quirk= _flags_table[] =3D { QUIRK_FLAG_FORCE_IFACE_RESET | QUIRK_FLAG_IFACE_DELAY), DEVICE_FLG(0x1224, 0x2a25, /* Jieli Technology USB PHY 2.0 */ QUIRK_FLAG_GET_SAMPLE_RATE | QUIRK_FLAG_MIC_RES_16), + DEVICE_FLG(0x1377, 0x6004, /* Sennheiser MOMENTUM 3 */ + QUIRK_FLAG_MIXER_SKIP_GET_CUR_VOL), DEVICE_FLG(0x1395, 0x740a, /* Sennheiser DECT */ QUIRK_FLAG_GET_SAMPLE_RATE), DEVICE_FLG(0x1397, 0x0507, /* Behringer UMC202HD */ --=20 2.53.0