* [PATCH] ALSA: usb-audio: Add GET_SAMPLE_RATE quirk for C-Media CM6206
@ 2026-07-28 22:22 Mikhail Gavrilov
2026-07-29 6:32 ` Takashi Iwai
0 siblings, 1 reply; 2+ messages in thread
From: Mikhail Gavrilov @ 2026-07-28 22:22 UTC (permalink / raw)
To: Takashi Iwai, Jaroslav Kysela; +Cc: linux-sound, linux-kernel, Mikhail Gavrilov
The C-Media CM6206 (0d8c:0102) truncates the three-byte sample rate it
returns for UAC_GET_CUR to its two low bytes. After the rate has been
set to 96000 (0x017700) the device reports back 30464 (0x007700).
At probe time the driver initializes every altsetting to its maximum
rate, so altsetting 5 is set to 96000 and the warning appears on each
plug-in, before anything has opened the device:
usb 3-1.3: 1:5 Set sample rate 96000, clock 0
usb 3-1.3: current rate 30464 is different from the runtime rate 96000
That altsetting is the one parse_audio_format_rates_v1() already fixes
up for this chip, so this affects every CM6206.
Only the read-back is broken, the rate itself is applied: a 1 kHz sine
rendered at 96 kHz is recovered at 1000.2 Hz, and a silent fallback to
48000 would have been reported as 0x00bb80 rather than as the low half
of the requested rate.
Add a QUIRK_FLAG_GET_SAMPLE_RATE entry for the device so the read-back
is skipped. Setting the same flag through the quirk_flags module
parameter makes the warning disappear while the 96000 init still
happens.
Signed-off-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
---
sound/usb/quirks.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 0de7c9d94259..18d252de19ec 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -2342,6 +2342,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE),
DEVICE_FLG(0x0d8c, 0x0014, /* C-Media */
QUIRK_FLAG_CTL_MSG_DELAY_1M | QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE),
+ DEVICE_FLG(0x0d8c, 0x0102, /* C-Media CM6206 */
+ QUIRK_FLAG_GET_SAMPLE_RATE),
DEVICE_FLG(0x0e0b, 0xfa01, /* Feaulle Rainbow */
QUIRK_FLAG_GET_SAMPLE_RATE | QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE),
DEVICE_FLG(0x0ecb, 0x205c, /* JBL Quantum610 Wireless */
--
2.55.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] ALSA: usb-audio: Add GET_SAMPLE_RATE quirk for C-Media CM6206
2026-07-28 22:22 [PATCH] ALSA: usb-audio: Add GET_SAMPLE_RATE quirk for C-Media CM6206 Mikhail Gavrilov
@ 2026-07-29 6:32 ` Takashi Iwai
0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2026-07-29 6:32 UTC (permalink / raw)
To: Mikhail Gavrilov; +Cc: Takashi Iwai, Jaroslav Kysela, linux-sound, linux-kernel
On Wed, 29 Jul 2026 00:22:39 +0200,
Mikhail Gavrilov wrote:
>
> The C-Media CM6206 (0d8c:0102) truncates the three-byte sample rate it
> returns for UAC_GET_CUR to its two low bytes. After the rate has been
> set to 96000 (0x017700) the device reports back 30464 (0x007700).
>
> At probe time the driver initializes every altsetting to its maximum
> rate, so altsetting 5 is set to 96000 and the warning appears on each
> plug-in, before anything has opened the device:
>
> usb 3-1.3: 1:5 Set sample rate 96000, clock 0
> usb 3-1.3: current rate 30464 is different from the runtime rate 96000
>
> That altsetting is the one parse_audio_format_rates_v1() already fixes
> up for this chip, so this affects every CM6206.
>
> Only the read-back is broken, the rate itself is applied: a 1 kHz sine
> rendered at 96 kHz is recovered at 1000.2 Hz, and a silent fallback to
> 48000 would have been reported as 0x00bb80 rather than as the low half
> of the requested rate.
>
> Add a QUIRK_FLAG_GET_SAMPLE_RATE entry for the device so the read-back
> is skipped. Setting the same flag through the quirk_flags module
> parameter makes the warning disappear while the 96000 init still
> happens.
>
> Signed-off-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
Thanks, applied now.
Takashi
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-07-29 6:32 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-28 22:22 [PATCH] ALSA: usb-audio: Add GET_SAMPLE_RATE quirk for C-Media CM6206 Mikhail Gavrilov
2026-07-29 6:32 ` Takashi Iwai
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.