From: Roy Vegard Ovesen roy.vegard.ovesen@gmail.com
[ Upstream commit d1d6ad7f6686e208aba06b7af3feef7a7cba61cf ]
Testing with a Presonus STUDIO 1824c together with a Behringer ultragain digital ADAT device shows that using all 3 altno settings works fine.
When selecting sample rate, the driver sets the interface to the correct altno setting and the correct number of channels is set.
Selecting the correct altno setting via Ardour, Reaper or whatever other way to set the sample rate is more convenient than re-loading the driver module with device_setup to set altno.
Signed-off-by: Roy Vegard Ovesen roy.vegard.ovesen@gmail.com Signed-off-by: Takashi Iwai tiwai@suse.de Signed-off-by: Sasha Levin sashal@kernel.org ---
LLM Generated explanations, may be completely bogus:
YES – Removing the 1824c entry from the interface-quirk table fixes a real regression while keeping risk low.
- `s1810c_skip_setting_quirk()` in `sound/usb/quirks.c:1554` only lets one alternate setting survive unless the user reloads the module with a `device_setup` override; because the 1824c reuse of this helper (added in 080564558eb1373c) defaults `chip->setup` to 0, capture alt 1 (8 ADAT channels) and alt 3 (high-rate analog) are always filtered out, so normal sample-rate changes cannot expose the full I/O set. - By deleting the 1824c `USB_ID(0x194f, 0x010d)` case in `sound/usb/quirks.c:1599`, the driver now falls back to the generic path that enumerates every alternate setting, letting the UAC2 core pick the mode that matches the requested rate, just as it does for other compliant interfaces. - That generic path is exercised from `snd_usb_parse_audio_interface()` (`sound/usb/stream.c:1165`), so the change immediately restores behaviour for any PCM open without touching unrelated devices; the 1810c keeps its quirked handling. - The existing rate filter shared by 1810c/1824c (`sound/usb/format.c:387-394`) still guards against the invalid combinations that originally justified the quirk, ensuring the auto- selected alternates map to valid channel/rate sets. - Impact is user-visible (ADAT channels and high-rate modes require module reload today), the fix is a three-line removal with confirmed hardware testing in the changelog, and it has no architectural fallout; stable trees that already picked up 080564558eb1373c should take this to restore expected functionality.
sound/usb/quirks.c | 3 --- 1 file changed, 3 deletions(-)
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 766db7d00cbc9..4a35f962527e9 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1599,9 +1599,6 @@ int snd_usb_apply_interface_quirk(struct snd_usb_audio *chip, /* presonus studio 1810c: skip altsets incompatible with device_setup */ if (chip->usb_id == USB_ID(0x194f, 0x010c)) return s1810c_skip_setting_quirk(chip, iface, altno); - /* presonus studio 1824c: skip altsets incompatible with device_setup */ - if (chip->usb_id == USB_ID(0x194f, 0x010d)) - return s1810c_skip_setting_quirk(chip, iface, altno);
return 0; }