/* Maximum number of meters (sum of output port counts) */
 #define SCARLETT2_MAX_METERS 65
 
-/* There are three different sets of configuration parameters across
- * the devices
+/* There are different sets of configuration parameters across the
+ * devices, dependent on series and model.
  */
 enum {
-       SCARLETT2_CONFIG_SET_NO_MIXER = 0,
-       SCARLETT2_CONFIG_SET_GEN_2 = 1,
-       SCARLETT2_CONFIG_SET_GEN_3 = 2,
+       SCARLETT2_CONFIG_SET_GEN_2   = 0,
+       SCARLETT2_CONFIG_SET_GEN_3A  = 1,
+       SCARLETT2_CONFIG_SET_GEN_3B  = 2,
        SCARLETT2_CONFIG_SET_CLARETT = 3,
-       SCARLETT2_CONFIG_SET_COUNT = 4
+       SCARLETT2_CONFIG_SET_COUNT   = 4
 };
 
 /* Hardware port types:
 
 static const struct scarlett2_device_info solo_gen3_info = {
        .has_msd_mode = 1,
-       .config_set = SCARLETT2_CONFIG_SET_NO_MIXER,
+       .config_set = SCARLETT2_CONFIG_SET_GEN_3A,
        .level_input_count = 1,
        .level_input_first = 1,
        .air_input_count = 1,
 
 static const struct scarlett2_device_info s2i2_gen3_info = {
        .has_msd_mode = 1,
-       .config_set = SCARLETT2_CONFIG_SET_NO_MIXER,
+       .config_set = SCARLETT2_CONFIG_SET_GEN_3A,
        .level_input_count = 2,
        .air_input_count = 2,
        .phantom_count = 1,
 
 static const struct scarlett2_device_info s4i4_gen3_info = {
        .has_msd_mode = 1,
-       .config_set = SCARLETT2_CONFIG_SET_GEN_3,
+       .config_set = SCARLETT2_CONFIG_SET_GEN_3B,
        .level_input_count = 2,
        .pad_input_count = 2,
        .air_input_count = 2,
 
 static const struct scarlett2_device_info s8i6_gen3_info = {
        .has_msd_mode = 1,
-       .config_set = SCARLETT2_CONFIG_SET_GEN_3,
+       .config_set = SCARLETT2_CONFIG_SET_GEN_3B,
        .level_input_count = 2,
        .pad_input_count = 2,
        .air_input_count = 2,
 
 static const struct scarlett2_device_info s18i8_gen3_info = {
        .has_msd_mode = 1,
-       .config_set = SCARLETT2_CONFIG_SET_GEN_3,
+       .config_set = SCARLETT2_CONFIG_SET_GEN_3B,
        .line_out_hw_vol = 1,
        .has_speaker_switching = 1,
        .level_input_count = 2,
 
 static const struct scarlett2_device_info s18i20_gen3_info = {
        .has_msd_mode = 1,
-       .config_set = SCARLETT2_CONFIG_SET_GEN_3,
+       .config_set = SCARLETT2_CONFIG_SET_GEN_3B,
        .line_out_hw_vol = 1,
        .has_speaker_switching = 1,
        .has_talkback = 1,
        scarlett2_config_items[SCARLETT2_CONFIG_SET_COUNT]
                              [SCARLETT2_CONFIG_COUNT] =
 
-/* Devices without a mixer (Gen 3 Solo and 2i2) */
-{ {
-       [SCARLETT2_CONFIG_MSD_SWITCH] = {
-               .offset = 0x04, .size = 8, .activate = 6 },
-
-       [SCARLETT2_CONFIG_PHANTOM_PERSISTENCE] = {
-               .offset = 0x05, .size = 8, .activate = 6 },
-
-       [SCARLETT2_CONFIG_PHANTOM_SWITCH] = {
-               .offset = 0x06, .size = 8, .activate = 3 },
-
-       [SCARLETT2_CONFIG_DIRECT_MONITOR] = {
-               .offset = 0x07, .size = 8, .activate = 4 },
-
-       [SCARLETT2_CONFIG_LEVEL_SWITCH] = {
-               .offset = 0x08, .size = 1, .activate = 7 },
-
-       [SCARLETT2_CONFIG_AIR_SWITCH] = {
-               .offset = 0x09, .size = 1, .activate = 8 },
-
 /* Gen 2 devices: 6i6, 18i8, 18i20 */
-}, {
+{ {
        [SCARLETT2_CONFIG_DIM_MUTE] = {
                .offset = 0x31, .size = 8, .activate = 2 },
 
        [SCARLETT2_CONFIG_STANDALONE_SWITCH] = {
                .offset = 0x8d, .size = 8, .activate = 6 },
 
+/* Gen 3 devices without a mixer (Solo and 2i2) */
+}, {
+       [SCARLETT2_CONFIG_MSD_SWITCH] = {
+               .offset = 0x04, .size = 8, .activate = 6 },
+
+       [SCARLETT2_CONFIG_PHANTOM_PERSISTENCE] = {
+               .offset = 0x05, .size = 8, .activate = 6 },
+
+       [SCARLETT2_CONFIG_PHANTOM_SWITCH] = {
+               .offset = 0x06, .size = 8, .activate = 3 },
+
+       [SCARLETT2_CONFIG_DIRECT_MONITOR] = {
+               .offset = 0x07, .size = 8, .activate = 4 },
+
+       [SCARLETT2_CONFIG_LEVEL_SWITCH] = {
+               .offset = 0x08, .size = 1, .activate = 7 },
+
+       [SCARLETT2_CONFIG_AIR_SWITCH] = {
+               .offset = 0x09, .size = 1, .activate = 8 },
+
 /* Gen 3 devices: 4i4, 8i6, 18i8, 18i20 */
 }, {
        [SCARLETT2_CONFIG_DIM_MUTE] = {
        struct scarlett2_data *private = mixer->private_data;
 
        /* devices without a mixer also don't support reporting sync status */
-       if (private->info->config_set == SCARLETT2_CONFIG_SET_NO_MIXER)
+       if (private->info->config_set == SCARLETT2_CONFIG_SET_GEN_3A)
                return 0;
 
        return scarlett2_add_new_ctl(mixer, &scarlett2_sync_ctl,
        struct scarlett2_data *private = mixer->private_data;
 
        /* devices without a mixer also don't support reporting levels */
-       if (private->info->config_set == SCARLETT2_CONFIG_SET_NO_MIXER)
+       if (private->info->config_set == SCARLETT2_CONFIG_SET_GEN_3A)
                return 0;
 
        return scarlett2_add_new_ctl(mixer, &scarlett2_meter_ctl,
 {
        struct scarlett2_data *private = mixer->private_data;
 
-       if (private->info->config_set == SCARLETT2_CONFIG_SET_NO_MIXER)
+       if (private->info->config_set == SCARLETT2_CONFIG_SET_GEN_3A)
                return 0;
 
        /* Add standalone control */
                return err;
 
        /* the rest of the configuration is for devices with a mixer */
-       if (info->config_set == SCARLETT2_CONFIG_SET_NO_MIXER)
+       if (info->config_set == SCARLETT2_CONFIG_SET_GEN_3A)
                return 0;
 
        err = scarlett2_usb_get_config(