* [PATCH 0/2] ALSA: scarlett2: Support Gen 4 firmware 2432 and 2449
@ 2026-10-28 17:54 Geoffrey D. Bennett
2026-10-28 17:54 ` [PATCH 1/2] ALSA: scarlett2: Allow config sets to override port counts Geoffrey D. Bennett
2026-10-28 17:54 ` [PATCH 2/2] ALSA: scarlett2: Update offsets for Gen 4 firmware 2432 and 2449 Geoffrey D. Bennett
0 siblings, 2 replies; 3+ messages in thread
From: Geoffrey D. Bennett @ 2026-10-28 17:54 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Takashi Iwai, linux-sound
Focusrite Control 2 1.1210 updates the Solo, 2i2, and 4i4 Gen 4 to
firmware 2452. Firmware 2449 onwards moves the settings the driver
uses, so without these patches the driver reads and writes the wrong
settings, and the 2i2 can lock up until it is rebooted.
Geoffrey D. Bennett (2):
ALSA: scarlett2: Allow config sets to override port counts
ALSA: scarlett2: Update offsets for Gen 4 firmware 2432 and 2449
sound/usb/mixer_scarlett2.c | 287 ++++++++++++++++++++++++++++++++++--
1 file changed, 278 insertions(+), 9 deletions(-)
--
2.56.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/2] ALSA: scarlett2: Allow config sets to override port counts
2026-10-28 17:54 [PATCH 0/2] ALSA: scarlett2: Support Gen 4 firmware 2432 and 2449 Geoffrey D. Bennett
@ 2026-10-28 17:54 ` Geoffrey D. Bennett
2026-10-28 17:54 ` [PATCH 2/2] ALSA: scarlett2: Update offsets for Gen 4 firmware 2432 and 2449 Geoffrey D. Bennett
1 sibling, 0 replies; 3+ messages in thread
From: Geoffrey D. Bennett @ 2026-10-28 17:54 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Takashi Iwai, linux-sound
Firmware updates can change the number of mux ports. Let a config set
override the device port counts.
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Geoffrey D. Bennett <g@b4.vu>
---
sound/usb/mixer_scarlett2.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/sound/usb/mixer_scarlett2.c b/sound/usb/mixer_scarlett2.c
index ed5fe746d438..2b4876abcecd 100644
--- a/sound/usb/mixer_scarlett2.c
+++ b/sound/usb/mixer_scarlett2.c
@@ -616,6 +616,7 @@ struct scarlett2_config_set {
const unsigned int *input_gain_tlv;
const char *const *autogain_status_texts;
const struct scarlett2_config items[SCARLETT2_CONFIG_COUNT];
+ const int (*port_count)[SCARLETT2_PORT_DIRNS];
};
/* Map firmware versions to config sets per-device.
@@ -1412,6 +1413,7 @@ struct scarlett2_data {
struct delayed_work work;
const struct scarlett2_device_info *info;
const struct scarlett2_config_set *config_set;
+ const int (*port_count)[SCARLETT2_PORT_DIRNS];
const char *series_name;
__u8 bInterfaceNumber;
__u8 bEndpointAddress;
@@ -3158,7 +3160,7 @@ static int scarlett2_usb_set_mix(struct usb_mixer_interface *mixer,
NULL, 0);
}
-/* Convert a port number index (per info->port_count) to a hardware ID */
+/* Convert a port number index (per private->port_count) to a hardware ID */
static u32 scarlett2_mux_src_num_to_id(
const int port_count[][SCARLETT2_PORT_DIRNS], int num)
{
@@ -3202,8 +3204,7 @@ static u32 scarlett2_mux_id_to_num(
static void scarlett2_usb_populate_mux(struct scarlett2_data *private,
u32 mux_entry)
{
- const struct scarlett2_device_info *info = private->info;
- const int (*port_count)[SCARLETT2_PORT_DIRNS] = info->port_count;
+ const int (*port_count)[SCARLETT2_PORT_DIRNS] = private->port_count;
int dst_idx, src_idx;
@@ -3342,7 +3343,7 @@ static int scarlett2_usb_set_mux(struct usb_mixer_interface *mixer)
{
struct scarlett2_data *private = mixer->private_data;
const struct scarlett2_device_info *info = private->info;
- const int (*port_count)[SCARLETT2_PORT_DIRNS] = info->port_count;
+ const int (*port_count)[SCARLETT2_PORT_DIRNS] = private->port_count;
int table;
struct {
@@ -7365,8 +7366,7 @@ static int scarlett2_mux_src_enum_ctl_info(struct snd_kcontrol *kctl,
{
struct usb_mixer_elem_info *elem = kctl->private_data;
struct scarlett2_data *private = elem->head.mixer->private_data;
- const struct scarlett2_device_info *info = private->info;
- const int (*port_count)[SCARLETT2_PORT_DIRNS] = info->port_count;
+ const int (*port_count)[SCARLETT2_PORT_DIRNS] = private->port_count;
unsigned int item = uinfo->value.enumerated.item;
int items = private->num_mux_srcs;
int port_type;
@@ -7466,8 +7466,7 @@ static const struct snd_kcontrol_new scarlett2_mux_src_enum_ctl = {
static int scarlett2_add_mux_enums(struct usb_mixer_interface *mixer)
{
struct scarlett2_data *private = mixer->private_data;
- const struct scarlett2_device_info *info = private->info;
- const int (*port_count)[SCARLETT2_PORT_DIRNS] = info->port_count;
+ const int (*port_count)[SCARLETT2_PORT_DIRNS] = private->port_count;
int port_type, channel, i;
for (i = 0, port_type = 0;
@@ -8696,9 +8695,12 @@ static void scarlett2_count_io(struct scarlett2_data *private)
{
const struct scarlett2_device_info *info = private->info;
const struct scarlett2_config_set *config_set = private->config_set;
- const int (*port_count)[SCARLETT2_PORT_DIRNS] = info->port_count;
+ const int (*port_count)[SCARLETT2_PORT_DIRNS];
int port_type, srcs = 0, dsts = 0, i;
+ port_count = config_set->port_count ?: info->port_count;
+ private->port_count = port_count;
+
/* Count the number of mux sources and destinations */
for (port_type = 0;
port_type < SCARLETT2_PORT_TYPE_COUNT;
--
2.56.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] ALSA: scarlett2: Update offsets for Gen 4 firmware 2432 and 2449
2026-10-28 17:54 [PATCH 0/2] ALSA: scarlett2: Support Gen 4 firmware 2432 and 2449 Geoffrey D. Bennett
2026-10-28 17:54 ` [PATCH 1/2] ALSA: scarlett2: Allow config sets to override port counts Geoffrey D. Bennett
@ 2026-10-28 17:54 ` Geoffrey D. Bennett
1 sibling, 0 replies; 3+ messages in thread
From: Geoffrey D. Bennett @ 2026-10-28 17:54 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Takashi Iwai, linux-sound
Solo, 2i2, and 4i4 Gen 4 firmware 2449 and 4i4 firmware 2432 move the
settings the driver uses, so it reads and writes the wrong ones, and
the 2i2 locks up until it is rebooted. 2i2 firmware 2449 also adds
two mixer outputs and the input combining switch that the Solo already
has. Add config sets for them.
Fixes: 4e809a299677 ("ALSA: scarlett2: Add support for Solo, 2i2, and 4i4 Gen 4")
Closes: https://github.com/geoffreybennett/alsa-scarlett-gui/issues/270
Cc: stable@vger.kernel.org # ALSA: scarlett2: Allow config sets to override port counts
Cc: stable@vger.kernel.org
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Geoffrey D. Bennett <g@b4.vu>
---
sound/usb/mixer_scarlett2.c | 267 ++++++++++++++++++++++++++++++++++++
1 file changed, 267 insertions(+)
diff --git a/sound/usb/mixer_scarlett2.c b/sound/usb/mixer_scarlett2.c
index 2b4876abcecd..2b916eddbbf3 100644
--- a/sound/usb/mixer_scarlett2.c
+++ b/sound/usb/mixer_scarlett2.c
@@ -453,6 +453,7 @@ static void scarlett2_notify_direct_monitor(struct usb_mixer_interface *mixer);
static void scarlett2_notify_power_status(struct usb_mixer_interface *mixer);
static void scarlett2_notify_pcm_input_switch(
struct usb_mixer_interface *mixer);
+static void scarlett2_notify_select_pcm_in(struct usb_mixer_interface *mixer);
static void scarlett2_notify_bluetooth(struct usb_mixer_interface *mixer);
/* Arrays of notification callback functions */
@@ -513,6 +514,23 @@ static const struct scarlett2_notification scarlett4_2i2_notifications[] = {
{ 0, NULL }
};
+static const struct scarlett2_notification
+scarlett4_2i2_2449_notifications[] = {
+ { 0x00000001, scarlett2_notify_ack },
+ { 0x00000008, scarlett2_notify_sync },
+ { 0x00200000, scarlett2_notify_input_safe },
+ { 0x00400000, scarlett2_notify_autogain },
+ { 0x00800000, scarlett2_notify_input_air },
+ { 0x01000000, scarlett2_notify_direct_monitor },
+ { 0x02000000, scarlett2_notify_select_pcm_in },
+ { 0x04000000, scarlett2_notify_input_level },
+ { 0x08000000, scarlett2_notify_input_phantom },
+ { 0x10000000, NULL }, /* power status, ignored */
+ { 0x40000000, scarlett2_notify_input_gain },
+ { 0x80000000, NULL }, /* power status, ignored */
+ { 0, NULL }
+};
+
static const struct scarlett2_notification scarlett4_4i4_notifications[] = {
{ 0x00000001, scarlett2_notify_ack },
{ 0x00000008, scarlett2_notify_sync },
@@ -927,6 +945,42 @@ static const struct scarlett2_config_set scarlett2_config_set_gen4_solo_2417 = {
}
};
+/* Solo Gen 4, firmware version 2449 and above */
+static const struct scarlett2_config_set scarlett2_config_set_gen4_solo_2449 = {
+ .notifications = scarlett4_solo_notifications,
+ .param_buf_addr = 0xe0,
+ .items = {
+ [SCARLETT2_CONFIG_MSD_SWITCH] = {
+ .offset = 0x4f, .size = 8, .activate = 4 },
+
+ [SCARLETT2_CONFIG_DIRECT_MONITOR] = {
+ .offset = 0x110, .size = 8, .activate = 12, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_PHANTOM_SWITCH] = {
+ .offset = 0x4e, .size = 8, .activate = 9, .pbuf = 1,
+ .mute = 1 },
+
+ [SCARLETT2_CONFIG_LEVEL_SWITCH] = {
+ .offset = 0x45, .size = 8, .activate = 10, .pbuf = 1,
+ .mute = 1 },
+
+ [SCARLETT2_CONFIG_AIR_SWITCH] = {
+ .offset = 0x46, .size = 8, .activate = 11, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_PCM_INPUT_SWITCH] = {
+ .offset = 0x20e, .size = 8, .activate = 25, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_DIRECT_MONITOR_GAIN] = {
+ .offset = 0x23a, .size = 16, .activate = 26 },
+
+ [SCARLETT2_CONFIG_FP_BRIGHTNESS] = {
+ .offset = 0x24b, .size = 8, .activate = 27, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_FP_SLEEP_TIME] = {
+ .offset = 0x250, .size = 32, .activate = 29 }
+ }
+};
+
/* 2i2 Gen 4 */
static const struct scarlett2_config_set scarlett2_config_set_gen4_2i2 = {
.notifications = scarlett4_2i2_notifications,
@@ -1044,6 +1098,76 @@ static const struct scarlett2_config_set scarlett2_config_set_gen4_2i2_2417 = {
}
};
+/* 2i2 Gen 4, firmware version 2449 and above */
+static const int scarlett2_gen4_2i2_2449_port_count[][SCARLETT2_PORT_DIRNS] = {
+ [SCARLETT2_PORT_TYPE_NONE] = { 1, 0 },
+ [SCARLETT2_PORT_TYPE_ANALOGUE] = { 2, 2 },
+ [SCARLETT2_PORT_TYPE_MIX] = { 8, 6 },
+ [SCARLETT2_PORT_TYPE_PCM] = { 2, 4 },
+};
+
+static const struct scarlett2_config_set scarlett2_config_set_gen4_2i2_2449 = {
+ .notifications = scarlett4_2i2_2449_notifications,
+ .port_count = scarlett2_gen4_2i2_2449_port_count,
+ .param_buf_addr = 0x114,
+ .input_gain_tlv = db_scale_gen4_gain,
+ .autogain_status_texts = scarlett2_autogain_status_gen4,
+ .items = {
+ [SCARLETT2_CONFIG_MSD_SWITCH] = {
+ .offset = 0x61, .size = 8, .activate = 4 },
+
+ [SCARLETT2_CONFIG_DIRECT_MONITOR] = {
+ .offset = 0x162, .size = 8, .activate = 16, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_AUTOGAIN_SWITCH] = {
+ .offset = 0x14d, .size = 8, .activate = 10, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_AUTOGAIN_STATUS] = {
+ .offset = 0x14f, .size = 8 },
+
+ [SCARLETT2_CONFIG_AG_MEAN_TARGET] = {
+ .offset = 0x149, .size = 8, .activate = 29, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_AG_PEAK_TARGET] = {
+ .offset = 0x14a, .size = 8, .activate = 30, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_PHANTOM_SWITCH] = {
+ .offset = 0x60, .size = 8, .activate = 11, .pbuf = 1,
+ .mute = 1 },
+
+ [SCARLETT2_CONFIG_INPUT_GAIN] = {
+ .offset = 0x63, .size = 8, .activate = 12, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_LEVEL_SWITCH] = {
+ .offset = 0x54, .size = 8, .activate = 13, .pbuf = 1,
+ .mute = 1 },
+
+ [SCARLETT2_CONFIG_SAFE_SWITCH] = {
+ .offset = 0x15f, .size = 8, .activate = 14, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_AIR_SWITCH] = {
+ .offset = 0x56, .size = 8, .activate = 15, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_INPUT_SELECT_SWITCH] = {
+ .offset = 0x163, .size = 8, .activate = 17, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_INPUT_LINK_SWITCH] = {
+ .offset = 0x166, .size = 8, .activate = 18, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_PCM_INPUT_SWITCH] = {
+ .offset = 0x4, .size = 8, .activate = 40, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_DIRECT_MONITOR_GAIN] = {
+ .offset = 0x2b0, .size = 16, .activate = 36 },
+
+ [SCARLETT2_CONFIG_FP_BRIGHTNESS] = {
+ .offset = 0x2d3, .size = 8, .activate = 37, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_FP_SLEEP_TIME] = {
+ .offset = 0x2d8, .size = 32, .activate = 39 }
+ }
+};
+
/* 4i4 Gen 4 */
static const struct scarlett2_config_set scarlett2_config_set_gen4_4i4 = {
.notifications = scarlett4_4i4_notifications,
@@ -1168,6 +1292,136 @@ static const struct scarlett2_config_set scarlett2_config_set_gen4_4i4_2417 = {
}
};
+/* 4i4 Gen 4, firmware version 2432 and above */
+static const struct scarlett2_config_set scarlett2_config_set_gen4_4i4_2432 = {
+ .notifications = scarlett4_4i4_notifications,
+ .param_buf_addr = 0x130,
+ .input_gain_tlv = db_scale_gen4_gain,
+ .autogain_status_texts = scarlett2_autogain_status_gen4,
+ .items = {
+ [SCARLETT2_CONFIG_MSD_SWITCH] = {
+ .offset = 0x5c, .size = 8, .activate = 4 },
+
+ [SCARLETT2_CONFIG_AUTOGAIN_SWITCH] = {
+ .offset = 0x13e, .size = 8, .activate = 10, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_AUTOGAIN_STATUS] = {
+ .offset = 0x140, .size = 8 },
+
+ [SCARLETT2_CONFIG_AG_MEAN_TARGET] = {
+ .offset = 0x13a, .size = 8, .activate = 23, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_AG_PEAK_TARGET] = {
+ .offset = 0x13b, .size = 8, .activate = 24, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_PHANTOM_SWITCH] = {
+ .offset = 0x5a, .size = 8, .activate = 11, .pbuf = 1,
+ .mute = 1 },
+
+ [SCARLETT2_CONFIG_INPUT_GAIN] = {
+ .offset = 0x5e, .size = 8, .activate = 12, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_LEVEL_SWITCH] = {
+ .offset = 0x4e, .size = 8, .activate = 13, .pbuf = 1,
+ .mute = 1 },
+
+ [SCARLETT2_CONFIG_SAFE_SWITCH] = {
+ .offset = 0x150, .size = 8, .activate = 14, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_AIR_SWITCH] = {
+ .offset = 0x50, .size = 8, .activate = 15, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_INPUT_SELECT_SWITCH] = {
+ .offset = 0x153, .size = 8, .activate = 16, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_INPUT_LINK_SWITCH] = {
+ .offset = 0x156, .size = 8, .activate = 17, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_MASTER_VOLUME] = {
+ .offset = 0x32, .size = 16 },
+
+ [SCARLETT2_CONFIG_HEADPHONE_VOLUME] = {
+ .offset = 0x3a, .size = 16 },
+
+ [SCARLETT2_CONFIG_POWER_EXT] = {
+ .offset = 0x168, .size = 8 },
+
+ [SCARLETT2_CONFIG_POWER_LOW] = {
+ .offset = 0x16f, .size = 8 },
+
+ [SCARLETT2_CONFIG_FP_BRIGHTNESS] = {
+ .offset = 0x3c5, .size = 8, .activate = 36, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_FP_SLEEP_TIME] = {
+ .offset = 0x3c8, .size = 32, .activate = 38 }
+ }
+};
+
+/* 4i4 Gen 4, firmware version 2449 and above */
+static const struct scarlett2_config_set scarlett2_config_set_gen4_4i4_2449 = {
+ .notifications = scarlett4_4i4_notifications,
+ .param_buf_addr = 0x138,
+ .input_gain_tlv = db_scale_gen4_gain,
+ .autogain_status_texts = scarlett2_autogain_status_gen4,
+ .items = {
+ [SCARLETT2_CONFIG_MSD_SWITCH] = {
+ .offset = 0x64, .size = 8, .activate = 4 },
+
+ [SCARLETT2_CONFIG_AUTOGAIN_SWITCH] = {
+ .offset = 0x146, .size = 8, .activate = 10, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_AUTOGAIN_STATUS] = {
+ .offset = 0x148, .size = 8 },
+
+ [SCARLETT2_CONFIG_AG_MEAN_TARGET] = {
+ .offset = 0x142, .size = 8, .activate = 23, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_AG_PEAK_TARGET] = {
+ .offset = 0x143, .size = 8, .activate = 24, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_PHANTOM_SWITCH] = {
+ .offset = 0x62, .size = 8, .activate = 11, .pbuf = 1,
+ .mute = 1 },
+
+ [SCARLETT2_CONFIG_INPUT_GAIN] = {
+ .offset = 0x66, .size = 8, .activate = 12, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_LEVEL_SWITCH] = {
+ .offset = 0x56, .size = 8, .activate = 13, .pbuf = 1,
+ .mute = 1 },
+
+ [SCARLETT2_CONFIG_SAFE_SWITCH] = {
+ .offset = 0x158, .size = 8, .activate = 14, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_AIR_SWITCH] = {
+ .offset = 0x58, .size = 8, .activate = 15, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_INPUT_SELECT_SWITCH] = {
+ .offset = 0x15b, .size = 8, .activate = 16, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_INPUT_LINK_SWITCH] = {
+ .offset = 0x15e, .size = 8, .activate = 17, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_MASTER_VOLUME] = {
+ .offset = 0x3a, .size = 16 },
+
+ [SCARLETT2_CONFIG_HEADPHONE_VOLUME] = {
+ .offset = 0x42, .size = 16 },
+
+ [SCARLETT2_CONFIG_POWER_EXT] = {
+ .offset = 0x170, .size = 8 },
+
+ [SCARLETT2_CONFIG_POWER_LOW] = {
+ .offset = 0x177, .size = 8 },
+
+ [SCARLETT2_CONFIG_FP_BRIGHTNESS] = {
+ .offset = 0x3cd, .size = 8, .activate = 36, .pbuf = 1 },
+
+ [SCARLETT2_CONFIG_FP_SLEEP_TIME] = {
+ .offset = 0x3d0, .size = 32, .activate = 38 }
+ }
+};
+
/* Clarett USB and Clarett+ devices: 2Pre, 4Pre, 8Pre */
static const struct scarlett2_config_set scarlett2_config_set_clarett = {
.notifications = scarlett2_notifications,
@@ -2113,6 +2367,7 @@ static const struct scarlett2_device_info solo_gen4_info = {
.config_sets = (const struct scarlett2_config_set_entry[]) {
{ 2115, &scarlett2_config_set_gen4_solo },
{ 2417, &scarlett2_config_set_gen4_solo_2417 },
+ { 2449, &scarlett2_config_set_gen4_solo_2449 },
{ }
},
.has_devmap = 1,
@@ -2171,6 +2426,7 @@ static const struct scarlett2_device_info s2i2_gen4_info = {
.config_sets = (const struct scarlett2_config_set_entry[]) {
{ 2115, &scarlett2_config_set_gen4_2i2 },
{ 2417, &scarlett2_config_set_gen4_2i2_2417 },
+ { 2449, &scarlett2_config_set_gen4_2i2_2449 },
{ }
},
.has_devmap = 1,
@@ -2229,6 +2485,8 @@ static const struct scarlett2_device_info s4i4_gen4_info = {
.config_sets = (const struct scarlett2_config_set_entry[]) {
{ 2089, &scarlett2_config_set_gen4_4i4 },
{ 2417, &scarlett2_config_set_gen4_4i4_2417 },
+ { 2432, &scarlett2_config_set_gen4_4i4_2432 },
+ { 2449, &scarlett2_config_set_gen4_4i4_2449 },
{ }
},
.has_devmap = 1,
@@ -8515,6 +8773,15 @@ static void scarlett2_notify_pcm_input_switch(struct usb_mixer_interface *mixer)
scarlett2_notify_mux(mixer);
}
+/* Notify on input select or PCM input switch change; 2i2 Gen 4
+ * firmware 2449 uses one notification for both
+ */
+static void scarlett2_notify_select_pcm_in(struct usb_mixer_interface *mixer)
+{
+ scarlett2_notify_input_select(mixer);
+ scarlett2_notify_pcm_input_switch(mixer);
+}
+
/* Notify on Bluetooth change */
static void scarlett2_notify_bluetooth(struct usb_mixer_interface *mixer)
{
--
2.56.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-28 17:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-28 17:54 [PATCH 0/2] ALSA: scarlett2: Support Gen 4 firmware 2432 and 2449 Geoffrey D. Bennett
2026-10-28 17:54 ` [PATCH 1/2] ALSA: scarlett2: Allow config sets to override port counts Geoffrey D. Bennett
2026-10-28 17:54 ` [PATCH 2/2] ALSA: scarlett2: Update offsets for Gen 4 firmware 2432 and 2449 Geoffrey D. Bennett
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox