]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ALSA: usb-audio: Do not expose PCM and DSD on same altsetting unless DoP
authorJussi Laako <jussi@sonarnerd.net>
Thu, 11 Dec 2025 15:22:23 +0000 (17:22 +0200)
committerTakashi Iwai <tiwai@suse.de>
Sat, 13 Dec 2025 09:33:22 +0000 (10:33 +0100)
Do not expose DSD altsetting as a PCM one, even if the descriptor claims
it to be PCM instead of special format.

Signed-off-by: Jussi Laako <jussi@sonarnerd.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20251211152224.1780782-3-jussi@sonarnerd.net
sound/usb/format.c

index ec95a063beb105989a74d952dd84b5a27e634809..64cfe4a9d8cdf267bf5bd2226ddcb0f2707777df 100644 (file)
@@ -34,6 +34,7 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
 {
        int sample_width, sample_bytes;
        u64 pcm_formats = 0;
+       u64 dsd_formats = 0;
 
        switch (fp->protocol) {
        case UAC_VERSION_1:
@@ -154,7 +155,9 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
                         fp->iface, fp->altsetting, format);
        }
 
-       pcm_formats |= snd_usb_interface_dsd_format_quirks(chip, fp, sample_bytes);
+       dsd_formats |= snd_usb_interface_dsd_format_quirks(chip, fp, sample_bytes);
+       if (dsd_formats && !fp->dsd_dop)
+               pcm_formats = dsd_formats;
 
        return pcm_formats;
 }