u8 vol_updated;
u8 input_other_updated;
u8 monitor_other_updated;
+ u8 mux_updated;
u8 sync;
u8 master_vol;
u8 vol[SCARLETT2_ANALOGUE_MAX];
__le32 data[SCARLETT2_MUX_MAX];
+ private->mux_updated = 0;
+
req.num = 0;
req.count = cpu_to_le16(count);
struct snd_ctl_elem_value *ucontrol)
{
struct usb_mixer_elem_info *elem = kctl->private_data;
- struct scarlett2_data *private = elem->head.mixer->private_data;
+ struct usb_mixer_interface *mixer = elem->head.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;
int line_out_count =
if (index < line_out_count)
index = line_out_remap(private, index);
+ mutex_lock(&private->data_mutex);
+ if (private->mux_updated)
+ scarlett2_usb_get_mux(mixer);
ucontrol->value.enumerated.item[0] = private->mux[index];
+ mutex_unlock(&private->data_mutex);
+
return 0;
}