|
Takashi Iwai |
e0c425 |
From 265d1a90e4fb6d3264d8122fbd10760e5e733be6 Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
e0c425 |
From: "Geoffrey D. Bennett" <g@b4.vu>
|
|
Takashi Iwai |
e0c425 |
Date: Fri, 21 May 2021 17:50:13 +0930
|
|
Takashi Iwai |
e0c425 |
Subject: [PATCH] ALSA: usb-audio: scarlett2: Improve driver startup messages
|
|
Takashi Iwai |
e0c425 |
Git-commit: 265d1a90e4fb6d3264d8122fbd10760e5e733be6
|
|
Takashi Iwai |
e0c425 |
Patch-mainline: v5.13-rc4
|
|
Takashi Iwai |
e0c425 |
References: git-fixes
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
Add separate init function to call the existing controls_create
|
|
Takashi Iwai |
e0c425 |
function so a custom error can be displayed if initialisation fails.
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
Use info level instead of error for notifications.
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
Display the VID/PID so device_setup is targeted to the right device.
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
Display "enabled" message to easily confirm that the driver is loaded.
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
Signed-off-by: Geoffrey D. Bennett <g@b4.vu>
|
|
Takashi Iwai |
e0c425 |
Cc: <stable@vger.kernel.org>
|
|
Takashi Iwai |
e0c425 |
Link: https://lore.kernel.org/r/b5d140c65f640faf2427e085fbbc0297b32e5fce.1621584566.git.g@b4.vu
|
|
Takashi Iwai |
e0c425 |
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
---
|
|
Takashi Iwai |
e0c425 |
sound/usb/mixer_quirks.c | 2 +-
|
|
Takashi Iwai |
e0c425 |
sound/usb/mixer_scarlett_gen2.c | 79 +++++++++++++++++++++------------
|
|
Takashi Iwai |
e0c425 |
sound/usb/mixer_scarlett_gen2.h | 2 +-
|
|
Takashi Iwai |
e0c425 |
3 files changed, 52 insertions(+), 31 deletions(-)
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c
|
|
Takashi Iwai |
e0c425 |
index fda66b2dbb01..37ad77524c0b 100644
|
|
Takashi Iwai |
e0c425 |
--- a/sound/usb/mixer_quirks.c
|
|
Takashi Iwai |
e0c425 |
+++ b/sound/usb/mixer_quirks.c
|
|
Takashi Iwai |
e0c425 |
@@ -3060,7 +3060,7 @@ int snd_usb_mixer_apply_create_quirk(struct usb_mixer_interface *mixer)
|
|
Takashi Iwai |
e0c425 |
case USB_ID(0x1235, 0x8203): /* Focusrite Scarlett 6i6 2nd Gen */
|
|
Takashi Iwai |
e0c425 |
case USB_ID(0x1235, 0x8204): /* Focusrite Scarlett 18i8 2nd Gen */
|
|
Takashi Iwai |
e0c425 |
case USB_ID(0x1235, 0x8201): /* Focusrite Scarlett 18i20 2nd Gen */
|
|
Takashi Iwai |
e0c425 |
- err = snd_scarlett_gen2_controls_create(mixer);
|
|
Takashi Iwai |
e0c425 |
+ err = snd_scarlett_gen2_init(mixer);
|
|
Takashi Iwai |
e0c425 |
break;
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
case USB_ID(0x041e, 0x323b): /* Creative Sound Blaster E1 */
|
|
Takashi Iwai |
e0c425 |
diff --git a/sound/usb/mixer_scarlett_gen2.c b/sound/usb/mixer_scarlett_gen2.c
|
|
Takashi Iwai |
e0c425 |
index dcff3e3a49f3..3ad8f61a2095 100644
|
|
Takashi Iwai |
e0c425 |
--- a/sound/usb/mixer_scarlett_gen2.c
|
|
Takashi Iwai |
e0c425 |
+++ b/sound/usb/mixer_scarlett_gen2.c
|
|
Takashi Iwai |
e0c425 |
@@ -1997,38 +1997,11 @@ static int scarlett2_mixer_status_create(struct usb_mixer_interface *mixer)
|
|
Takashi Iwai |
e0c425 |
return usb_submit_urb(mixer->urb, GFP_KERNEL);
|
|
Takashi Iwai |
e0c425 |
}
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
-/* Entry point */
|
|
Takashi Iwai |
e0c425 |
-int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer)
|
|
Takashi Iwai |
e0c425 |
+int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer,
|
|
Takashi Iwai |
e0c425 |
+ const struct scarlett2_device_info *info)
|
|
Takashi Iwai |
e0c425 |
{
|
|
Takashi Iwai |
e0c425 |
- const struct scarlett2_device_info *info;
|
|
Takashi Iwai |
e0c425 |
int err;
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
- /* only use UAC_VERSION_2 */
|
|
Takashi Iwai |
e0c425 |
- if (!mixer->protocol)
|
|
Takashi Iwai |
e0c425 |
- return 0;
|
|
Takashi Iwai |
e0c425 |
-
|
|
Takashi Iwai |
e0c425 |
- switch (mixer->chip->usb_id) {
|
|
Takashi Iwai |
e0c425 |
- case USB_ID(0x1235, 0x8203):
|
|
Takashi Iwai |
e0c425 |
- info = &s6i6_gen2_info;
|
|
Takashi Iwai |
e0c425 |
- break;
|
|
Takashi Iwai |
e0c425 |
- case USB_ID(0x1235, 0x8204):
|
|
Takashi Iwai |
e0c425 |
- info = &s18i8_gen2_info;
|
|
Takashi Iwai |
e0c425 |
- break;
|
|
Takashi Iwai |
e0c425 |
- case USB_ID(0x1235, 0x8201):
|
|
Takashi Iwai |
e0c425 |
- info = &s18i20_gen2_info;
|
|
Takashi Iwai |
e0c425 |
- break;
|
|
Takashi Iwai |
e0c425 |
- default: /* device not (yet) supported */
|
|
Takashi Iwai |
e0c425 |
- return -EINVAL;
|
|
Takashi Iwai |
e0c425 |
- }
|
|
Takashi Iwai |
e0c425 |
-
|
|
Takashi Iwai |
e0c425 |
- if (!(mixer->chip->setup & SCARLETT2_ENABLE)) {
|
|
Takashi Iwai |
e0c425 |
- usb_audio_err(mixer->chip,
|
|
Takashi Iwai |
e0c425 |
- "Focusrite Scarlett Gen 2 Mixer Driver disabled; "
|
|
Takashi Iwai |
e0c425 |
- "use options snd_usb_audio device_setup=1 "
|
|
Takashi Iwai |
e0c425 |
- "to enable and report any issues to g@b4.vu");
|
|
Takashi Iwai |
e0c425 |
- return 0;
|
|
Takashi Iwai |
e0c425 |
- }
|
|
Takashi Iwai |
e0c425 |
-
|
|
Takashi Iwai |
e0c425 |
/* Initialise private data, routing, sequence number */
|
|
Takashi Iwai |
e0c425 |
err = scarlett2_init_private(mixer, info);
|
|
Takashi Iwai |
e0c425 |
if (err < 0)
|
|
Takashi Iwai |
e0c425 |
@@ -2073,3 +2046,51 @@ int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer)
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
return 0;
|
|
Takashi Iwai |
e0c425 |
}
|
|
Takashi Iwai |
e0c425 |
+
|
|
Takashi Iwai |
e0c425 |
+int snd_scarlett_gen2_init(struct usb_mixer_interface *mixer)
|
|
Takashi Iwai |
e0c425 |
+{
|
|
Takashi Iwai |
e0c425 |
+ struct snd_usb_audio *chip = mixer->chip;
|
|
Takashi Iwai |
e0c425 |
+ const struct scarlett2_device_info *info;
|
|
Takashi Iwai |
e0c425 |
+ int err;
|
|
Takashi Iwai |
e0c425 |
+
|
|
Takashi Iwai |
e0c425 |
+ /* only use UAC_VERSION_2 */
|
|
Takashi Iwai |
e0c425 |
+ if (!mixer->protocol)
|
|
Takashi Iwai |
e0c425 |
+ return 0;
|
|
Takashi Iwai |
e0c425 |
+
|
|
Takashi Iwai |
e0c425 |
+ switch (chip->usb_id) {
|
|
Takashi Iwai |
e0c425 |
+ case USB_ID(0x1235, 0x8203):
|
|
Takashi Iwai |
e0c425 |
+ info = &s6i6_gen2_info;
|
|
Takashi Iwai |
e0c425 |
+ break;
|
|
Takashi Iwai |
e0c425 |
+ case USB_ID(0x1235, 0x8204):
|
|
Takashi Iwai |
e0c425 |
+ info = &s18i8_gen2_info;
|
|
Takashi Iwai |
e0c425 |
+ break;
|
|
Takashi Iwai |
e0c425 |
+ case USB_ID(0x1235, 0x8201):
|
|
Takashi Iwai |
e0c425 |
+ info = &s18i20_gen2_info;
|
|
Takashi Iwai |
e0c425 |
+ break;
|
|
Takashi Iwai |
e0c425 |
+ default: /* device not (yet) supported */
|
|
Takashi Iwai |
e0c425 |
+ return -EINVAL;
|
|
Takashi Iwai |
e0c425 |
+ }
|
|
Takashi Iwai |
e0c425 |
+
|
|
Takashi Iwai |
e0c425 |
+ if (!(chip->setup & SCARLETT2_ENABLE)) {
|
|
Takashi Iwai |
e0c425 |
+ usb_audio_info(chip,
|
|
Takashi Iwai |
e0c425 |
+ "Focusrite Scarlett Gen 2 Mixer Driver disabled; "
|
|
Takashi Iwai |
e0c425 |
+ "use options snd_usb_audio vid=0x%04x pid=0x%04x "
|
|
Takashi Iwai |
e0c425 |
+ "device_setup=1 to enable and report any issues "
|
|
Takashi Iwai |
e0c425 |
+ "to g@b4.vu",
|
|
Takashi Iwai |
e0c425 |
+ USB_ID_VENDOR(chip->usb_id),
|
|
Takashi Iwai |
e0c425 |
+ USB_ID_PRODUCT(chip->usb_id));
|
|
Takashi Iwai |
e0c425 |
+ return 0;
|
|
Takashi Iwai |
e0c425 |
+ }
|
|
Takashi Iwai |
e0c425 |
+
|
|
Takashi Iwai |
e0c425 |
+ usb_audio_info(chip,
|
|
Takashi Iwai |
e0c425 |
+ "Focusrite Scarlett Gen 2 Mixer Driver enabled pid=0x%04x",
|
|
Takashi Iwai |
e0c425 |
+ USB_ID_PRODUCT(chip->usb_id));
|
|
Takashi Iwai |
e0c425 |
+
|
|
Takashi Iwai |
e0c425 |
+ err = snd_scarlett_gen2_controls_create(mixer, info);
|
|
Takashi Iwai |
e0c425 |
+ if (err < 0)
|
|
Takashi Iwai |
e0c425 |
+ usb_audio_err(mixer->chip,
|
|
Takashi Iwai |
e0c425 |
+ "Error initialising Scarlett Mixer Driver: %d",
|
|
Takashi Iwai |
e0c425 |
+ err);
|
|
Takashi Iwai |
e0c425 |
+
|
|
Takashi Iwai |
e0c425 |
+ return err;
|
|
Takashi Iwai |
e0c425 |
+}
|
|
Takashi Iwai |
e0c425 |
diff --git a/sound/usb/mixer_scarlett_gen2.h b/sound/usb/mixer_scarlett_gen2.h
|
|
Takashi Iwai |
e0c425 |
index 52e1dad77afd..668c6b0cb50a 100644
|
|
Takashi Iwai |
e0c425 |
--- a/sound/usb/mixer_scarlett_gen2.h
|
|
Takashi Iwai |
e0c425 |
+++ b/sound/usb/mixer_scarlett_gen2.h
|
|
Takashi Iwai |
e0c425 |
@@ -2,6 +2,6 @@
|
|
Takashi Iwai |
e0c425 |
#ifndef __USB_MIXER_SCARLETT_GEN2_H
|
|
Takashi Iwai |
e0c425 |
#define __USB_MIXER_SCARLETT_GEN2_H
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
-int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer);
|
|
Takashi Iwai |
e0c425 |
+int snd_scarlett_gen2_init(struct usb_mixer_interface *mixer);
|
|
Takashi Iwai |
e0c425 |
|
|
Takashi Iwai |
e0c425 |
#endif /* __USB_MIXER_SCARLETT_GEN2_H */
|
|
Takashi Iwai |
e0c425 |
--
|
|
Takashi Iwai |
e0c425 |
2.26.2
|
|
Takashi Iwai |
e0c425 |
|