summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorTina Wuest <tina@wuest.me>2025-09-01 12:20:24 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-09-09 19:02:15 +0200
commit76ff6437b42f9be365632130d5ddd8a93f787257 (patch)
treec078d4f4e3565349c9bac50ec6e9823670870cbd /sound
parent1b1a33795a69f5113a405826c8362da84b54e90f (diff)
downloadlinux-76ff6437b42f9be365632130d5ddd8a93f787257.tar.gz
linux-76ff6437b42f9be365632130d5ddd8a93f787257.tar.bz2
linux-76ff6437b42f9be365632130d5ddd8a93f787257.zip
ALSA: usb-audio: Allow Focusrite devices to use low samplerates
[ Upstream commit cc8e91054c0a778074ecffaf12bd0944e884d71c ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/usb/format.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sound/usb/format.c b/sound/usb/format.c
index 0ee532acbb60..ec95a063beb1 100644
--- a/sound/usb/format.c
+++ b/sound/usb/format.c
@@ -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",