mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
ALSA: usb-audio: add mixer support for Focusrite Forte
Add mixer control support for the Focusrite Forte (USB ID 0x1235:0x8010), an older USB audio interface that predates the Scarlett 2nd generation. The Forte uses UAC2_CS_MEM (bRequest=0x03) for its input controls rather than the standard UAC2_CS_CUR (0x01) used by Scarlett devices. This patch adds Forte-specific control handlers that use the correct USB protocol. Features implemented: - Input source selection (Mic/Line/Inst) for both channels - High pass filter switch - 48V phantom power switch - Phase invert switch - Pad switch - Preamp gain control (0-42 range, ~0-75dB) - Matrix mixer controls (6 inputs x 4 outputs) - Output volume and mute controls The device is registered via mixer_quirks.c and uses the existing mixer_scarlett.c infrastructure with Forte-specific additions. Credit: This work builds on prior reverse-engineering by alastair-dm. Link: https://github.com/alastair-dm/forte-mixer/wiki Link: https://github.com/alastair-dm/forte-mixer Link: https://github.com/jopdorp/forte-mixer Signed-off-by: Jegor van Opdorp <jegorvanopdorp@gmail.com> Link: https://patch.msgid.link/20260127081541.219669-1-jegorvanopdorp@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
1 parent
f2581ea2d9
commit
7bb0dbf9fc
3 files changed
+461
-19
No files matched your search
@@ -4417,6 +4417,9 @@ int snd_usb_mixer_apply_create_quirk(struct usb_mixer_interface *mixer)
|
||||
err = snd_create_std_mono_table(mixer, ebox44_table);
|
||||
break;
|
||||
|
||||
case USB_ID(0x1235, 0x8010): /* Focusrite Forte */
|
||||
err = snd_forte_controls_create(mixer);
|
||||
break;
|
||||
case USB_ID(0x1235, 0x8012): /* Focusrite Scarlett 6i6 */
|
||||
case USB_ID(0x1235, 0x8002): /* Focusrite Scarlett 8i6 */
|
||||
case USB_ID(0x1235, 0x8004): /* Focusrite Scarlett 18i6 */
|
||||
|
||||
+457
-19
File diff suppressed because it is too large.
Load diff
@@ -3,5 +3,6 @@
|
||||
#define __USB_MIXER_SCARLETT_H
|
||||
|
||||
int snd_scarlett_controls_create(struct usb_mixer_interface *mixer);
|
||||
int snd_forte_controls_create(struct usb_mixer_interface *mixer);
|
||||
|
||||
#endif /* __USB_MIXER_SCARLETT_H */
|
||||
Reference in new issue
Block a user