Skip to content

Commit 265d1a9

Browse files
geoffreybennetttiwai
authored andcommitted
ALSA: usb-audio: scarlett2: Improve driver startup messages
Add separate init function to call the existing controls_create function so a custom error can be displayed if initialisation fails. Use info level instead of error for notifications. Display the VID/PID so device_setup is targeted to the right device. Display "enabled" message to easily confirm that the driver is loaded. Signed-off-by: Geoffrey D. Bennett <[email protected]> Cc: <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Takashi Iwai <[email protected]>
1 parent 764fa6e commit 265d1a9

File tree

3 files changed

+52
-31
lines changed

3 files changed

+52
-31
lines changed

sound/usb/mixer_quirks.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3060,7 +3060,7 @@ int snd_usb_mixer_apply_create_quirk(struct usb_mixer_interface *mixer)
30603060
case USB_ID(0x1235, 0x8203): /* Focusrite Scarlett 6i6 2nd Gen */
30613061
case USB_ID(0x1235, 0x8204): /* Focusrite Scarlett 18i8 2nd Gen */
30623062
case USB_ID(0x1235, 0x8201): /* Focusrite Scarlett 18i20 2nd Gen */
3063-
err = snd_scarlett_gen2_controls_create(mixer);
3063+
err = snd_scarlett_gen2_init(mixer);
30643064
break;
30653065

30663066
case USB_ID(0x041e, 0x323b): /* Creative Sound Blaster E1 */

sound/usb/mixer_scarlett_gen2.c

Lines changed: 50 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1997,38 +1997,11 @@ static int scarlett2_mixer_status_create(struct usb_mixer_interface *mixer)
19971997
return usb_submit_urb(mixer->urb, GFP_KERNEL);
19981998
}
19991999

2000-
/* Entry point */
2001-
int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer)
2000+
int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer,
2001+
const struct scarlett2_device_info *info)
20022002
{
2003-
const struct scarlett2_device_info *info;
20042003
int err;
20052004

2006-
/* only use UAC_VERSION_2 */
2007-
if (!mixer->protocol)
2008-
return 0;
2009-
2010-
switch (mixer->chip->usb_id) {
2011-
case USB_ID(0x1235, 0x8203):
2012-
info = &s6i6_gen2_info;
2013-
break;
2014-
case USB_ID(0x1235, 0x8204):
2015-
info = &s18i8_gen2_info;
2016-
break;
2017-
case USB_ID(0x1235, 0x8201):
2018-
info = &s18i20_gen2_info;
2019-
break;
2020-
default: /* device not (yet) supported */
2021-
return -EINVAL;
2022-
}
2023-
2024-
if (!(mixer->chip->setup & SCARLETT2_ENABLE)) {
2025-
usb_audio_err(mixer->chip,
2026-
"Focusrite Scarlett Gen 2 Mixer Driver disabled; "
2027-
"use options snd_usb_audio device_setup=1 "
2028-
"to enable and report any issues to [email protected]");
2029-
return 0;
2030-
}
2031-
20322005
/* Initialise private data, routing, sequence number */
20332006
err = scarlett2_init_private(mixer, info);
20342007
if (err < 0)
@@ -2073,3 +2046,51 @@ int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer)
20732046

20742047
return 0;
20752048
}
2049+
2050+
int snd_scarlett_gen2_init(struct usb_mixer_interface *mixer)
2051+
{
2052+
struct snd_usb_audio *chip = mixer->chip;
2053+
const struct scarlett2_device_info *info;
2054+
int err;
2055+
2056+
/* only use UAC_VERSION_2 */
2057+
if (!mixer->protocol)
2058+
return 0;
2059+
2060+
switch (chip->usb_id) {
2061+
case USB_ID(0x1235, 0x8203):
2062+
info = &s6i6_gen2_info;
2063+
break;
2064+
case USB_ID(0x1235, 0x8204):
2065+
info = &s18i8_gen2_info;
2066+
break;
2067+
case USB_ID(0x1235, 0x8201):
2068+
info = &s18i20_gen2_info;
2069+
break;
2070+
default: /* device not (yet) supported */
2071+
return -EINVAL;
2072+
}
2073+
2074+
if (!(chip->setup & SCARLETT2_ENABLE)) {
2075+
usb_audio_info(chip,
2076+
"Focusrite Scarlett Gen 2 Mixer Driver disabled; "
2077+
"use options snd_usb_audio vid=0x%04x pid=0x%04x "
2078+
"device_setup=1 to enable and report any issues "
2079+
2080+
USB_ID_VENDOR(chip->usb_id),
2081+
USB_ID_PRODUCT(chip->usb_id));
2082+
return 0;
2083+
}
2084+
2085+
usb_audio_info(chip,
2086+
"Focusrite Scarlett Gen 2 Mixer Driver enabled pid=0x%04x",
2087+
USB_ID_PRODUCT(chip->usb_id));
2088+
2089+
err = snd_scarlett_gen2_controls_create(mixer, info);
2090+
if (err < 0)
2091+
usb_audio_err(mixer->chip,
2092+
"Error initialising Scarlett Mixer Driver: %d",
2093+
err);
2094+
2095+
return err;
2096+
}

sound/usb/mixer_scarlett_gen2.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
#ifndef __USB_MIXER_SCARLETT_GEN2_H
33
#define __USB_MIXER_SCARLETT_GEN2_H
44

5-
int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer);
5+
int snd_scarlett_gen2_init(struct usb_mixer_interface *mixer);
66

77
#endif /* __USB_MIXER_SCARLETT_GEN2_H */

0 commit comments

Comments
 (0)