mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-28 21:33:52 +00:00
ALSA: scarlett2: Move USB IDs out from device_info struct
[ Upstream commitd98cc48902
] 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: Philippe Perrot <philippe@perrot-net.fr> Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/8263368e8d49e6fcebc709817bd82ab79b404468.1694705811.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de> Stable-dep-of:b9a98cdd3a
("ALSA: scarlett2: Add support for Clarett 8Pre USB") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
bbdfa14482
commit
4d74cb9cdf
1 changed files with 23 additions and 40 deletions
|
@ -317,8 +317,6 @@ struct scarlett2_mux_entry {
|
|||
};
|
||||
|
||||
struct scarlett2_device_info {
|
||||
u32 usb_id; /* USB device identifier */
|
||||
|
||||
/* Gen 3 devices have an internal MSD mode switch that needs
|
||||
* to be disabled in order to access the full functionality of
|
||||
* the device.
|
||||
|
@ -440,8 +438,6 @@ struct scarlett2_data {
|
|||
/*** Model-specific data ***/
|
||||
|
||||
static const struct scarlett2_device_info s6i6_gen2_info = {
|
||||
.usb_id = USB_ID(0x1235, 0x8203),
|
||||
|
||||
.config_set = SCARLETT2_CONFIG_SET_GEN_2,
|
||||
.level_input_count = 2,
|
||||
.pad_input_count = 2,
|
||||
|
@ -486,8 +482,6 @@ static const struct scarlett2_device_info s6i6_gen2_info = {
|
|||
};
|
||||
|
||||
static const struct scarlett2_device_info s18i8_gen2_info = {
|
||||
.usb_id = USB_ID(0x1235, 0x8204),
|
||||
|
||||
.config_set = SCARLETT2_CONFIG_SET_GEN_2,
|
||||
.level_input_count = 2,
|
||||
.pad_input_count = 4,
|
||||
|
@ -535,8 +529,6 @@ static const struct scarlett2_device_info s18i8_gen2_info = {
|
|||
};
|
||||
|
||||
static const struct scarlett2_device_info s18i20_gen2_info = {
|
||||
.usb_id = USB_ID(0x1235, 0x8201),
|
||||
|
||||
.config_set = SCARLETT2_CONFIG_SET_GEN_2,
|
||||
.line_out_hw_vol = 1,
|
||||
|
||||
|
@ -589,8 +581,6 @@ static const struct scarlett2_device_info s18i20_gen2_info = {
|
|||
};
|
||||
|
||||
static const struct scarlett2_device_info solo_gen3_info = {
|
||||
.usb_id = USB_ID(0x1235, 0x8211),
|
||||
|
||||
.has_msd_mode = 1,
|
||||
.config_set = SCARLETT2_CONFIG_SET_NO_MIXER,
|
||||
.level_input_count = 1,
|
||||
|
@ -602,8 +592,6 @@ static const struct scarlett2_device_info solo_gen3_info = {
|
|||
};
|
||||
|
||||
static const struct scarlett2_device_info s2i2_gen3_info = {
|
||||
.usb_id = USB_ID(0x1235, 0x8210),
|
||||
|
||||
.has_msd_mode = 1,
|
||||
.config_set = SCARLETT2_CONFIG_SET_NO_MIXER,
|
||||
.level_input_count = 2,
|
||||
|
@ -614,8 +602,6 @@ static const struct scarlett2_device_info s2i2_gen3_info = {
|
|||
};
|
||||
|
||||
static const struct scarlett2_device_info s4i4_gen3_info = {
|
||||
.usb_id = USB_ID(0x1235, 0x8212),
|
||||
|
||||
.has_msd_mode = 1,
|
||||
.config_set = SCARLETT2_CONFIG_SET_GEN_3,
|
||||
.level_input_count = 2,
|
||||
|
@ -660,8 +646,6 @@ static const struct scarlett2_device_info s4i4_gen3_info = {
|
|||
};
|
||||
|
||||
static const struct scarlett2_device_info s8i6_gen3_info = {
|
||||
.usb_id = USB_ID(0x1235, 0x8213),
|
||||
|
||||
.has_msd_mode = 1,
|
||||
.config_set = SCARLETT2_CONFIG_SET_GEN_3,
|
||||
.level_input_count = 2,
|
||||
|
@ -713,8 +697,6 @@ static const struct scarlett2_device_info s8i6_gen3_info = {
|
|||
};
|
||||
|
||||
static const struct scarlett2_device_info s18i8_gen3_info = {
|
||||
.usb_id = USB_ID(0x1235, 0x8214),
|
||||
|
||||
.has_msd_mode = 1,
|
||||
.config_set = SCARLETT2_CONFIG_SET_GEN_3,
|
||||
.line_out_hw_vol = 1,
|
||||
|
@ -783,8 +765,6 @@ static const struct scarlett2_device_info s18i8_gen3_info = {
|
|||
};
|
||||
|
||||
static const struct scarlett2_device_info s18i20_gen3_info = {
|
||||
.usb_id = USB_ID(0x1235, 0x8215),
|
||||
|
||||
.has_msd_mode = 1,
|
||||
.config_set = SCARLETT2_CONFIG_SET_GEN_3,
|
||||
.line_out_hw_vol = 1,
|
||||
|
@ -848,8 +828,6 @@ static const struct scarlett2_device_info s18i20_gen3_info = {
|
|||
};
|
||||
|
||||
static const struct scarlett2_device_info clarett_8pre_info = {
|
||||
.usb_id = USB_ID(0x1235, 0x820c),
|
||||
|
||||
.config_set = SCARLETT2_CONFIG_SET_CLARETT,
|
||||
.line_out_hw_vol = 1,
|
||||
.level_input_count = 2,
|
||||
|
@ -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 */
|
||||
&s6i6_gen2_info,
|
||||
&s18i8_gen2_info,
|
||||
&s18i20_gen2_info,
|
||||
{ USB_ID(0x1235, 0x8203), &s6i6_gen2_info },
|
||||
{ USB_ID(0x1235, 0x8204), &s18i8_gen2_info },
|
||||
{ USB_ID(0x1235, 0x8201), &s18i20_gen2_info },
|
||||
|
||||
/* Supported Gen 3 devices */
|
||||
&solo_gen3_info,
|
||||
&s2i2_gen3_info,
|
||||
&s4i4_gen3_info,
|
||||
&s8i6_gen3_info,
|
||||
&s18i8_gen3_info,
|
||||
&s18i20_gen3_info,
|
||||
{ USB_ID(0x1235, 0x8211), &solo_gen3_info },
|
||||
{ USB_ID(0x1235, 0x8210), &s2i2_gen3_info },
|
||||
{ USB_ID(0x1235, 0x8212), &s4i4_gen3_info },
|
||||
{ USB_ID(0x1235, 0x8213), &s8i6_gen3_info },
|
||||
{ USB_ID(0x1235, 0x8214), &s18i8_gen3_info },
|
||||
{ USB_ID(0x1235, 0x8215), &s18i20_gen3_info },
|
||||
|
||||
/* Supported Clarett+ devices */
|
||||
&clarett_8pre_info,
|
||||
{ USB_ID(0x1235, 0x820c), &clarett_8pre_info },
|
||||
|
||||
/* End of list */
|
||||
NULL
|
||||
{ 0, NULL },
|
||||
};
|
||||
|
||||
/* get the starting port index number for a given port type/direction */
|
||||
|
@ -4149,17 +4132,17 @@ static int scarlett2_init_notify(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;
|
||||
|
||||
/* Find device in scarlett2_devices */
|
||||
while (*info && (*info)->usb_id != mixer->chip->usb_id)
|
||||
info++;
|
||||
if (!*info)
|
||||
/* Find entry in scarlett2_devices */
|
||||
while (entry->usb_id && entry->usb_id != mixer->chip->usb_id)
|
||||
entry++;
|
||||
if (!entry->usb_id)
|
||||
return -EINVAL;
|
||||
|
||||
/* Initialise private data */
|
||||
err = scarlett2_init_private(mixer, *info);
|
||||
err = scarlett2_init_private(mixer, entry->info);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
|
|
Loading…
Reference in a new issue