Commit d98cc489 authored by Geoffrey D. Bennett's avatar Geoffrey D. Bennett Committed by Takashi Iwai

ALSA: scarlett2: Move USB IDs out from device_info struct

By moving the USB IDs from the device_info struct into
scarlett2_devices[], that will allow for devices with different
USB IDs to share the same device_info.
Tested-by: default avatarPhilippe Perrot <philippe@perrot-net.fr>
Signed-off-by: default avatarGeoffrey D. Bennett <g@b4.vu>
Link: https://lore.kernel.org/r/8263368e8d49e6fcebc709817bd82ab79b404468.1694705811.git.g@b4.vuSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent bc83058f
...@@ -317,8 +317,6 @@ struct scarlett2_mux_entry { ...@@ -317,8 +317,6 @@ struct scarlett2_mux_entry {
}; };
struct scarlett2_device_info { struct scarlett2_device_info {
u32 usb_id; /* USB device identifier */
/* Gen 3 devices have an internal MSD mode switch that needs /* Gen 3 devices have an internal MSD mode switch that needs
* to be disabled in order to access the full functionality of * to be disabled in order to access the full functionality of
* the device. * the device.
...@@ -440,8 +438,6 @@ struct scarlett2_data { ...@@ -440,8 +438,6 @@ struct scarlett2_data {
/*** Model-specific data ***/ /*** Model-specific data ***/
static const struct scarlett2_device_info s6i6_gen2_info = { static const struct scarlett2_device_info s6i6_gen2_info = {
.usb_id = USB_ID(0x1235, 0x8203),
.config_set = SCARLETT2_CONFIG_SET_GEN_2, .config_set = SCARLETT2_CONFIG_SET_GEN_2,
.level_input_count = 2, .level_input_count = 2,
.pad_input_count = 2, .pad_input_count = 2,
...@@ -486,8 +482,6 @@ static const struct scarlett2_device_info s6i6_gen2_info = { ...@@ -486,8 +482,6 @@ static const struct scarlett2_device_info s6i6_gen2_info = {
}; };
static const struct scarlett2_device_info s18i8_gen2_info = { static const struct scarlett2_device_info s18i8_gen2_info = {
.usb_id = USB_ID(0x1235, 0x8204),
.config_set = SCARLETT2_CONFIG_SET_GEN_2, .config_set = SCARLETT2_CONFIG_SET_GEN_2,
.level_input_count = 2, .level_input_count = 2,
.pad_input_count = 4, .pad_input_count = 4,
...@@ -535,8 +529,6 @@ static const struct scarlett2_device_info s18i8_gen2_info = { ...@@ -535,8 +529,6 @@ static const struct scarlett2_device_info s18i8_gen2_info = {
}; };
static const struct scarlett2_device_info s18i20_gen2_info = { static const struct scarlett2_device_info s18i20_gen2_info = {
.usb_id = USB_ID(0x1235, 0x8201),
.config_set = SCARLETT2_CONFIG_SET_GEN_2, .config_set = SCARLETT2_CONFIG_SET_GEN_2,
.line_out_hw_vol = 1, .line_out_hw_vol = 1,
...@@ -589,8 +581,6 @@ static const struct scarlett2_device_info s18i20_gen2_info = { ...@@ -589,8 +581,6 @@ static const struct scarlett2_device_info s18i20_gen2_info = {
}; };
static const struct scarlett2_device_info solo_gen3_info = { static const struct scarlett2_device_info solo_gen3_info = {
.usb_id = USB_ID(0x1235, 0x8211),
.has_msd_mode = 1, .has_msd_mode = 1,
.config_set = SCARLETT2_CONFIG_SET_NO_MIXER, .config_set = SCARLETT2_CONFIG_SET_NO_MIXER,
.level_input_count = 1, .level_input_count = 1,
...@@ -602,8 +592,6 @@ static const struct scarlett2_device_info solo_gen3_info = { ...@@ -602,8 +592,6 @@ static const struct scarlett2_device_info solo_gen3_info = {
}; };
static const struct scarlett2_device_info s2i2_gen3_info = { static const struct scarlett2_device_info s2i2_gen3_info = {
.usb_id = USB_ID(0x1235, 0x8210),
.has_msd_mode = 1, .has_msd_mode = 1,
.config_set = SCARLETT2_CONFIG_SET_NO_MIXER, .config_set = SCARLETT2_CONFIG_SET_NO_MIXER,
.level_input_count = 2, .level_input_count = 2,
...@@ -614,8 +602,6 @@ static const struct scarlett2_device_info s2i2_gen3_info = { ...@@ -614,8 +602,6 @@ static const struct scarlett2_device_info s2i2_gen3_info = {
}; };
static const struct scarlett2_device_info s4i4_gen3_info = { static const struct scarlett2_device_info s4i4_gen3_info = {
.usb_id = USB_ID(0x1235, 0x8212),
.has_msd_mode = 1, .has_msd_mode = 1,
.config_set = SCARLETT2_CONFIG_SET_GEN_3, .config_set = SCARLETT2_CONFIG_SET_GEN_3,
.level_input_count = 2, .level_input_count = 2,
...@@ -660,8 +646,6 @@ static const struct scarlett2_device_info s4i4_gen3_info = { ...@@ -660,8 +646,6 @@ static const struct scarlett2_device_info s4i4_gen3_info = {
}; };
static const struct scarlett2_device_info s8i6_gen3_info = { static const struct scarlett2_device_info s8i6_gen3_info = {
.usb_id = USB_ID(0x1235, 0x8213),
.has_msd_mode = 1, .has_msd_mode = 1,
.config_set = SCARLETT2_CONFIG_SET_GEN_3, .config_set = SCARLETT2_CONFIG_SET_GEN_3,
.level_input_count = 2, .level_input_count = 2,
...@@ -713,8 +697,6 @@ static const struct scarlett2_device_info s8i6_gen3_info = { ...@@ -713,8 +697,6 @@ static const struct scarlett2_device_info s8i6_gen3_info = {
}; };
static const struct scarlett2_device_info s18i8_gen3_info = { static const struct scarlett2_device_info s18i8_gen3_info = {
.usb_id = USB_ID(0x1235, 0x8214),
.has_msd_mode = 1, .has_msd_mode = 1,
.config_set = SCARLETT2_CONFIG_SET_GEN_3, .config_set = SCARLETT2_CONFIG_SET_GEN_3,
.line_out_hw_vol = 1, .line_out_hw_vol = 1,
...@@ -783,8 +765,6 @@ static const struct scarlett2_device_info s18i8_gen3_info = { ...@@ -783,8 +765,6 @@ static const struct scarlett2_device_info s18i8_gen3_info = {
}; };
static const struct scarlett2_device_info s18i20_gen3_info = { static const struct scarlett2_device_info s18i20_gen3_info = {
.usb_id = USB_ID(0x1235, 0x8215),
.has_msd_mode = 1, .has_msd_mode = 1,
.config_set = SCARLETT2_CONFIG_SET_GEN_3, .config_set = SCARLETT2_CONFIG_SET_GEN_3,
.line_out_hw_vol = 1, .line_out_hw_vol = 1,
...@@ -848,8 +828,6 @@ static const struct scarlett2_device_info s18i20_gen3_info = { ...@@ -848,8 +828,6 @@ static const struct scarlett2_device_info s18i20_gen3_info = {
}; };
static const struct scarlett2_device_info clarett_8pre_info = { static const struct scarlett2_device_info clarett_8pre_info = {
.usb_id = USB_ID(0x1235, 0x820c),
.config_set = SCARLETT2_CONFIG_SET_CLARETT, .config_set = SCARLETT2_CONFIG_SET_CLARETT,
.line_out_hw_vol = 1, .line_out_hw_vol = 1,
.level_input_count = 2, .level_input_count = 2,
...@@ -902,25 +880,30 @@ static const struct scarlett2_device_info clarett_8pre_info = { ...@@ -902,25 +880,30 @@ static const struct scarlett2_device_info clarett_8pre_info = {
} }, } },
}; };
static const struct scarlett2_device_info *scarlett2_devices[] = { struct scarlett2_device_entry {
const u32 usb_id; /* USB device identifier */
const struct scarlett2_device_info *info;
};
static const struct scarlett2_device_entry scarlett2_devices[] = {
/* Supported Gen 2 devices */ /* Supported Gen 2 devices */
&s6i6_gen2_info, { USB_ID(0x1235, 0x8203), &s6i6_gen2_info },
&s18i8_gen2_info, { USB_ID(0x1235, 0x8204), &s18i8_gen2_info },
&s18i20_gen2_info, { USB_ID(0x1235, 0x8201), &s18i20_gen2_info },
/* Supported Gen 3 devices */ /* Supported Gen 3 devices */
&solo_gen3_info, { USB_ID(0x1235, 0x8211), &solo_gen3_info },
&s2i2_gen3_info, { USB_ID(0x1235, 0x8210), &s2i2_gen3_info },
&s4i4_gen3_info, { USB_ID(0x1235, 0x8212), &s4i4_gen3_info },
&s8i6_gen3_info, { USB_ID(0x1235, 0x8213), &s8i6_gen3_info },
&s18i8_gen3_info, { USB_ID(0x1235, 0x8214), &s18i8_gen3_info },
&s18i20_gen3_info, { USB_ID(0x1235, 0x8215), &s18i20_gen3_info },
/* Supported Clarett+ devices */ /* Supported Clarett+ devices */
&clarett_8pre_info, { USB_ID(0x1235, 0x820c), &clarett_8pre_info },
/* End of list */ /* End of list */
NULL { 0, NULL },
}; };
/* get the starting port index number for a given port type/direction */ /* get the starting port index number for a given port type/direction */
...@@ -4072,17 +4055,17 @@ static int scarlett2_init_notify(struct usb_mixer_interface *mixer) ...@@ -4072,17 +4055,17 @@ static int scarlett2_init_notify(struct usb_mixer_interface *mixer)
static int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer) static int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer)
{ {
const struct scarlett2_device_info **info = scarlett2_devices; const struct scarlett2_device_entry *entry = scarlett2_devices;
int err; int err;
/* Find device in scarlett2_devices */ /* Find entry in scarlett2_devices */
while (*info && (*info)->usb_id != mixer->chip->usb_id) while (entry->usb_id && entry->usb_id != mixer->chip->usb_id)
info++; entry++;
if (!*info) if (!entry->usb_id)
return -EINVAL; return -EINVAL;
/* Initialise private data */ /* Initialise private data */
err = scarlett2_init_private(mixer, *info); err = scarlett2_init_private(mixer, entry->info);
if (err < 0) if (err < 0)
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment