]> www.infradead.org Git - users/griffoul/linux.git/commitdiff
ALSA: usb-audio: Allow Focusrite devices to use low samplerates
authorTina Wuest <tina@wuest.me>
Mon, 1 Sep 2025 09:20:24 +0000 (12:20 +0300)
committerTakashi Iwai <tiwai@suse.de>
Mon, 1 Sep 2025 11:14:52 +0000 (13:14 +0200)
Commit 05f254a6369ac020fc0382a7cbd3ef64ad997c92 ("ALSA: usb-audio:
Improve filtering of sample rates on Focusrite devices") changed the
check for max_rate in a way which was overly restrictive, forcing
devices to use very high samplerates if they support them, despite
support existing for lower rates as well.

This maintains the intended outcome (ensuring samplerates selected are
supported) while allowing devices with higher maximum samplerates to be
opened at all supported samplerates.

This patch was tested with a Clarett+ 8Pre USB

Fixes: 05f254a6369a ("ALSA: usb-audio: Improve filtering of sample rates on Focusrite devices")
Signed-off-by: Tina Wuest <tina@wuest.me>
Link: https://patch.msgid.link/20250901092024.140993-1-tina@wuest.me
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/format.c

index 0ee532acbb6034b4b5f27b4e43ba5fccdbcff914..ec95a063beb105989a74d952dd84b5a27e634809 100644 (file)
@@ -327,12 +327,16 @@ static bool focusrite_valid_sample_rate(struct snd_usb_audio *chip,
                max_rate = combine_quad(&fmt[6]);
 
                switch (max_rate) {
+               case 192000:
+                       if (rate == 176400 || rate == 192000)
+                               return true;
+                       fallthrough;
+               case 96000:
+                       if (rate == 88200 || rate == 96000)
+                               return true;
+                       fallthrough;
                case 48000:
                        return (rate == 44100 || rate == 48000);
-               case 96000:
-                       return (rate == 88200 || rate == 96000);
-               case 192000:
-                       return (rate == 176400 || rate == 192000);
                default:
                        usb_audio_info(chip,
                                "%u:%d : unexpected max rate: %u\n",