Lines Matching refs:private

2312 static void scarlett2_fill_request_header(struct scarlett2_data *private,  in scarlett2_fill_request_header()  argument
2317 u16 seq = private->scarlett2_seq++; in scarlett2_fill_request_header()
2349 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb() local
2368 mutex_lock(&private->usb_mutex); in scarlett2_usb()
2372 scarlett2_fill_request_header(private, req, cmd, req_size); in scarlett2_usb()
2377 err = scarlett2_usb_tx(dev, private->bInterfaceNumber, in scarlett2_usb()
2384 private->series_name, cmd, err); in scarlett2_usb()
2389 if (!wait_for_completion_timeout(&private->cmd_done, in scarlett2_usb()
2394 private->series_name, cmd); in scarlett2_usb()
2402 err = scarlett2_usb_rx(dev, private->bInterfaceNumber, in scarlett2_usb()
2422 private->series_name, cmd, err, resp_buf_size); in scarlett2_usb()
2441 private->series_name, in scarlett2_usb()
2455 mutex_unlock(&private->usb_mutex); in scarlett2_usb()
2482 struct scarlett2_data *private, int config_item_num) in scarlett2_has_config_item() argument
2484 return !!private->config_set->items[config_item_num].offset; in scarlett2_has_config_item()
2492 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_get_config() local
2494 &private->config_set->items[config_item_num]; in scarlett2_usb_get_config()
2549 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_data() local
2559 return scarlett2_usb(private->mixer, SCARLETT2_USB_SET_DATA, in scarlett2_usb_set_data()
2572 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_data_buf() local
2604 err = scarlett2_usb(private->mixer, SCARLETT2_USB_SET_DATA, in scarlett2_usb_set_data_buf()
2632 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_config() local
2633 const struct scarlett2_config_set *config_set = private->config_set; in scarlett2_usb_set_config()
2672 cancel_delayed_work_sync(&private->work); in scarlett2_usb_set_config()
2720 schedule_delayed_work(&private->work, msecs_to_jiffies(2000)); in scarlett2_usb_set_config()
2732 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_config_buf() local
2733 const struct scarlett2_config_set *config_set = private->config_set; in scarlett2_usb_set_config_buf()
2779 struct scarlett2_data *private = in scarlett2_config_save_work() local
2782 scarlett2_config_save(private->mixer); in scarlett2_config_save_work()
2803 static int scarlett2_has_mixer(struct scarlett2_data *private) in scarlett2_has_mixer() argument
2805 return !!private->info->mux_assignment[0][0].count; in scarlett2_has_mixer()
2827 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_get_mix() local
2829 int num_mixer_in = private->num_mix_in; in scarlett2_usb_get_mix()
2849 private->mix[j] = scarlett2_mixer_value_to_db( in scarlett2_usb_get_mix()
2861 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_mix() local
2869 int num_mixer_in = private->num_mix_in; in scarlett2_usb_set_mix()
2875 scarlett2_mixer_values[private->mix[j]] in scarlett2_usb_set_mix()
2924 static void scarlett2_usb_populate_mux(struct scarlett2_data *private, in scarlett2_usb_populate_mux() argument
2927 const struct scarlett2_device_info *info = private->info; in scarlett2_usb_populate_mux()
2937 if (dst_idx >= private->num_mux_dsts) { in scarlett2_usb_populate_mux()
2938 usb_audio_err(private->mixer->chip, in scarlett2_usb_populate_mux()
2940 mux_entry, dst_idx, private->num_mux_dsts); in scarlett2_usb_populate_mux()
2949 if (src_idx >= private->num_mux_srcs) { in scarlett2_usb_populate_mux()
2950 usb_audio_err(private->mixer->chip, in scarlett2_usb_populate_mux()
2952 mux_entry, src_idx, private->num_mux_srcs); in scarlett2_usb_populate_mux()
2956 private->mux[dst_idx] = src_idx; in scarlett2_usb_populate_mux()
2977 static void scarlett2_update_meter_level_map(struct scarlett2_data *private) in scarlett2_update_meter_level_map() argument
2979 const struct scarlett2_device_info *info = private->info; in scarlett2_update_meter_level_map()
3008 mux_idx < private->num_line_out in scarlett2_update_meter_level_map()
3017 int mux_src = private->mux[mux_idx]; in scarlett2_update_meter_level_map()
3023 private->meter_level_map[map_mux_idx] = in scarlett2_update_meter_level_map()
3032 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_get_mux() local
3033 int count = private->num_mux_dsts; in scarlett2_usb_get_mux()
3043 private->mux_updated = 0; in scarlett2_usb_get_mux()
3055 scarlett2_usb_populate_mux(private, le32_to_cpu(data[i])); in scarlett2_usb_get_mux()
3057 scarlett2_update_meter_level_map(private); in scarlett2_usb_get_mux()
3065 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_mux() local
3066 const struct scarlett2_device_info *info = private->info; in scarlett2_usb_set_mux()
3111 port_count, private->mux[mux_idx++]); in scarlett2_usb_set_mux()
3125 scarlett2_update_meter_level_map(private); in scarlett2_usb_set_mux()
3218 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_firmware_version_ctl_get() local
3220 ucontrol->value.integer.value[0] = private->firmware_version; in scarlett2_firmware_version_ctl_get()
3257 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_min_firmware_version_ctl_get() local
3259 ucontrol->value.integer.value[0] = private->info->min_firmware_version; in scarlett2_min_firmware_version_ctl_get()
3296 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_sync() local
3298 private->sync_updated = 0; in scarlett2_update_sync()
3299 return scarlett2_usb_get_sync_status(mixer, &private->sync); in scarlett2_update_sync()
3316 struct scarlett2_data *private = mixer->private_data; in scarlett2_sync_ctl_get() local
3319 mutex_lock(&private->data_mutex); in scarlett2_sync_ctl_get()
3321 if (private->hwdep_in_use) { in scarlett2_sync_ctl_get()
3326 if (private->sync_updated) { in scarlett2_sync_ctl_get()
3331 ucontrol->value.enumerated.item[0] = private->sync; in scarlett2_sync_ctl_get()
3334 mutex_unlock(&private->data_mutex); in scarlett2_sync_ctl_get()
3348 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_sync_ctl() local
3351 if (!scarlett2_has_mixer(private)) in scarlett2_add_sync_ctl()
3355 0, 1, "Sync Status", &private->sync_ctl); in scarlett2_add_sync_ctl()
3376 static int scarlett2_autogain_is_running(struct scarlett2_data *private) in scarlett2_autogain_is_running() argument
3381 for (i = 0; i < private->info->gain_input_count; i++) in scarlett2_autogain_is_running()
3382 if (!private->autogain_status[i]) in scarlett2_autogain_is_running()
3390 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_autogain() local
3391 const struct scarlett2_device_info *info = private->info; in scarlett2_update_autogain()
3396 private->autogain_updated = 0; in scarlett2_update_autogain()
3403 info->gain_input_count, private->autogain_switch); in scarlett2_update_autogain()
3423 if (private->autogain_switch[i]) in scarlett2_update_autogain()
3424 private->autogain_status[i] = 0; in scarlett2_update_autogain()
3426 private->num_autogain_status_texts - 1) in scarlett2_update_autogain()
3427 private->autogain_status[i] = in scarlett2_update_autogain()
3430 private->autogain_status[i] = in scarlett2_update_autogain()
3431 private->num_autogain_status_texts - 1; in scarlett2_update_autogain()
3435 if (scarlett2_has_config_item(private, in scarlett2_update_autogain()
3446 private->ag_targets[i] = -ag_target_values[i]; in scarlett2_update_autogain()
3454 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_update_access() local
3455 const struct scarlett2_device_info *info = private->info; in scarlett2_autogain_update_access()
3456 int val = !scarlett2_autogain_is_running(private); in scarlett2_autogain_update_access()
3459 if (scarlett2_has_config_item(private, in scarlett2_autogain_update_access()
3461 scarlett2_set_ctl_access(private->input_select_ctl, val); in scarlett2_autogain_update_access()
3462 if (scarlett2_has_config_item(private, in scarlett2_autogain_update_access()
3465 scarlett2_set_ctl_access(private->input_link_ctls[i], in scarlett2_autogain_update_access()
3468 scarlett2_set_ctl_access(private->input_gain_ctls[i], val); in scarlett2_autogain_update_access()
3470 scarlett2_set_ctl_access(private->safe_ctls[i], val); in scarlett2_autogain_update_access()
3472 scarlett2_set_ctl_access(private->level_ctls[i], val); in scarlett2_autogain_update_access()
3474 scarlett2_set_ctl_access(private->air_ctls[i], val); in scarlett2_autogain_update_access()
3476 scarlett2_set_ctl_access(private->input_mute_ctls[i], val); in scarlett2_autogain_update_access()
3478 scarlett2_set_ctl_access(private->phantom_ctls[i], val); in scarlett2_autogain_update_access()
3480 scarlett2_set_ctl_access(private->dsp_ctls[i], val); in scarlett2_autogain_update_access()
3483 if (scarlett2_has_config_item(private, in scarlett2_autogain_update_access()
3486 private->ag_target_ctls[i], val); in scarlett2_autogain_update_access()
3495 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_notify_access() local
3496 const struct scarlett2_device_info *info = private->info; in scarlett2_autogain_notify_access()
3499 if (scarlett2_has_config_item(private, in scarlett2_autogain_notify_access()
3502 &private->input_select_ctl->id); in scarlett2_autogain_notify_access()
3503 if (scarlett2_has_config_item(private, in scarlett2_autogain_notify_access()
3507 &private->input_link_ctls[i]->id); in scarlett2_autogain_notify_access()
3510 &private->input_gain_ctls[i]->id); in scarlett2_autogain_notify_access()
3513 &private->safe_ctls[i]->id); in scarlett2_autogain_notify_access()
3516 &private->level_ctls[i]->id); in scarlett2_autogain_notify_access()
3519 &private->air_ctls[i]->id); in scarlett2_autogain_notify_access()
3522 &private->dsp_ctls[i]->id); in scarlett2_autogain_notify_access()
3525 &private->input_mute_ctls[i]->id); in scarlett2_autogain_notify_access()
3528 &private->phantom_ctls[i]->id); in scarlett2_autogain_notify_access()
3531 if (scarlett2_has_config_item(private, in scarlett2_autogain_notify_access()
3534 &private->ag_target_ctls[i]->id); in scarlett2_autogain_notify_access()
3543 struct scarlett2_data *private = mixer->private_data; in scarlett2_check_autogain_updated() local
3546 if (!private->autogain_updated) in scarlett2_check_autogain_updated()
3582 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_switch_ctl_info() local
3585 mutex_lock(&private->data_mutex); in scarlett2_autogain_switch_ctl_info()
3594 mutex_unlock(&private->data_mutex); in scarlett2_autogain_switch_ctl_info()
3603 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_switch_ctl_get() local
3606 mutex_lock(&private->data_mutex); in scarlett2_autogain_switch_ctl_get()
3608 if (private->hwdep_in_use) { in scarlett2_autogain_switch_ctl_get()
3618 private->autogain_switch[elem->control]; in scarlett2_autogain_switch_ctl_get()
3621 mutex_unlock(&private->data_mutex); in scarlett2_autogain_switch_ctl_get()
3630 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_status_ctl_get() local
3633 mutex_lock(&private->data_mutex); in scarlett2_autogain_status_ctl_get()
3635 if (private->hwdep_in_use) { in scarlett2_autogain_status_ctl_get()
3645 private->autogain_status[elem->control]; in scarlett2_autogain_status_ctl_get()
3648 mutex_unlock(&private->data_mutex); in scarlett2_autogain_status_ctl_get()
3657 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_switch_ctl_put() local
3662 mutex_lock(&private->data_mutex); in scarlett2_autogain_switch_ctl_put()
3664 if (private->hwdep_in_use) { in scarlett2_autogain_switch_ctl_put()
3673 if (scarlett2_phantom_is_switching(private, index)) { in scarlett2_autogain_switch_ctl_put()
3678 oval = private->autogain_switch[index]; in scarlett2_autogain_switch_ctl_put()
3684 private->autogain_switch[index] = val; in scarlett2_autogain_switch_ctl_put()
3696 mutex_unlock(&private->data_mutex); in scarlett2_autogain_switch_ctl_put()
3704 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_autogain_status_ctl_info() local
3708 private->num_autogain_status_texts, in scarlett2_autogain_status_ctl_info()
3709 private->config_set->autogain_status_texts); in scarlett2_autogain_status_ctl_info()
3735 struct scarlett2_data *private = mixer->private_data; in scarlett2_ag_target_ctl_info() local
3738 mutex_lock(&private->data_mutex); in scarlett2_ag_target_ctl_info()
3740 if (private->hwdep_in_use) { in scarlett2_ag_target_ctl_info()
3756 mutex_unlock(&private->data_mutex); in scarlett2_ag_target_ctl_info()
3765 struct scarlett2_data *private = mixer->private_data; in scarlett2_ag_target_ctl_get() local
3768 mutex_lock(&private->data_mutex); in scarlett2_ag_target_ctl_get()
3770 if (private->hwdep_in_use) { in scarlett2_ag_target_ctl_get()
3775 if (private->autogain_updated) { in scarlett2_ag_target_ctl_get()
3781 ucontrol->value.integer.value[0] = private->ag_targets[elem->control]; in scarlett2_ag_target_ctl_get()
3784 mutex_unlock(&private->data_mutex); in scarlett2_ag_target_ctl_get()
3793 struct scarlett2_data *private = mixer->private_data; in scarlett2_ag_target_ctl_put() local
3798 mutex_lock(&private->data_mutex); in scarlett2_ag_target_ctl_put()
3800 if (private->hwdep_in_use) { in scarlett2_ag_target_ctl_put()
3809 oval = private->ag_targets[index]; in scarlett2_ag_target_ctl_put()
3816 private->ag_targets[index] = val; in scarlett2_ag_target_ctl_put()
3825 mutex_unlock(&private->data_mutex); in scarlett2_ag_target_ctl_put()
3848 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_select() local
3849 const struct scarlett2_device_info *info = private->info; in scarlett2_update_input_select()
3853 private->input_select_updated = 0; in scarlett2_update_input_select()
3855 if (!scarlett2_has_config_item(private, in scarlett2_update_input_select()
3862 1, &private->input_select_switch); in scarlett2_update_input_select()
3868 link_count, private->input_link_switch); in scarlett2_update_input_select()
3880 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_select_ctl_get() local
3883 mutex_lock(&private->data_mutex); in scarlett2_input_select_ctl_get()
3885 if (private->hwdep_in_use) { in scarlett2_input_select_ctl_get()
3890 if (private->input_select_updated) { in scarlett2_input_select_ctl_get()
3895 ucontrol->value.enumerated.item[0] = private->input_select_switch; in scarlett2_input_select_ctl_get()
3898 mutex_unlock(&private->data_mutex); in scarlett2_input_select_ctl_get()
3907 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_select_ctl_put() local
3908 const struct scarlett2_device_info *info = private->info; in scarlett2_input_select_ctl_put()
3912 mutex_lock(&private->data_mutex); in scarlett2_input_select_ctl_put()
3914 if (private->hwdep_in_use) { in scarlett2_input_select_ctl_put()
3923 oval = private->input_select_switch; in scarlett2_input_select_ctl_put()
3934 private->input_select_switch = val; in scarlett2_input_select_ctl_put()
3944 mutex_unlock(&private->data_mutex); in scarlett2_input_select_ctl_put()
3953 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_select_ctl_info() local
3955 int inputs = private->info->gain_input_count; in scarlett2_input_select_ctl_info()
3962 mutex_lock(&private->data_mutex); in scarlett2_input_select_ctl_info()
3964 if (private->hwdep_in_use) { in scarlett2_input_select_ctl_info()
3981 mutex_unlock(&private->data_mutex); in scarlett2_input_select_ctl_info()
4008 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_disables_ctl_info() local
4011 mutex_lock(&private->data_mutex); in scarlett2_autogain_disables_ctl_info()
4013 if (private->hwdep_in_use) { in scarlett2_autogain_disables_ctl_info()
4025 mutex_unlock(&private->data_mutex); in scarlett2_autogain_disables_ctl_info()
4034 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_link_ctl_get() local
4037 mutex_lock(&private->data_mutex); in scarlett2_input_link_ctl_get()
4039 if (private->hwdep_in_use) { in scarlett2_input_link_ctl_get()
4044 if (private->input_select_updated) { in scarlett2_input_link_ctl_get()
4050 private->input_link_switch[elem->control]; in scarlett2_input_link_ctl_get()
4053 mutex_unlock(&private->data_mutex); in scarlett2_input_link_ctl_get()
4062 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_link_ctl_put() local
4067 mutex_lock(&private->data_mutex); in scarlett2_input_link_ctl_put()
4069 if (private->hwdep_in_use) { in scarlett2_input_link_ctl_put()
4078 oval = private->input_link_switch[index]; in scarlett2_input_link_ctl_put()
4084 private->input_link_switch[index] = val; in scarlett2_input_link_ctl_put()
4092 mutex_unlock(&private->data_mutex); in scarlett2_input_link_ctl_put()
4108 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_gain() local
4109 const struct scarlett2_device_info *info = private->info; in scarlett2_update_input_gain()
4111 private->input_gain_updated = 0; in scarlett2_update_input_gain()
4118 info->gain_input_count, private->gain); in scarlett2_update_input_gain()
4126 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_gain_ctl_info() local
4129 mutex_lock(&private->data_mutex); in scarlett2_input_gain_ctl_info()
4131 if (private->hwdep_in_use) { in scarlett2_input_gain_ctl_info()
4147 mutex_unlock(&private->data_mutex); in scarlett2_input_gain_ctl_info()
4156 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_gain_ctl_get() local
4159 mutex_lock(&private->data_mutex); in scarlett2_input_gain_ctl_get()
4161 if (private->hwdep_in_use) { in scarlett2_input_gain_ctl_get()
4166 if (private->input_gain_updated) { in scarlett2_input_gain_ctl_get()
4172 private->gain[elem->control]; in scarlett2_input_gain_ctl_get()
4175 mutex_unlock(&private->data_mutex); in scarlett2_input_gain_ctl_get()
4184 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_gain_ctl_put() local
4189 mutex_lock(&private->data_mutex); in scarlett2_input_gain_ctl_put()
4191 if (private->hwdep_in_use) { in scarlett2_input_gain_ctl_put()
4200 oval = private->gain[index]; in scarlett2_input_gain_ctl_put()
4206 private->gain[index] = val; in scarlett2_input_gain_ctl_put()
4215 mutex_unlock(&private->data_mutex); in scarlett2_input_gain_ctl_put()
4234 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_safe() local
4235 const struct scarlett2_device_info *info = private->info; in scarlett2_update_input_safe()
4237 private->input_safe_updated = 0; in scarlett2_update_input_safe()
4244 info->safe_input_count, private->safe_switch); in scarlett2_update_input_safe()
4252 struct scarlett2_data *private = mixer->private_data; in scarlett2_safe_ctl_get() local
4255 mutex_lock(&private->data_mutex); in scarlett2_safe_ctl_get()
4257 if (private->hwdep_in_use) { in scarlett2_safe_ctl_get()
4262 if (private->input_safe_updated) { in scarlett2_safe_ctl_get()
4268 private->safe_switch[elem->control]; in scarlett2_safe_ctl_get()
4271 mutex_unlock(&private->data_mutex); in scarlett2_safe_ctl_get()
4280 struct scarlett2_data *private = mixer->private_data; in scarlett2_safe_ctl_put() local
4285 mutex_lock(&private->data_mutex); in scarlett2_safe_ctl_put()
4287 if (private->hwdep_in_use) { in scarlett2_safe_ctl_put()
4296 oval = private->safe_switch[index]; in scarlett2_safe_ctl_put()
4302 private->safe_switch[index] = val; in scarlett2_safe_ctl_put()
4311 mutex_unlock(&private->data_mutex); in scarlett2_safe_ctl_put()
4327 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_pcm_input_switch() local
4330 private->pcm_input_switch_updated = 0; in scarlett2_update_pcm_input_switch()
4334 1, &private->pcm_input_switch); in scarlett2_update_pcm_input_switch()
4346 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_pcm_input_switch_ctl_get() local
4349 mutex_lock(&private->data_mutex); in scarlett2_pcm_input_switch_ctl_get()
4351 if (private->pcm_input_switch_updated) { in scarlett2_pcm_input_switch_ctl_get()
4356 ucontrol->value.enumerated.item[0] = private->pcm_input_switch; in scarlett2_pcm_input_switch_ctl_get()
4359 mutex_unlock(&private->data_mutex); in scarlett2_pcm_input_switch_ctl_get()
4368 struct scarlett2_data *private = mixer->private_data; in scarlett2_pcm_input_switch_ctl_put() local
4372 mutex_lock(&private->data_mutex); in scarlett2_pcm_input_switch_ctl_put()
4374 if (private->hwdep_in_use) { in scarlett2_pcm_input_switch_ctl_put()
4379 oval = private->pcm_input_switch; in scarlett2_pcm_input_switch_ctl_put()
4385 private->pcm_input_switch = val; in scarlett2_pcm_input_switch_ctl_put()
4395 mutex_unlock(&private->data_mutex); in scarlett2_pcm_input_switch_ctl_put()
4425 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_volumes() local
4429 private->vol_updated = 0; in scarlett2_update_volumes()
4431 if (scarlett2_has_config_item(private, in scarlett2_update_volumes()
4439 private->master_vol = clamp(vol + SCARLETT2_VOLUME_BIAS, in scarlett2_update_volumes()
4442 if (scarlett2_has_config_item(private, in scarlett2_update_volumes()
4444 for (i = 0; i < private->num_line_out; i++) in scarlett2_update_volumes()
4445 if (private->vol_sw_hw_switch[i]) in scarlett2_update_volumes()
4446 private->vol[i] = private->master_vol; in scarlett2_update_volumes()
4449 if (scarlett2_has_config_item(private, in scarlett2_update_volumes()
4457 private->headphone_vol = clamp(vol + SCARLETT2_VOLUME_BIAS, in scarlett2_update_volumes()
4482 struct scarlett2_data *private = mixer->private_data; in scarlett2_master_volume_ctl_get() local
4485 mutex_lock(&private->data_mutex); in scarlett2_master_volume_ctl_get()
4487 if (private->hwdep_in_use) { in scarlett2_master_volume_ctl_get()
4492 if (private->vol_updated) { in scarlett2_master_volume_ctl_get()
4497 ucontrol->value.integer.value[0] = private->master_vol; in scarlett2_master_volume_ctl_get()
4500 mutex_unlock(&private->data_mutex); in scarlett2_master_volume_ctl_get()
4510 struct scarlett2_data *private = mixer->private_data; in scarlett2_headphone_volume_ctl_get() local
4513 mutex_lock(&private->data_mutex); in scarlett2_headphone_volume_ctl_get()
4515 if (private->hwdep_in_use) { in scarlett2_headphone_volume_ctl_get()
4520 if (private->vol_updated) { in scarlett2_headphone_volume_ctl_get()
4525 ucontrol->value.integer.value[0] = private->headphone_vol; in scarlett2_headphone_volume_ctl_get()
4528 mutex_unlock(&private->data_mutex); in scarlett2_headphone_volume_ctl_get()
4532 static int line_out_remap(struct scarlett2_data *private, int index) in line_out_remap() argument
4534 const struct scarlett2_device_info *info = private->info; in line_out_remap()
4539 if (index >= private->num_line_out) in line_out_remap()
4550 struct scarlett2_data *private = mixer->private_data; in scarlett2_volume_ctl_get() local
4551 int index = line_out_remap(private, elem->control); in scarlett2_volume_ctl_get()
4554 mutex_lock(&private->data_mutex); in scarlett2_volume_ctl_get()
4556 if (private->hwdep_in_use) { in scarlett2_volume_ctl_get()
4561 if (private->vol_updated) { in scarlett2_volume_ctl_get()
4566 ucontrol->value.integer.value[0] = private->vol[index]; in scarlett2_volume_ctl_get()
4569 mutex_unlock(&private->data_mutex); in scarlett2_volume_ctl_get()
4578 struct scarlett2_data *private = mixer->private_data; in scarlett2_volume_ctl_put() local
4579 int index = line_out_remap(private, elem->control); in scarlett2_volume_ctl_put()
4582 mutex_lock(&private->data_mutex); in scarlett2_volume_ctl_put()
4584 if (private->hwdep_in_use) { in scarlett2_volume_ctl_put()
4589 oval = private->vol[index]; in scarlett2_volume_ctl_put()
4595 private->vol[index] = val; in scarlett2_volume_ctl_put()
4602 mutex_unlock(&private->data_mutex); in scarlett2_volume_ctl_put()
4648 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_dim_mute() local
4652 private->dim_mute_updated = 0; in scarlett2_update_dim_mute()
4654 if (!scarlett2_has_config_item(private, SCARLETT2_CONFIG_SW_HW_SWITCH)) in scarlett2_update_dim_mute()
4659 SCARLETT2_DIM_MUTE_COUNT, private->dim_mute); in scarlett2_update_dim_mute()
4664 private->dim_mute[i] = !!private->dim_mute[i]; in scarlett2_update_dim_mute()
4666 mute = private->dim_mute[SCARLETT2_BUTTON_MUTE]; in scarlett2_update_dim_mute()
4668 for (i = 0; i < private->num_line_out; i++) in scarlett2_update_dim_mute()
4669 if (private->vol_sw_hw_switch[i]) in scarlett2_update_dim_mute()
4670 private->mute_switch[i] = mute; in scarlett2_update_dim_mute()
4680 struct scarlett2_data *private = mixer->private_data; in scarlett2_mute_ctl_get() local
4681 int index = line_out_remap(private, elem->control); in scarlett2_mute_ctl_get()
4684 mutex_lock(&private->data_mutex); in scarlett2_mute_ctl_get()
4686 if (private->hwdep_in_use) { in scarlett2_mute_ctl_get()
4691 if (private->dim_mute_updated) { in scarlett2_mute_ctl_get()
4696 ucontrol->value.integer.value[0] = private->mute_switch[index]; in scarlett2_mute_ctl_get()
4699 mutex_unlock(&private->data_mutex); in scarlett2_mute_ctl_get()
4708 struct scarlett2_data *private = mixer->private_data; in scarlett2_mute_ctl_put() local
4709 int index = line_out_remap(private, elem->control); in scarlett2_mute_ctl_put()
4712 mutex_lock(&private->data_mutex); in scarlett2_mute_ctl_put()
4714 if (private->hwdep_in_use) { in scarlett2_mute_ctl_put()
4719 oval = private->mute_switch[index]; in scarlett2_mute_ctl_put()
4725 private->mute_switch[index] = val; in scarlett2_mute_ctl_put()
4734 mutex_unlock(&private->data_mutex); in scarlett2_mute_ctl_put()
4748 static void scarlett2_sw_hw_ctl_ro(struct scarlett2_data *private, int index) in scarlett2_sw_hw_ctl_ro() argument
4750 private->sw_hw_ctls[index]->vd[0].access &= in scarlett2_sw_hw_ctl_ro()
4754 static void scarlett2_sw_hw_ctl_rw(struct scarlett2_data *private, int index) in scarlett2_sw_hw_ctl_rw() argument
4756 private->sw_hw_ctls[index]->vd[0].access |= in scarlett2_sw_hw_ctl_rw()
4774 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_sw_hw_enum_ctl_get() local
4775 int index = line_out_remap(private, elem->control); in scarlett2_sw_hw_enum_ctl_get()
4777 ucontrol->value.enumerated.item[0] = private->vol_sw_hw_switch[index]; in scarlett2_sw_hw_enum_ctl_get()
4784 struct scarlett2_data *private = mixer->private_data; in scarlett2_vol_ctl_set_writable() local
4789 private->vol_ctls[index]->vd[0].access |= in scarlett2_vol_ctl_set_writable()
4791 private->mute_ctls[index]->vd[0].access |= in scarlett2_vol_ctl_set_writable()
4794 private->vol_ctls[index]->vd[0].access &= in scarlett2_vol_ctl_set_writable()
4796 private->mute_ctls[index]->vd[0].access &= in scarlett2_vol_ctl_set_writable()
4803 &private->vol_ctls[index]->id); in scarlett2_vol_ctl_set_writable()
4806 &private->mute_ctls[index]->id); in scarlett2_vol_ctl_set_writable()
4812 struct scarlett2_data *private = mixer->private_data; in scarlett2_sw_hw_change() local
4813 int index = line_out_remap(private, ctl_index); in scarlett2_sw_hw_change()
4816 private->vol_sw_hw_switch[index] = val; in scarlett2_sw_hw_change()
4824 private->vol[index] = private->master_vol; in scarlett2_sw_hw_change()
4825 private->mute_switch[index] = private->dim_mute[SCARLETT2_BUTTON_MUTE]; in scarlett2_sw_hw_change()
4830 index, private->master_vol - SCARLETT2_VOLUME_BIAS); in scarlett2_sw_hw_change()
4837 index, private->dim_mute[SCARLETT2_BUTTON_MUTE]); in scarlett2_sw_hw_change()
4851 struct scarlett2_data *private = mixer->private_data; in scarlett2_sw_hw_enum_ctl_put() local
4853 int index = line_out_remap(private, ctl_index); in scarlett2_sw_hw_enum_ctl_put()
4856 mutex_lock(&private->data_mutex); in scarlett2_sw_hw_enum_ctl_put()
4858 if (private->hwdep_in_use) { in scarlett2_sw_hw_enum_ctl_put()
4863 oval = private->vol_sw_hw_switch[index]; in scarlett2_sw_hw_enum_ctl_put()
4874 mutex_unlock(&private->data_mutex); in scarlett2_sw_hw_enum_ctl_put()
4890 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_level() local
4891 const struct scarlett2_device_info *info = private->info; in scarlett2_update_input_level()
4893 private->input_level_updated = 0; in scarlett2_update_input_level()
4901 private->level_switch); in scarlett2_update_input_level()
4912 struct scarlett2_data *private = mixer->private_data; in scarlett2_level_enum_ctl_info() local
4915 mutex_lock(&private->data_mutex); in scarlett2_level_enum_ctl_info()
4917 if (private->hwdep_in_use) { in scarlett2_level_enum_ctl_info()
4929 mutex_unlock(&private->data_mutex); in scarlett2_level_enum_ctl_info()
4938 struct scarlett2_data *private = mixer->private_data; in scarlett2_level_enum_ctl_get() local
4939 const struct scarlett2_device_info *info = private->info; in scarlett2_level_enum_ctl_get()
4944 mutex_lock(&private->data_mutex); in scarlett2_level_enum_ctl_get()
4946 if (private->hwdep_in_use) { in scarlett2_level_enum_ctl_get()
4951 if (private->input_level_updated) { in scarlett2_level_enum_ctl_get()
4957 private->level_switch[index]); in scarlett2_level_enum_ctl_get()
4960 mutex_unlock(&private->data_mutex); in scarlett2_level_enum_ctl_get()
4969 struct scarlett2_data *private = mixer->private_data; in scarlett2_level_enum_ctl_put() local
4970 const struct scarlett2_device_info *info = private->info; in scarlett2_level_enum_ctl_put()
4975 mutex_lock(&private->data_mutex); in scarlett2_level_enum_ctl_put()
4977 if (private->hwdep_in_use) { in scarlett2_level_enum_ctl_put()
4986 oval = private->level_switch[index]; in scarlett2_level_enum_ctl_put()
4992 private->level_switch[index] = val; in scarlett2_level_enum_ctl_put()
4995 if (private->config_set->items[SCARLETT2_CONFIG_LEVEL_SWITCH].mute) in scarlett2_level_enum_ctl_put()
5005 mutex_unlock(&private->data_mutex); in scarlett2_level_enum_ctl_put()
5021 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_pad() local
5022 const struct scarlett2_device_info *info = private->info; in scarlett2_update_input_pad()
5024 private->input_pad_updated = 0; in scarlett2_update_input_pad()
5031 info->pad_input_count, private->pad_switch); in scarlett2_update_input_pad()
5039 struct scarlett2_data *private = mixer->private_data; in scarlett2_pad_ctl_get() local
5042 mutex_lock(&private->data_mutex); in scarlett2_pad_ctl_get()
5044 if (private->hwdep_in_use) { in scarlett2_pad_ctl_get()
5049 if (private->input_pad_updated) { in scarlett2_pad_ctl_get()
5055 private->pad_switch[elem->control]; in scarlett2_pad_ctl_get()
5058 mutex_unlock(&private->data_mutex); in scarlett2_pad_ctl_get()
5067 struct scarlett2_data *private = mixer->private_data; in scarlett2_pad_ctl_put() local
5072 mutex_lock(&private->data_mutex); in scarlett2_pad_ctl_put()
5074 if (private->hwdep_in_use) { in scarlett2_pad_ctl_put()
5079 oval = private->pad_switch[index]; in scarlett2_pad_ctl_put()
5085 private->pad_switch[index] = val; in scarlett2_pad_ctl_put()
5094 mutex_unlock(&private->data_mutex); in scarlett2_pad_ctl_put()
5110 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_air() local
5111 const struct scarlett2_device_info *info = private->info; in scarlett2_update_input_air()
5113 private->input_air_updated = 0; in scarlett2_update_input_air()
5120 info->air_input_count, private->air_switch); in scarlett2_update_input_air()
5128 struct scarlett2_data *private = mixer->private_data; in scarlett2_air_ctl_get() local
5131 mutex_lock(&private->data_mutex); in scarlett2_air_ctl_get()
5133 if (private->hwdep_in_use) { in scarlett2_air_ctl_get()
5138 if (private->input_air_updated) { in scarlett2_air_ctl_get()
5143 ucontrol->value.integer.value[0] = private->air_switch[elem->control]; in scarlett2_air_ctl_get()
5146 mutex_unlock(&private->data_mutex); in scarlett2_air_ctl_get()
5155 struct scarlett2_data *private = mixer->private_data; in scarlett2_air_ctl_put() local
5160 mutex_lock(&private->data_mutex); in scarlett2_air_ctl_put()
5162 if (private->hwdep_in_use) { in scarlett2_air_ctl_put()
5171 oval = private->air_switch[index]; in scarlett2_air_ctl_put()
5177 private->air_switch[index] = val; in scarlett2_air_ctl_put()
5186 mutex_unlock(&private->data_mutex); in scarlett2_air_ctl_put()
5198 struct scarlett2_data *private = mixer->private_data; in scarlett2_air_with_drive_ctl_info() local
5201 mutex_lock(&private->data_mutex); in scarlett2_air_with_drive_ctl_info()
5203 if (private->hwdep_in_use) { in scarlett2_air_with_drive_ctl_info()
5215 mutex_unlock(&private->data_mutex); in scarlett2_air_with_drive_ctl_info()
5240 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_dsp() local
5241 const struct scarlett2_device_info *info = private->info; in scarlett2_update_input_dsp()
5243 private->input_dsp_updated = 0; in scarlett2_update_input_dsp()
5250 info->dsp_input_count, private->dsp_switch); in scarlett2_update_input_dsp()
5258 struct scarlett2_data *private = mixer->private_data; in scarlett2_dsp_ctl_get() local
5261 mutex_lock(&private->data_mutex); in scarlett2_dsp_ctl_get()
5263 if (private->hwdep_in_use) { in scarlett2_dsp_ctl_get()
5268 if (private->input_dsp_updated) { in scarlett2_dsp_ctl_get()
5273 ucontrol->value.integer.value[0] = private->dsp_switch[elem->control]; in scarlett2_dsp_ctl_get()
5276 mutex_unlock(&private->data_mutex); in scarlett2_dsp_ctl_get()
5285 struct scarlett2_data *private = mixer->private_data; in scarlett2_dsp_ctl_put() local
5290 mutex_lock(&private->data_mutex); in scarlett2_dsp_ctl_put()
5292 if (private->hwdep_in_use) { in scarlett2_dsp_ctl_put()
5301 oval = private->dsp_switch[index]; in scarlett2_dsp_ctl_put()
5307 private->dsp_switch[index] = val; in scarlett2_dsp_ctl_put()
5316 mutex_unlock(&private->data_mutex); in scarlett2_dsp_ctl_put()
5332 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_compressor_values() local
5333 const struct scarlett2_device_info *info = private->info; in scarlett2_update_compressor_values()
5342 private->compressor_values); in scarlett2_update_compressor_values()
5352 int val = private->compressor_values[idx]; in scarlett2_update_compressor_values()
5356 private->compressor_values[idx] = val; in scarlett2_update_compressor_values()
5367 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_compressor_ctl_get() local
5370 private->compressor_values[elem->control]; in scarlett2_compressor_ctl_get()
5379 struct scarlett2_data *private = mixer->private_data; in scarlett2_compressor_ctl_put() local
5389 mutex_lock(&private->data_mutex); in scarlett2_compressor_ctl_put()
5391 if (private->hwdep_in_use) { in scarlett2_compressor_ctl_put()
5400 oval = private->compressor_values[index]; in scarlett2_compressor_ctl_put()
5405 private->compressor_values[index] = val; in scarlett2_compressor_ctl_put()
5416 mixer, private->config_set->param_buf_addr + 1, 1, channel); in scarlett2_compressor_ctl_put()
5429 mutex_unlock(&private->data_mutex); in scarlett2_compressor_ctl_put()
5461 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_precomp_flt_switch_ctl_get() local
5463 ucontrol->value.integer.value[0] = private->precomp_flt_switch[elem->control]; in scarlett2_precomp_flt_switch_ctl_get()
5472 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_peq_flt_switch_ctl_get() local
5475 private->peq_flt_switch[elem->control]; in scarlett2_peq_flt_switch_ctl_get()
5485 struct scarlett2_data *private = mixer->private_data; in scarlett2_precomp_flt_switch_ctl_put() local
5488 mutex_lock(&private->data_mutex); in scarlett2_precomp_flt_switch_ctl_put()
5490 if (private->hwdep_in_use) { in scarlett2_precomp_flt_switch_ctl_put()
5495 oval = private->precomp_flt_switch[elem->control]; in scarlett2_precomp_flt_switch_ctl_put()
5501 private->precomp_flt_switch[elem->control] = val; in scarlett2_precomp_flt_switch_ctl_put()
5511 mutex_unlock(&private->data_mutex); in scarlett2_precomp_flt_switch_ctl_put()
5520 struct scarlett2_data *private = mixer->private_data; in scarlett2_peq_flt_switch_ctl_put() local
5523 mutex_lock(&private->data_mutex); in scarlett2_peq_flt_switch_ctl_put()
5525 if (private->hwdep_in_use) { in scarlett2_peq_flt_switch_ctl_put()
5530 oval = private->peq_flt_switch[elem->control]; in scarlett2_peq_flt_switch_ctl_put()
5536 private->peq_flt_switch[elem->control] = val; in scarlett2_peq_flt_switch_ctl_put()
5546 mutex_unlock(&private->data_mutex); in scarlett2_peq_flt_switch_ctl_put()
5568 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_filter_values() local
5569 const struct scarlett2_device_info *info = private->info; in scarlett2_update_filter_values()
5581 info->dsp_input_count, private->precomp_flt_switch); in scarlett2_update_filter_values()
5588 private->peq_flt_switch); in scarlett2_update_filter_values()
5598 private->precomp_flt_values); in scarlett2_update_filter_values()
5623 private->peq_flt_values[dst_idx] = in scarlett2_update_filter_values()
5634 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_precomp_flt_ctl_get() local
5641 private->precomp_flt_values[idx]; in scarlett2_precomp_flt_ctl_get()
5650 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_peq_flt_ctl_get() local
5657 private->peq_flt_values[idx]; in scarlett2_peq_flt_ctl_get()
5667 struct scarlett2_data *private = mixer->private_data; in scarlett2_precomp_flt_ctl_put() local
5672 mutex_lock(&private->data_mutex); in scarlett2_precomp_flt_ctl_put()
5674 if (private->hwdep_in_use) { in scarlett2_precomp_flt_ctl_put()
5685 oval = private->precomp_flt_values[index + i]; in scarlett2_precomp_flt_ctl_put()
5696 private->precomp_flt_values[index + i] = in scarlett2_precomp_flt_ctl_put()
5701 mixer, private->config_set->param_buf_addr, 1, index); in scarlett2_precomp_flt_ctl_put()
5708 &private->precomp_flt_values[index]); in scarlett2_precomp_flt_ctl_put()
5714 mutex_unlock(&private->data_mutex); in scarlett2_precomp_flt_ctl_put()
5723 struct scarlett2_data *private = mixer->private_data; in scarlett2_peq_flt_ctl_put() local
5724 const struct scarlett2_device_info *info = private->info; in scarlett2_peq_flt_ctl_put()
5735 mutex_lock(&private->data_mutex); in scarlett2_peq_flt_ctl_put()
5737 if (private->hwdep_in_use) { in scarlett2_peq_flt_ctl_put()
5748 oval = private->peq_flt_values[src_index + i]; in scarlett2_peq_flt_ctl_put()
5759 private->peq_flt_values[src_index + i] = in scarlett2_peq_flt_ctl_put()
5764 mixer, private->config_set->param_buf_addr, 1, dst_index); in scarlett2_peq_flt_ctl_put()
5771 &private->peq_flt_values[src_index]); in scarlett2_peq_flt_ctl_put()
5777 mutex_unlock(&private->data_mutex); in scarlett2_peq_flt_ctl_put()
5812 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_mute() local
5813 const struct scarlett2_device_info *info = private->info; in scarlett2_update_input_mute()
5815 private->input_mute_updated = 0; in scarlett2_update_input_mute()
5822 info->mute_input_count, private->input_mute_switch); in scarlett2_update_input_mute()
5830 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_mute_ctl_get() local
5833 mutex_lock(&private->data_mutex); in scarlett2_input_mute_ctl_get()
5835 if (private->hwdep_in_use) { in scarlett2_input_mute_ctl_get()
5840 if (private->input_mute_updated) { in scarlett2_input_mute_ctl_get()
5846 private->input_mute_switch[elem->control]; in scarlett2_input_mute_ctl_get()
5849 mutex_unlock(&private->data_mutex); in scarlett2_input_mute_ctl_get()
5858 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_mute_ctl_put() local
5863 mutex_lock(&private->data_mutex); in scarlett2_input_mute_ctl_put()
5865 if (private->hwdep_in_use) { in scarlett2_input_mute_ctl_put()
5874 oval = private->input_mute_switch[index]; in scarlett2_input_mute_ctl_put()
5880 private->input_mute_switch[index] = val; in scarlett2_input_mute_ctl_put()
5890 mutex_unlock(&private->data_mutex); in scarlett2_input_mute_ctl_put()
5906 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_phantom() local
5907 const struct scarlett2_device_info *info = private->info; in scarlett2_update_input_phantom()
5910 private->input_phantom_updated = 0; in scarlett2_update_input_phantom()
5917 info->phantom_count, private->phantom_switch); in scarlett2_update_input_phantom()
5921 if (scarlett2_has_config_item(private, in scarlett2_update_input_phantom()
5925 1, &private->phantom_persistence); in scarlett2_update_input_phantom()
5935 struct scarlett2_data *private, int line_num) in scarlett2_phantom_is_switching() argument
5937 const struct scarlett2_device_info *info = private->info; in scarlett2_phantom_is_switching()
5940 return !!(private->phantom_switch[index] & 0x02); in scarlett2_phantom_is_switching()
5946 struct scarlett2_data *private = mixer->private_data; in scarlett2_phantom_update_access() local
5947 const struct scarlett2_device_info *info = private->info; in scarlett2_phantom_update_access()
5952 int val = !scarlett2_phantom_is_switching(private, i); in scarlett2_phantom_update_access()
5954 scarlett2_set_ctl_access(private->autogain_ctls[i], val); in scarlett2_phantom_update_access()
5964 struct scarlett2_data *private = mixer->private_data; in scarlett2_phantom_notify_access() local
5965 const struct scarlett2_device_info *info = private->info; in scarlett2_phantom_notify_access()
5970 &private->autogain_ctls[i]->id); in scarlett2_phantom_notify_access()
5979 struct scarlett2_data *private = mixer->private_data; in scarlett2_check_input_phantom_updated() local
5982 if (!private->input_phantom_updated) in scarlett2_check_input_phantom_updated()
5999 struct scarlett2_data *private = mixer->private_data; in scarlett2_phantom_ctl_get() local
6002 mutex_lock(&private->data_mutex); in scarlett2_phantom_ctl_get()
6004 if (private->hwdep_in_use) { in scarlett2_phantom_ctl_get()
6014 private->phantom_switch[elem->control]); in scarlett2_phantom_ctl_get()
6017 mutex_unlock(&private->data_mutex); in scarlett2_phantom_ctl_get()
6026 struct scarlett2_data *private = mixer->private_data; in scarlett2_phantom_ctl_put() local
6027 const struct scarlett2_device_info *info = private->info; in scarlett2_phantom_ctl_put()
6032 mutex_lock(&private->data_mutex); in scarlett2_phantom_ctl_put()
6034 if (private->hwdep_in_use) { in scarlett2_phantom_ctl_put()
6043 oval = private->phantom_switch[index]; in scarlett2_phantom_ctl_put()
6049 private->phantom_switch[index] = val; in scarlett2_phantom_ctl_put()
6052 if (private->config_set->items[SCARLETT2_CONFIG_PHANTOM_SWITCH].mute) in scarlett2_phantom_ctl_put()
6065 mutex_unlock(&private->data_mutex); in scarlett2_phantom_ctl_put()
6083 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_phantom_persistence_ctl_get() local
6085 ucontrol->value.integer.value[0] = private->phantom_persistence; in scarlett2_phantom_persistence_ctl_get()
6094 struct scarlett2_data *private = mixer->private_data; in scarlett2_phantom_persistence_ctl_put() local
6099 mutex_lock(&private->data_mutex); in scarlett2_phantom_persistence_ctl_put()
6101 if (private->hwdep_in_use) { in scarlett2_phantom_persistence_ctl_put()
6106 oval = private->phantom_persistence; in scarlett2_phantom_persistence_ctl_put()
6112 private->phantom_persistence = val; in scarlett2_phantom_persistence_ctl_put()
6121 mutex_unlock(&private->data_mutex); in scarlett2_phantom_persistence_ctl_put()
6137 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_monitor_other() local
6138 const struct scarlett2_device_info *info = private->info; in scarlett2_update_monitor_other()
6151 private->monitor_other_updated = 0; in scarlett2_update_monitor_other()
6172 private->speaker_switching_switch = 0; in scarlett2_update_monitor_other()
6174 private->speaker_switching_switch = monitor_other_switch[0] + 1; in scarlett2_update_monitor_other()
6181 private->talkback_switch = 0; in scarlett2_update_monitor_other()
6183 private->talkback_switch = monitor_other_switch[1] + 1; in scarlett2_update_monitor_other()
6190 for (i = 0; i < private->num_mix_out; i++, bitmap >>= 1) in scarlett2_update_monitor_other()
6191 private->talkback_map[i] = bitmap & 1; in scarlett2_update_monitor_other()
6212 struct scarlett2_data *private = mixer->private_data; in scarlett2_speaker_switch_enum_ctl_get() local
6215 mutex_lock(&private->data_mutex); in scarlett2_speaker_switch_enum_ctl_get()
6217 if (private->hwdep_in_use) { in scarlett2_speaker_switch_enum_ctl_get()
6222 if (private->monitor_other_updated) { in scarlett2_speaker_switch_enum_ctl_get()
6227 ucontrol->value.enumerated.item[0] = private->speaker_switching_switch; in scarlett2_speaker_switch_enum_ctl_get()
6230 mutex_unlock(&private->data_mutex); in scarlett2_speaker_switch_enum_ctl_get()
6240 struct scarlett2_data *private = mixer->private_data; in scarlett2_speaker_switch_enable() local
6244 int index = line_out_remap(private, i); in scarlett2_speaker_switch_enable()
6247 if (!private->vol_sw_hw_switch[index]) { in scarlett2_speaker_switch_enable()
6248 err = scarlett2_sw_hw_change(private->mixer, i, 1); in scarlett2_speaker_switch_enable()
6254 scarlett2_sw_hw_ctl_ro(private, i); in scarlett2_speaker_switch_enable()
6258 &private->sw_hw_ctls[i]->id); in scarlett2_speaker_switch_enable()
6264 private->speaker_switching_switched = 1; in scarlett2_speaker_switch_enable()
6275 struct scarlett2_data *private = mixer->private_data; in scarlett2_speaker_switch_disable() local
6280 scarlett2_sw_hw_ctl_rw(private, i); in scarlett2_speaker_switch_disable()
6282 &private->sw_hw_ctls[i]->id); in scarlett2_speaker_switch_disable()
6288 private->speaker_switching_switched = 1; in scarlett2_speaker_switch_disable()
6296 struct scarlett2_data *private = mixer->private_data; in scarlett2_speaker_switch_enum_ctl_put() local
6300 mutex_lock(&private->data_mutex); in scarlett2_speaker_switch_enum_ctl_put()
6302 if (private->hwdep_in_use) { in scarlett2_speaker_switch_enum_ctl_put()
6307 oval = private->speaker_switching_switch; in scarlett2_speaker_switch_enum_ctl_put()
6313 private->speaker_switching_switch = val; in scarlett2_speaker_switch_enum_ctl_put()
6339 mutex_unlock(&private->data_mutex); in scarlett2_speaker_switch_enum_ctl_put()
6353 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_speaker_switch_ctl() local
6354 const struct scarlett2_device_info *info = private->info; in scarlett2_add_speaker_switch_ctl()
6362 &private->speaker_switching_ctl); in scarlett2_add_speaker_switch_ctl()
6382 struct scarlett2_data *private = mixer->private_data; in scarlett2_talkback_enum_ctl_get() local
6385 mutex_lock(&private->data_mutex); in scarlett2_talkback_enum_ctl_get()
6387 if (private->hwdep_in_use) { in scarlett2_talkback_enum_ctl_get()
6392 if (private->monitor_other_updated) { in scarlett2_talkback_enum_ctl_get()
6397 ucontrol->value.enumerated.item[0] = private->talkback_switch; in scarlett2_talkback_enum_ctl_get()
6400 mutex_unlock(&private->data_mutex); in scarlett2_talkback_enum_ctl_get()
6409 struct scarlett2_data *private = mixer->private_data; in scarlett2_talkback_enum_ctl_put() local
6413 mutex_lock(&private->data_mutex); in scarlett2_talkback_enum_ctl_put()
6415 if (private->hwdep_in_use) { in scarlett2_talkback_enum_ctl_put()
6420 oval = private->talkback_switch; in scarlett2_talkback_enum_ctl_put()
6426 private->talkback_switch = val; in scarlett2_talkback_enum_ctl_put()
6443 mutex_unlock(&private->data_mutex); in scarlett2_talkback_enum_ctl_put()
6460 struct scarlett2_data *private = mixer->private_data; in scarlett2_talkback_map_ctl_get() local
6463 ucontrol->value.integer.value[0] = private->talkback_map[index]; in scarlett2_talkback_map_ctl_get()
6473 struct scarlett2_data *private = mixer->private_data; in scarlett2_talkback_map_ctl_put() local
6478 mutex_lock(&private->data_mutex); in scarlett2_talkback_map_ctl_put()
6480 if (private->hwdep_in_use) { in scarlett2_talkback_map_ctl_put()
6485 oval = private->talkback_map[index]; in scarlett2_talkback_map_ctl_put()
6491 private->talkback_map[index] = val; in scarlett2_talkback_map_ctl_put()
6493 for (i = 0; i < private->num_mix_out; i++) in scarlett2_talkback_map_ctl_put()
6494 bitmap |= private->talkback_map[i] << i; in scarlett2_talkback_map_ctl_put()
6503 mutex_unlock(&private->data_mutex); in scarlett2_talkback_map_ctl_put()
6517 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_talkback_ctls() local
6518 const struct scarlett2_device_info *info = private->info; in scarlett2_add_talkback_ctls()
6528 &private->talkback_ctl); in scarlett2_add_talkback_ctls()
6532 for (i = 0; i < private->num_mix_out; i++) { in scarlett2_add_talkback_ctls()
6551 struct scarlett2_data *private = mixer->private_data; in scarlett2_dim_mute_ctl_get() local
6554 mutex_lock(&private->data_mutex); in scarlett2_dim_mute_ctl_get()
6556 if (private->hwdep_in_use) { in scarlett2_dim_mute_ctl_get()
6561 if (private->dim_mute_updated) { in scarlett2_dim_mute_ctl_get()
6566 ucontrol->value.integer.value[0] = private->dim_mute[elem->control]; in scarlett2_dim_mute_ctl_get()
6569 mutex_unlock(&private->data_mutex); in scarlett2_dim_mute_ctl_get()
6578 struct scarlett2_data *private = mixer->private_data; in scarlett2_dim_mute_ctl_put() local
6582 mutex_lock(&private->data_mutex); in scarlett2_dim_mute_ctl_put()
6584 if (private->hwdep_in_use) { in scarlett2_dim_mute_ctl_put()
6589 oval = private->dim_mute[index]; in scarlett2_dim_mute_ctl_put()
6595 private->dim_mute[index] = val; in scarlett2_dim_mute_ctl_put()
6604 for (i = 0; i < private->num_line_out; i++) { in scarlett2_dim_mute_ctl_put()
6605 int line_index = line_out_remap(private, i); in scarlett2_dim_mute_ctl_put()
6607 if (private->vol_sw_hw_switch[line_index]) { in scarlett2_dim_mute_ctl_put()
6608 private->mute_switch[line_index] = val; in scarlett2_dim_mute_ctl_put()
6611 &private->mute_ctls[i]->id); in scarlett2_dim_mute_ctl_put()
6616 mutex_unlock(&private->data_mutex); in scarlett2_dim_mute_ctl_put()
6632 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_line_out_ctls() local
6633 const struct scarlett2_device_info *info = private->info; in scarlett2_add_line_out_ctls()
6638 if (scarlett2_has_config_item(private, in scarlett2_add_line_out_ctls()
6643 0, 1, s, &private->master_vol_ctl); in scarlett2_add_line_out_ctls()
6649 if (scarlett2_has_config_item(private, in scarlett2_add_line_out_ctls()
6655 &private->headphone_vol_ctl); in scarlett2_add_line_out_ctls()
6663 if (!scarlett2_has_config_item(private, in scarlett2_add_line_out_ctls()
6668 for (i = 0; i < private->num_line_out; i++) { in scarlett2_add_line_out_ctls()
6669 int index = line_out_remap(private, i); in scarlett2_add_line_out_ctls()
6682 i, 1, s, &private->vol_ctls[i]); in scarlett2_add_line_out_ctls()
6693 &private->mute_ctls[i]); in scarlett2_add_line_out_ctls()
6698 if (scarlett2_has_config_item(private, in scarlett2_add_line_out_ctls()
6704 if (private->vol_sw_hw_switch[index]) in scarlett2_add_line_out_ctls()
6713 &private->sw_hw_ctls[i]); in scarlett2_add_line_out_ctls()
6720 if (private->speaker_switching_switch && i < 4) in scarlett2_add_line_out_ctls()
6721 scarlett2_sw_hw_ctl_ro(private, i); in scarlett2_add_line_out_ctls()
6726 if (scarlett2_has_config_item(private, SCARLETT2_CONFIG_DIM_MUTE)) in scarlett2_add_line_out_ctls()
6731 &private->dim_mute_ctls[i]); in scarlett2_add_line_out_ctls()
6743 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_dsp_ctls() local
6744 const struct scarlett2_device_info *info = private->info; in scarlett2_add_dsp_ctls()
6760 1, s, &private->compressor_ctls[idx]); in scarlett2_add_dsp_ctls()
6769 i, 1, s, &private->precomp_flt_switch_ctls[i]); in scarlett2_add_dsp_ctls()
6776 i, 1, s, &private->peq_flt_switch_ctls[i]); in scarlett2_add_dsp_ctls()
6786 1, s, &private->precomp_flt_switch_ctls[j]); in scarlett2_add_dsp_ctls()
6796 1, s, &private->peq_flt_switch_ctls[j]); in scarlett2_add_dsp_ctls()
6806 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_line_in_ctls() local
6807 const struct scarlett2_device_info *info = private->info; in scarlett2_add_line_in_ctls()
6818 i, 1, s, &private->level_ctls[i]); in scarlett2_add_line_in_ctls()
6827 i, 1, s, &private->pad_ctls[i]); in scarlett2_add_line_in_ctls()
6838 i, 1, s, &private->air_ctls[i]); in scarlett2_add_line_in_ctls()
6847 i, 1, s, &private->dsp_ctls[i]); in scarlett2_add_line_in_ctls()
6861 i, 1, s, &private->input_mute_ctls[i]); in scarlett2_add_line_in_ctls()
6874 i, 1, s, &private->phantom_ctls[i]); in scarlett2_add_line_in_ctls()
6887 i, 1, s, &private->phantom_ctls[i]); in scarlett2_add_line_in_ctls()
6893 scarlett2_has_config_item(private, in scarlett2_add_line_in_ctls()
6903 if (scarlett2_has_config_item(private, in scarlett2_add_line_in_ctls()
6908 &private->input_select_ctl); in scarlett2_add_line_in_ctls()
6913 if (scarlett2_has_config_item(private, in scarlett2_add_line_in_ctls()
6920 i, 1, s, &private->input_link_ctls[i]); in scarlett2_add_line_in_ctls()
6932 i, 1, s, &private->input_gain_ctls[i]); in scarlett2_add_line_in_ctls()
6935 private->input_gain_ctls[i]->tlv.p = in scarlett2_add_line_in_ctls()
6936 private->config_set->input_gain_tlv; in scarlett2_add_line_in_ctls()
6942 i, 1, s, &private->autogain_ctls[i]); in scarlett2_add_line_in_ctls()
6950 i, 1, s, &private->autogain_status_ctls[i]); in scarlett2_add_line_in_ctls()
6955 if (scarlett2_has_config_item(private, in scarlett2_add_line_in_ctls()
6962 i, 1, s, &private->ag_target_ctls[i]); in scarlett2_add_line_in_ctls()
6973 i, 1, s, &private->safe_ctls[i]); in scarlett2_add_line_in_ctls()
6979 if (scarlett2_has_config_item(private, in scarlett2_add_line_in_ctls()
6984 &private->pcm_input_switch_ctl); in scarlett2_add_line_in_ctls()
6996 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_mix() local
6999 private->mix_updated = 0; in scarlett2_update_mix()
7001 for (i = 0; i < private->num_mix_out; i++) { in scarlett2_update_mix()
7028 struct scarlett2_data *private = mixer->private_data; in scarlett2_mixer_ctl_get() local
7031 mutex_lock(&private->data_mutex); in scarlett2_mixer_ctl_get()
7033 if (private->hwdep_in_use) { in scarlett2_mixer_ctl_get()
7038 if (private->mix_updated) { in scarlett2_mixer_ctl_get()
7043 ucontrol->value.integer.value[0] = private->mix[elem->control]; in scarlett2_mixer_ctl_get()
7046 mutex_unlock(&private->data_mutex); in scarlett2_mixer_ctl_get()
7055 struct scarlett2_data *private = mixer->private_data; in scarlett2_mixer_ctl_put() local
7059 mutex_lock(&private->data_mutex); in scarlett2_mixer_ctl_put()
7061 if (private->hwdep_in_use) { in scarlett2_mixer_ctl_put()
7066 oval = private->mix[index]; in scarlett2_mixer_ctl_put()
7069 mix_num = index / private->num_mix_in; in scarlett2_mixer_ctl_put()
7074 private->mix[index] = val; in scarlett2_mixer_ctl_put()
7080 mutex_unlock(&private->data_mutex); in scarlett2_mixer_ctl_put()
7104 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_mixer_ctls() local
7109 for (i = 0, index = 0; i < private->num_mix_out; i++) in scarlett2_add_mixer_ctls()
7110 for (j = 0; j < private->num_mix_in; j++, index++) { in scarlett2_add_mixer_ctls()
7116 &private->mix_ctls[index]); in scarlett2_add_mixer_ctls()
7128 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_direct_monitor() local
7130 private->direct_monitor_updated = 0; in scarlett2_update_direct_monitor()
7132 if (!private->info->direct_monitor) in scarlett2_update_direct_monitor()
7137 1, &private->direct_monitor_switch); in scarlett2_update_direct_monitor()
7142 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_monitor_mix() local
7146 if (!private->num_monitor_mix_ctls) in scarlett2_update_monitor_mix()
7151 private->num_monitor_mix_ctls, mix_values); in scarlett2_update_monitor_mix()
7155 for (i = 0; i < private->num_monitor_mix_ctls; i++) in scarlett2_update_monitor_mix()
7156 private->monitor_mix[i] = scarlett2_mixer_value_to_db( in scarlett2_update_monitor_mix()
7167 struct scarlett2_data *private = mixer->private_data; in scarlett2_direct_monitor_ctl_get() local
7170 mutex_lock(&private->data_mutex); in scarlett2_direct_monitor_ctl_get()
7172 if (private->hwdep_in_use) { in scarlett2_direct_monitor_ctl_get()
7177 if (private->direct_monitor_updated) { in scarlett2_direct_monitor_ctl_get()
7182 ucontrol->value.enumerated.item[0] = private->direct_monitor_switch; in scarlett2_direct_monitor_ctl_get()
7185 mutex_unlock(&private->data_mutex); in scarlett2_direct_monitor_ctl_get()
7194 struct scarlett2_data *private = mixer->private_data; in scarlett2_direct_monitor_ctl_put() local
7199 mutex_lock(&private->data_mutex); in scarlett2_direct_monitor_ctl_put()
7201 if (private->hwdep_in_use) { in scarlett2_direct_monitor_ctl_put()
7206 oval = private->direct_monitor_switch; in scarlett2_direct_monitor_ctl_put()
7212 private->direct_monitor_switch = val; in scarlett2_direct_monitor_ctl_put()
7221 mutex_unlock(&private->data_mutex); in scarlett2_direct_monitor_ctl_put()
7259 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_monitor_mix_ctl_get() local
7261 ucontrol->value.integer.value[0] = private->monitor_mix[elem->control]; in scarlett2_monitor_mix_ctl_get()
7271 struct scarlett2_data *private = mixer->private_data; in scarlett2_monitor_mix_ctl_put() local
7275 mutex_lock(&private->data_mutex); in scarlett2_monitor_mix_ctl_put()
7277 if (private->hwdep_in_use) { in scarlett2_monitor_mix_ctl_put()
7282 oval = private->monitor_mix[index]; in scarlett2_monitor_mix_ctl_put()
7289 private->monitor_mix[index] = val; in scarlett2_monitor_mix_ctl_put()
7297 mutex_unlock(&private->data_mutex); in scarlett2_monitor_mix_ctl_put()
7315 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_direct_monitor_ctls() local
7316 const struct scarlett2_device_info *info = private->info; in scarlett2_add_direct_monitor_ctls()
7329 0, 1, s, &private->direct_monitor_ctl); in scarlett2_add_direct_monitor_ctls()
7333 if (!private->num_monitor_mix_ctls) in scarlett2_add_direct_monitor_ctls()
7353 for (k = 0; k < private->num_mix_in; k++, index++) { in scarlett2_add_direct_monitor_ctls()
7376 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_mux_src_enum_ctl_info() local
7377 const struct scarlett2_device_info *info = private->info; in scarlett2_mux_src_enum_ctl_info()
7380 int items = private->num_mux_srcs; in scarlett2_mux_src_enum_ctl_info()
7398 item >= private->num_mix_out) in scarlett2_mux_src_enum_ctl_info()
7401 item - private->num_mix_out + 1); in scarlett2_mux_src_enum_ctl_info()
7420 struct scarlett2_data *private = mixer->private_data; in scarlett2_mux_src_enum_ctl_get() local
7421 int index = line_out_remap(private, elem->control); in scarlett2_mux_src_enum_ctl_get()
7424 mutex_lock(&private->data_mutex); in scarlett2_mux_src_enum_ctl_get()
7426 if (private->hwdep_in_use) { in scarlett2_mux_src_enum_ctl_get()
7431 if (private->mux_updated) { in scarlett2_mux_src_enum_ctl_get()
7436 ucontrol->value.enumerated.item[0] = private->mux[index]; in scarlett2_mux_src_enum_ctl_get()
7439 mutex_unlock(&private->data_mutex); in scarlett2_mux_src_enum_ctl_get()
7448 struct scarlett2_data *private = mixer->private_data; in scarlett2_mux_src_enum_ctl_put() local
7449 int index = line_out_remap(private, elem->control); in scarlett2_mux_src_enum_ctl_put()
7452 mutex_lock(&private->data_mutex); in scarlett2_mux_src_enum_ctl_put()
7454 if (private->hwdep_in_use) { in scarlett2_mux_src_enum_ctl_put()
7459 oval = private->mux[index]; in scarlett2_mux_src_enum_ctl_put()
7461 private->num_mux_srcs - 1U); in scarlett2_mux_src_enum_ctl_put()
7466 private->mux[index] = val; in scarlett2_mux_src_enum_ctl_put()
7472 mutex_unlock(&private->data_mutex); in scarlett2_mux_src_enum_ctl_put()
7486 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_mux_enums() local
7487 const struct scarlett2_device_info *info = private->info; in scarlett2_add_mux_enums()
7505 channel >= private->num_mix_in) { in scarlett2_add_mux_enums()
7506 channel_num -= private->num_mix_in; in scarlett2_add_mux_enums()
7516 &private->mux_ctls[i]); in scarlett2_add_mux_enums()
7545 struct scarlett2_data *private = mixer->private_data; in scarlett2_meter_ctl_get() local
7546 u8 *meter_level_map = private->meter_level_map; in scarlett2_meter_ctl_get()
7550 mutex_lock(&private->data_mutex); in scarlett2_meter_ctl_get()
7552 if (private->hwdep_in_use) { in scarlett2_meter_ctl_get()
7576 mutex_unlock(&private->data_mutex); in scarlett2_meter_ctl_get()
7591 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_meter_ctl() local
7594 if (!scarlett2_has_mixer(private)) in scarlett2_add_meter_ctl()
7598 0, private->num_mux_dsts, in scarlett2_add_meter_ctl()
7608 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_msd_ctl_get() local
7610 ucontrol->value.integer.value[0] = private->msd_switch; in scarlett2_msd_ctl_get()
7619 struct scarlett2_data *private = mixer->private_data; in scarlett2_msd_ctl_put() local
7623 mutex_lock(&private->data_mutex); in scarlett2_msd_ctl_put()
7625 if (private->hwdep_in_use) { in scarlett2_msd_ctl_put()
7630 oval = private->msd_switch; in scarlett2_msd_ctl_put()
7636 private->msd_switch = val; in scarlett2_msd_ctl_put()
7645 mutex_unlock(&private->data_mutex); in scarlett2_msd_ctl_put()
7659 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_msd_ctl() local
7661 if (!scarlett2_has_config_item(private, SCARLETT2_CONFIG_MSD_SWITCH)) in scarlett2_add_msd_ctl()
7665 if (!private->msd_switch && !(mixer->chip->setup & SCARLETT2_MSD_ENABLE)) in scarlett2_add_msd_ctl()
7679 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_standalone_ctl_get() local
7681 ucontrol->value.integer.value[0] = private->standalone_switch; in scarlett2_standalone_ctl_get()
7690 struct scarlett2_data *private = mixer->private_data; in scarlett2_standalone_ctl_put() local
7694 mutex_lock(&private->data_mutex); in scarlett2_standalone_ctl_put()
7696 if (private->hwdep_in_use) { in scarlett2_standalone_ctl_put()
7701 oval = private->standalone_switch; in scarlett2_standalone_ctl_put()
7707 private->standalone_switch = val; in scarlett2_standalone_ctl_put()
7717 mutex_unlock(&private->data_mutex); in scarlett2_standalone_ctl_put()
7731 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_standalone_ctl() local
7733 if (!scarlett2_has_config_item(private, in scarlett2_add_standalone_ctl()
7746 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_power_status() local
7750 private->power_status_updated = 0; in scarlett2_update_power_status()
7763 private->power_status = SCARLETT2_POWER_STATUS_FAIL; in scarlett2_update_power_status()
7765 private->power_status = SCARLETT2_POWER_STATUS_EXT; in scarlett2_update_power_status()
7767 private->power_status = SCARLETT2_POWER_STATUS_BUS; in scarlett2_update_power_status()
7777 struct scarlett2_data *private = mixer->private_data; in scarlett2_power_status_ctl_get() local
7780 mutex_lock(&private->data_mutex); in scarlett2_power_status_ctl_get()
7782 if (private->power_status_updated) { in scarlett2_power_status_ctl_get()
7787 ucontrol->value.integer.value[0] = private->power_status; in scarlett2_power_status_ctl_get()
7790 mutex_unlock(&private->data_mutex); in scarlett2_power_status_ctl_get()
7814 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_power_status_ctl() local
7816 if (!scarlett2_has_config_item(private, in scarlett2_add_power_status_ctl()
7823 &private->power_status_ctl); in scarlett2_add_power_status_ctl()
7830 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_bluetooth_volume() local
7833 private->bluetooth_updated = 0; in scarlett2_update_bluetooth_volume()
7835 if (!private->info->has_bluetooth) in scarlett2_update_bluetooth_volume()
7840 1, &private->bluetooth_volume); in scarlett2_update_bluetooth_volume()
7852 struct scarlett2_data *private = mixer->private_data; in scarlett2_bluetooth_volume_ctl_get() local
7855 mutex_lock(&private->data_mutex); in scarlett2_bluetooth_volume_ctl_get()
7857 if (private->hwdep_in_use) { in scarlett2_bluetooth_volume_ctl_get()
7862 if (private->bluetooth_updated) { in scarlett2_bluetooth_volume_ctl_get()
7867 ucontrol->value.integer.value[0] = private->bluetooth_volume; in scarlett2_bluetooth_volume_ctl_get()
7870 mutex_unlock(&private->data_mutex); in scarlett2_bluetooth_volume_ctl_get()
7879 struct scarlett2_data *private = mixer->private_data; in scarlett2_bluetooth_volume_ctl_put() local
7882 mutex_lock(&private->data_mutex); in scarlett2_bluetooth_volume_ctl_put()
7884 if (private->hwdep_in_use) { in scarlett2_bluetooth_volume_ctl_put()
7889 oval = private->bluetooth_volume; in scarlett2_bluetooth_volume_ctl_put()
7896 private->bluetooth_volume = val; in scarlett2_bluetooth_volume_ctl_put()
7904 mutex_unlock(&private->data_mutex); in scarlett2_bluetooth_volume_ctl_put()
7930 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_bluetooth_volume_ctl() local
7932 if (!private->info->has_bluetooth) in scarlett2_add_bluetooth_volume_ctl()
7938 &private->bluetooth_volume_ctl); in scarlett2_add_bluetooth_volume_ctl()
7945 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_spdif_mode() local
7948 const u8 *mode_values = private->info->spdif_mode_values; in scarlett2_update_spdif_mode()
7950 if (!private->info->spdif_mode_control_name) in scarlett2_update_spdif_mode()
7958 private->spdif_mode = 0; in scarlett2_update_spdif_mode()
7962 private->spdif_mode = i; in scarlett2_update_spdif_mode()
7973 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_spdif_mode_ctl_info() local
7974 const char * const *mode_texts = private->info->spdif_mode_texts; in scarlett2_spdif_mode_ctl_info()
7981 private->info->spdif_mode_texts); in scarlett2_spdif_mode_ctl_info()
7988 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_spdif_mode_ctl_get() local
7990 ucontrol->value.enumerated.item[0] = private->spdif_mode; in scarlett2_spdif_mode_ctl_get()
7999 struct scarlett2_data *private = mixer->private_data; in scarlett2_spdif_mode_ctl_put() local
8003 mutex_lock(&private->data_mutex); in scarlett2_spdif_mode_ctl_put()
8005 oval = private->spdif_mode; in scarlett2_spdif_mode_ctl_put()
8014 if (private->info->spdif_mode_values[i] == 0xff) { in scarlett2_spdif_mode_ctl_put()
8022 private->spdif_mode = val; in scarlett2_spdif_mode_ctl_put()
8026 private->info->spdif_mode_values[val]); in scarlett2_spdif_mode_ctl_put()
8031 mutex_unlock(&private->data_mutex); in scarlett2_spdif_mode_ctl_put()
8045 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_spdif_mode_ctl() local
8047 if (!private->info->spdif_mode_control_name) in scarlett2_add_spdif_mode_ctl()
8052 private->info->spdif_mode_control_name, in scarlett2_add_spdif_mode_ctl()
8061 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_sync() local
8063 private->sync_updated = 1; in scarlett2_notify_sync()
8066 &private->sync_ctl->id); in scarlett2_notify_sync()
8073 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_monitor() local
8076 if (!scarlett2_has_config_item(private, SCARLETT2_CONFIG_SW_HW_SWITCH)) in scarlett2_notify_monitor()
8079 private->vol_updated = 1; in scarlett2_notify_monitor()
8082 &private->master_vol_ctl->id); in scarlett2_notify_monitor()
8084 for (i = 0; i < private->num_line_out; i++) in scarlett2_notify_monitor()
8085 if (private->vol_sw_hw_switch[line_out_remap(private, i)]) in scarlett2_notify_monitor()
8087 &private->vol_ctls[i]->id); in scarlett2_notify_monitor()
8093 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_volume() local
8095 private->vol_updated = 1; in scarlett2_notify_volume()
8098 &private->master_vol_ctl->id); in scarlett2_notify_volume()
8100 &private->headphone_vol_ctl->id); in scarlett2_notify_volume()
8107 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_dim_mute() local
8110 if (!scarlett2_has_config_item(private, SCARLETT2_CONFIG_SW_HW_SWITCH)) in scarlett2_notify_dim_mute()
8113 private->dim_mute_updated = 1; in scarlett2_notify_dim_mute()
8117 &private->dim_mute_ctls[i]->id); in scarlett2_notify_dim_mute()
8119 for (i = 0; i < private->num_line_out; i++) in scarlett2_notify_dim_mute()
8120 if (private->vol_sw_hw_switch[line_out_remap(private, i)]) in scarlett2_notify_dim_mute()
8122 &private->mute_ctls[i]->id); in scarlett2_notify_dim_mute()
8129 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_level() local
8130 const struct scarlett2_device_info *info = private->info; in scarlett2_notify_input_level()
8133 private->input_level_updated = 1; in scarlett2_notify_input_level()
8137 &private->level_ctls[i]->id); in scarlett2_notify_input_level()
8144 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_pad() local
8145 const struct scarlett2_device_info *info = private->info; in scarlett2_notify_input_pad()
8148 private->input_pad_updated = 1; in scarlett2_notify_input_pad()
8152 &private->pad_ctls[i]->id); in scarlett2_notify_input_pad()
8159 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_air() local
8160 const struct scarlett2_device_info *info = private->info; in scarlett2_notify_input_air()
8163 private->input_air_updated = 1; in scarlett2_notify_input_air()
8167 &private->air_ctls[i]->id); in scarlett2_notify_input_air()
8174 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_dsp() local
8175 const struct scarlett2_device_info *info = private->info; in scarlett2_notify_input_dsp()
8178 private->input_dsp_updated = 1; in scarlett2_notify_input_dsp()
8182 &private->dsp_ctls[i]->id); in scarlett2_notify_input_dsp()
8189 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_mute() local
8190 const struct scarlett2_device_info *info = private->info; in scarlett2_notify_input_mute()
8193 private->input_mute_updated = 1; in scarlett2_notify_input_mute()
8197 &private->input_mute_ctls[i]->id); in scarlett2_notify_input_mute()
8204 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_phantom() local
8205 const struct scarlett2_device_info *info = private->info; in scarlett2_notify_input_phantom()
8208 private->input_phantom_updated = 1; in scarlett2_notify_input_phantom()
8212 &private->phantom_ctls[i]->id); in scarlett2_notify_input_phantom()
8230 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_select() local
8231 const struct scarlett2_device_info *info = private->info; in scarlett2_notify_input_select()
8234 if (!scarlett2_has_config_item(private, in scarlett2_notify_input_select()
8238 private->input_select_updated = 1; in scarlett2_notify_input_select()
8242 &private->input_select_ctl->id); in scarlett2_notify_input_select()
8246 &private->input_link_ctls[i]->id); in scarlett2_notify_input_select()
8253 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_gain() local
8254 const struct scarlett2_device_info *info = private->info; in scarlett2_notify_input_gain()
8260 private->input_gain_updated = 1; in scarlett2_notify_input_gain()
8264 &private->input_gain_ctls[i]->id); in scarlett2_notify_input_gain()
8271 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_autogain() local
8272 const struct scarlett2_device_info *info = private->info; in scarlett2_notify_autogain()
8278 private->autogain_updated = 1; in scarlett2_notify_autogain()
8282 &private->autogain_ctls[i]->id); in scarlett2_notify_autogain()
8284 &private->autogain_status_ctls[i]->id); in scarlett2_notify_autogain()
8288 if (scarlett2_has_config_item(private, in scarlett2_notify_autogain()
8291 &private->ag_target_ctls[i]->id); in scarlett2_notify_autogain()
8300 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_safe() local
8301 const struct scarlett2_device_info *info = private->info; in scarlett2_notify_input_safe()
8307 private->input_safe_updated = 1; in scarlett2_notify_input_safe()
8311 &private->safe_ctls[i]->id); in scarlett2_notify_input_safe()
8318 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_monitor_other() local
8319 const struct scarlett2_device_info *info = private->info; in scarlett2_notify_monitor_other()
8321 private->monitor_other_updated = 1; in scarlett2_notify_monitor_other()
8325 &private->speaker_switching_ctl->id); in scarlett2_notify_monitor_other()
8329 &private->talkback_ctl->id); in scarlett2_notify_monitor_other()
8334 if (private->speaker_switching_switched) { in scarlett2_notify_monitor_other()
8339 private->speaker_switching_switched = 0; in scarlett2_notify_monitor_other()
8340 private->mux_updated = 1; in scarlett2_notify_monitor_other()
8342 for (i = 0; i < private->num_mux_dsts; i++) in scarlett2_notify_monitor_other()
8344 &private->mux_ctls[i]->id); in scarlett2_notify_monitor_other()
8352 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_direct_monitor() local
8353 int count = private->num_mix_in * private->num_mix_out; in scarlett2_notify_direct_monitor()
8356 private->direct_monitor_updated = 1; in scarlett2_notify_direct_monitor()
8359 &private->direct_monitor_ctl->id); in scarlett2_notify_direct_monitor()
8361 if (!scarlett2_has_mixer(private)) in scarlett2_notify_direct_monitor()
8364 private->mix_updated = 1; in scarlett2_notify_direct_monitor()
8369 &private->mix_ctls[i]->id); in scarlett2_notify_direct_monitor()
8376 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_power_status() local
8378 private->power_status_updated = 1; in scarlett2_notify_power_status()
8381 &private->power_status_ctl->id); in scarlett2_notify_power_status()
8388 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_mux() local
8391 private->mux_updated = 1; in scarlett2_notify_mux()
8393 for (i = 0; i < private->num_mux_dsts; i++) in scarlett2_notify_mux()
8395 &private->mux_ctls[i]->id); in scarlett2_notify_mux()
8402 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_pcm_input_switch() local
8404 private->pcm_input_switch_updated = 1; in scarlett2_notify_pcm_input_switch()
8407 &private->pcm_input_switch_ctl->id); in scarlett2_notify_pcm_input_switch()
8416 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_bluetooth() local
8418 if (!private->info->has_bluetooth) in scarlett2_notify_bluetooth()
8421 private->bluetooth_updated = 1; in scarlett2_notify_bluetooth()
8424 &private->bluetooth_volume_ctl->id); in scarlett2_notify_bluetooth()
8432 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_ack() local
8435 if (private->running) in scarlett2_notify_ack()
8436 complete(&private->cmd_done); in scarlett2_notify_ack()
8446 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify() local
8448 private->config_set->notifications; in scarlett2_notify()
8458 if (private->running < 2) in scarlett2_notify()
8482 complete(&private->cmd_done); in scarlett2_notify()
8490 struct scarlett2_data *private = mixer->private_data; in scarlett2_private_free() local
8492 cancel_delayed_work_sync(&private->work); in scarlett2_private_free()
8493 kfree(private); in scarlett2_private_free()
8499 struct scarlett2_data *private = mixer->private_data; in scarlett2_private_suspend() local
8501 if (cancel_delayed_work_sync(&private->work)) in scarlett2_private_suspend()
8502 scarlett2_config_save(private->mixer); in scarlett2_private_suspend()
8507 static void scarlett2_count_io(struct scarlett2_data *private) in scarlett2_count_io() argument
8509 const struct scarlett2_device_info *info = private->info; in scarlett2_count_io()
8522 private->num_mux_srcs = srcs; in scarlett2_count_io()
8523 private->num_mux_dsts = dsts; in scarlett2_count_io()
8529 private->num_mix_in = in scarlett2_count_io()
8533 private->num_mix_out = in scarlett2_count_io()
8538 private->num_line_out = in scarlett2_count_io()
8542 private->num_monitor_mix_ctls = in scarlett2_count_io()
8543 info->direct_monitor * 2 * private->num_mix_in; in scarlett2_count_io()
8551 private->num_autogain_status_texts = i; in scarlett2_count_io()
8561 struct scarlett2_data *private) in scarlett2_find_fc_interface() argument
8576 private->bInterfaceNumber = desc->bInterfaceNumber; in scarlett2_find_fc_interface()
8577 private->bEndpointAddress = epd->bEndpointAddress & in scarlett2_find_fc_interface()
8579 private->wMaxPacketSize = le16_to_cpu(epd->wMaxPacketSize); in scarlett2_find_fc_interface()
8580 private->bInterval = epd->bInterval; in scarlett2_find_fc_interface()
8591 struct scarlett2_data *private = in scarlett2_init_private() local
8594 if (!private) in scarlett2_init_private()
8597 mutex_init(&private->usb_mutex); in scarlett2_init_private()
8598 mutex_init(&private->data_mutex); in scarlett2_init_private()
8599 INIT_DELAYED_WORK(&private->work, scarlett2_config_save_work); in scarlett2_init_private()
8601 mixer->private_data = private; in scarlett2_init_private()
8605 private->info = entry->info; in scarlett2_init_private()
8606 private->config_set = entry->info->config_set; in scarlett2_init_private()
8607 private->series_name = entry->series_name; in scarlett2_init_private()
8608 scarlett2_count_io(private); in scarlett2_init_private()
8609 private->scarlett2_seq = 0; in scarlett2_init_private()
8610 private->mixer = mixer; in scarlett2_init_private()
8612 return scarlett2_find_fc_interface(mixer->chip->dev, private); in scarlett2_init_private()
8619 struct scarlett2_data *private = mixer->private_data; in scarlett2_init_notify() local
8620 unsigned int pipe = usb_rcvintpipe(dev, private->bEndpointAddress); in scarlett2_init_notify()
8636 transfer_buffer = kmalloc(private->wMaxPacketSize, GFP_KERNEL); in scarlett2_init_notify()
8641 transfer_buffer, private->wMaxPacketSize, in scarlett2_init_notify()
8642 scarlett2_notify, mixer, private->bInterval); in scarlett2_init_notify()
8644 init_completion(&private->cmd_done); in scarlett2_init_notify()
8653 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_init() local
8662 err = scarlett2_usb_rx(dev, private->bInterfaceNumber, in scarlett2_usb_init()
8684 private->running = 1; in scarlett2_usb_init()
8687 private->scarlett2_seq = 1; in scarlett2_usb_init()
8693 private->scarlett2_seq = 1; in scarlett2_usb_init()
8701 private->firmware_version = le32_to_cpu(*(__le32 *)(step2_buf + 8)); in scarlett2_usb_init()
8704 private->firmware_version); in scarlett2_usb_init()
8714 struct scarlett2_data *private = mixer->private_data; in scarlett2_get_flash_segment_nums() local
8768 private->flash_segment_nums[flash_segment_id] = i; in scarlett2_get_flash_segment_nums()
8769 private->flash_segment_blocks[flash_segment_id] = in scarlett2_get_flash_segment_nums()
8777 if (!private->flash_segment_nums[SCARLETT2_SEGMENT_ID_SETTINGS]) { in scarlett2_get_flash_segment_nums()
8783 if (!private->flash_segment_nums[SCARLETT2_SEGMENT_ID_FIRMWARE]) { in scarlett2_get_flash_segment_nums()
8796 struct scarlett2_data *private = mixer->private_data; in scarlett2_read_configs() local
8797 const struct scarlett2_device_info *info = private->info; in scarlett2_read_configs()
8800 if (scarlett2_has_config_item(private, SCARLETT2_CONFIG_MSD_SWITCH)) { in scarlett2_read_configs()
8803 1, &private->msd_switch); in scarlett2_read_configs()
8808 if (private->firmware_version < info->min_firmware_version) { in scarlett2_read_configs()
8812 private->series_name, in scarlett2_read_configs()
8813 private->firmware_version, in scarlett2_read_configs()
8819 if (private->msd_switch) in scarlett2_read_configs()
8859 if (!scarlett2_has_mixer(private)) in scarlett2_read_configs()
8870 if (scarlett2_has_config_item(private, in scarlett2_read_configs()
8874 1, &private->standalone_switch); in scarlett2_read_configs()
8879 if (scarlett2_has_config_item(private, in scarlett2_read_configs()
8890 if (scarlett2_has_config_item(private, in scarlett2_read_configs()
8897 private->num_line_out, &sw_vol); in scarlett2_read_configs()
8901 for (i = 0; i < private->num_line_out; i++) in scarlett2_read_configs()
8902 private->vol[i] = clamp( in scarlett2_read_configs()
8909 private->num_line_out, &private->mute_switch); in scarlett2_read_configs()
8913 for (i = 0; i < private->num_line_out; i++) in scarlett2_read_configs()
8914 private->mute_switch[i] = in scarlett2_read_configs()
8915 !!private->mute_switch[i]; in scarlett2_read_configs()
8918 if (scarlett2_has_config_item(private, in scarlett2_read_configs()
8922 private->num_line_out, in scarlett2_read_configs()
8923 &private->vol_sw_hw_switch); in scarlett2_read_configs()
8927 for (i = 0; i < private->num_line_out; i++) in scarlett2_read_configs()
8928 private->vol_sw_hw_switch[i] = in scarlett2_read_configs()
8929 !!private->vol_sw_hw_switch[i]; in scarlett2_read_configs()
8957 if (scarlett2_has_config_item(private, in scarlett2_read_configs()
8997 struct scarlett2_data *private; in snd_scarlett2_controls_create() local
9005 private = mixer->private_data; in snd_scarlett2_controls_create()
9040 if (private->msd_switch || in snd_scarlett2_controls_create()
9041 private->firmware_version < private->info->min_firmware_version) in snd_scarlett2_controls_create()
9112 if (private->info->gain_input_count) { in snd_scarlett2_controls_create()
9118 private->running = 2; in snd_scarlett2_controls_create()
9128 static void scarlett2_lock(struct scarlett2_data *private) in scarlett2_lock() argument
9130 mutex_lock(&private->data_mutex); in scarlett2_lock()
9131 private->hwdep_in_use = 1; in scarlett2_lock()
9132 mutex_unlock(&private->data_mutex); in scarlett2_lock()
9138 struct scarlett2_data *private = mixer->private_data; in scarlett2_get_erase_progress() local
9147 segment_id = private->selected_flash_segment_id; in scarlett2_get_erase_progress()
9148 segment_num = private->flash_segment_nums[segment_id]; in scarlett2_get_erase_progress()
9194 struct scarlett2_data *private = mixer->private_data; in scarlett2_reboot() local
9196 if (private->flash_write_state == in scarlett2_reboot()
9212 struct scarlett2_data *private = mixer->private_data; in scarlett2_ioctl_select_flash_segment() local
9222 segment_num = private->flash_segment_nums[segment_id]; in scarlett2_ioctl_select_flash_segment()
9232 if (private->flash_write_state == SCARLETT2_FLASH_WRITE_STATE_ERASING) { in scarlett2_ioctl_select_flash_segment()
9240 private->selected_flash_segment_id = segment_id; in scarlett2_ioctl_select_flash_segment()
9241 private->flash_write_state = SCARLETT2_FLASH_WRITE_STATE_SELECTED; in scarlett2_ioctl_select_flash_segment()
9250 struct scarlett2_data *private = mixer->private_data; in scarlett2_ioctl_erase_flash_segment() local
9258 if (private->flash_write_state != SCARLETT2_FLASH_WRITE_STATE_SELECTED) in scarlett2_ioctl_erase_flash_segment()
9261 segment_id = private->selected_flash_segment_id; in scarlett2_ioctl_erase_flash_segment()
9262 segment_num = private->flash_segment_nums[segment_id]; in scarlett2_ioctl_erase_flash_segment()
9271 scarlett2_lock(private); in scarlett2_ioctl_erase_flash_segment()
9284 private->flash_write_state = SCARLETT2_FLASH_WRITE_STATE_ERASING; in scarlett2_ioctl_erase_flash_segment()
9294 struct scarlett2_data *private = mixer->private_data; in scarlett2_ioctl_get_erase_progress() local
9305 if (private->flash_write_state != SCARLETT2_FLASH_WRITE_STATE_ERASING) in scarlett2_ioctl_get_erase_progress()
9308 segment_id = private->selected_flash_segment_id; in scarlett2_ioctl_get_erase_progress()
9309 segment_num = private->flash_segment_nums[segment_id]; in scarlett2_ioctl_get_erase_progress()
9326 progress.num_blocks = private->flash_segment_blocks[segment_id]; in scarlett2_ioctl_get_erase_progress()
9335 private->flash_write_state = SCARLETT2_FLASH_WRITE_STATE_WRITE; in scarlett2_ioctl_get_erase_progress()
9343 struct scarlett2_data *private = mixer->private_data; in scarlett2_hwdep_open() local
9346 if (private->flash_write_state == in scarlett2_hwdep_open()
9355 private->flash_write_state = SCARLETT2_FLASH_WRITE_STATE_IDLE; in scarlett2_hwdep_open()
9393 struct scarlett2_data *private = mixer->private_data; in scarlett2_hwdep_read() local
9407 if (private->flash_write_state != SCARLETT2_FLASH_WRITE_STATE_SELECTED) in scarlett2_hwdep_read()
9411 segment_id = private->selected_flash_segment_id; in scarlett2_hwdep_read()
9415 segment_num = private->flash_segment_nums[segment_id]; in scarlett2_hwdep_read()
9425 flash_size = private->flash_segment_blocks[segment_id] * in scarlett2_hwdep_read()
9471 struct scarlett2_data *private = mixer->private_data; in scarlett2_hwdep_write() local
9488 if (private->flash_write_state == in scarlett2_hwdep_write()
9493 private->flash_write_state = SCARLETT2_FLASH_WRITE_STATE_WRITE; in scarlett2_hwdep_write()
9496 } else if (private->flash_write_state != in scarlett2_hwdep_write()
9502 segment_id = private->selected_flash_segment_id; in scarlett2_hwdep_write()
9506 segment_num = private->flash_segment_nums[segment_id]; in scarlett2_hwdep_write()
9512 flash_size = private->flash_segment_blocks[segment_id] * in scarlett2_hwdep_write()
9556 struct scarlett2_data *private = mixer->private_data; in scarlett2_hwdep_release() local
9561 if (private && in scarlett2_hwdep_release()
9562 private->hwdep_in_use && in scarlett2_hwdep_release()
9563 private->flash_write_state != SCARLETT2_FLASH_WRITE_STATE_ERASING) in scarlett2_hwdep_release()
9564 private->flash_write_state = SCARLETT2_FLASH_WRITE_STATE_IDLE; in scarlett2_hwdep_release()
9666 struct scarlett2_data *private = mixer->private_data; in scarlett2_devmap_init() local
9667 const struct scarlett2_device_info *info = private->info; in scarlett2_devmap_init()