Lines Matching full:mixer

50  * Support for loading mixer volume and mux configuration from the
78 * This ALSA mixer gives access to (model-dependent):
79 * - input, output, mixer-matrix muxes
80 * - mixer-matrix gain stages
109 * | | Mixer | | |
165 #include "mixer.h"
174 /* device_setup value to disable this mixer driver */
191 /* mixer range from -80dB to +12dB in 0.5dB steps */
199 /* map from (dB + 80) * 2 to mixer value
232 /* Maximum number of inputs to the mixer */
235 /* Maximum number of outputs from the mixer */
238 /* Maximum number of mixer gain controls */
241 /* Maximum number of direct monitor mixer gain controls
317 * - Mixer I/O
409 void (*func)(struct usb_mixer_interface *mixer);
412 static void scarlett2_notify_ack(struct usb_mixer_interface *mixer);
413 static void scarlett2_notify_sync(struct usb_mixer_interface *mixer);
414 static void scarlett2_notify_dim_mute(struct usb_mixer_interface *mixer);
415 static void scarlett2_notify_monitor(struct usb_mixer_interface *mixer);
416 static void scarlett2_notify_volume(struct usb_mixer_interface *mixer);
417 static void scarlett2_notify_input_level(struct usb_mixer_interface *mixer);
418 static void scarlett2_notify_input_pad(struct usb_mixer_interface *mixer);
419 static void scarlett2_notify_input_air(struct usb_mixer_interface *mixer);
420 static void scarlett2_notify_input_dsp(struct usb_mixer_interface *mixer);
421 static void scarlett2_notify_input_mute(struct usb_mixer_interface *mixer);
422 static void scarlett2_notify_input_phantom(struct usb_mixer_interface *mixer);
423 static void scarlett2_notify_input_other(struct usb_mixer_interface *mixer);
424 static void scarlett2_notify_input_select(struct usb_mixer_interface *mixer);
425 static void scarlett2_notify_input_gain(struct usb_mixer_interface *mixer);
426 static void scarlett2_notify_autogain(struct usb_mixer_interface *mixer);
427 static void scarlett2_notify_input_safe(struct usb_mixer_interface *mixer);
428 static void scarlett2_notify_monitor_other(struct usb_mixer_interface *mixer);
429 static void scarlett2_notify_direct_monitor(struct usb_mixer_interface *mixer);
430 static void scarlett2_notify_power_status(struct usb_mixer_interface *mixer);
432 struct usb_mixer_interface *mixer);
433 static void scarlett2_notify_bluetooth(struct usb_mixer_interface *mixer);
658 /* Gen 3 devices without a mixer (Solo and 2i2) */
999 * - dst_descr: printf format string for mixer controls
1037 .dst_descr = "Mixer Input %02d Capture",
1195 struct usb_mixer_interface *mixer; member
2346 struct usb_mixer_interface *mixer, u32 cmd, in scarlett2_usb() argument
2349 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb()
2350 struct usb_device *dev = mixer->chip->dev; in scarlett2_usb()
2382 mixer->chip, in scarlett2_usb()
2392 mixer->chip, in scarlett2_usb()
2420 mixer->chip, in scarlett2_usb()
2437 mixer->chip, in scarlett2_usb()
2464 struct usb_mixer_interface *mixer, in scarlett2_usb_get() argument
2474 return scarlett2_usb(mixer, SCARLETT2_USB_GET_DATA, in scarlett2_usb_get()
2489 struct usb_mixer_interface *mixer, in scarlett2_usb_get_config() argument
2492 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_get_config()
2511 err = scarlett2_usb_get(mixer, config_item->offset, buf, size); in scarlett2_usb_get_config()
2529 err = scarlett2_usb_get(mixer, config_item->offset, &value, 1); in scarlett2_usb_get_config()
2546 struct usb_mixer_interface *mixer, in scarlett2_usb_set_data() argument
2549 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_data()
2559 return scarlett2_usb(private->mixer, SCARLETT2_USB_SET_DATA, in scarlett2_usb_set_data()
2569 struct usb_mixer_interface *mixer, in scarlett2_usb_set_data_buf() argument
2572 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_data_buf()
2604 err = scarlett2_usb(private->mixer, SCARLETT2_USB_SET_DATA, in scarlett2_usb_set_data_buf()
2618 struct usb_mixer_interface *mixer, int activate) in scarlett2_usb_activate_config() argument
2623 return scarlett2_usb(mixer, SCARLETT2_USB_DATA_CMD, in scarlett2_usb_activate_config()
2629 struct usb_mixer_interface *mixer, in scarlett2_usb_set_config() argument
2632 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_config()
2652 mixer, config_set->param_buf_addr + 1, 1, index); in scarlett2_usb_set_config()
2658 mixer, config_set->param_buf_addr, 1, value); in scarlett2_usb_set_config()
2664 mixer, config_item->activate); in scarlett2_usb_set_config()
2690 err = scarlett2_usb_get(mixer, offset, &tmp, 1); in scarlett2_usb_set_config()
2703 err = scarlett2_usb_set_data(mixer, offset, size, value); in scarlett2_usb_set_config()
2708 err = scarlett2_usb_activate_config(mixer, config_item->activate); in scarlett2_usb_set_config()
2729 struct usb_mixer_interface *mixer, in scarlett2_usb_set_config_buf() argument
2732 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_config_buf()
2758 err = scarlett2_usb_set_data_buf(mixer, offset, size, count, buf); in scarlett2_usb_set_config_buf()
2763 return scarlett2_usb_activate_config(mixer, config_item->activate); in scarlett2_usb_set_config_buf()
2767 static void scarlett2_config_save(struct usb_mixer_interface *mixer) in scarlett2_config_save() argument
2771 err = scarlett2_usb_activate_config(mixer, SCARLETT2_USB_CONFIG_SAVE); in scarlett2_config_save()
2773 usb_audio_err(mixer->chip, "config save failed: %d\n", err); in scarlett2_config_save()
2782 scarlett2_config_save(private->mixer); in scarlett2_config_save_work()
2787 struct usb_mixer_interface *mixer, in scarlett2_usb_get_sync_status() argument
2793 err = scarlett2_usb(mixer, SCARLETT2_USB_GET_SYNC, in scarlett2_usb_get_sync_status()
2802 /* Return true if the device has a mixer that we can control */
2808 /* Map from mixer value to (db + 80) * 2
2824 static int scarlett2_usb_get_mix(struct usb_mixer_interface *mixer, in scarlett2_usb_get_mix() argument
2827 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_get_mix()
2842 err = scarlett2_usb(mixer, SCARLETT2_USB_GET_MIX, in scarlett2_usb_get_mix()
2858 static int scarlett2_usb_set_mix(struct usb_mixer_interface *mixer, in scarlett2_usb_set_mix() argument
2861 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_mix()
2878 return scarlett2_usb(mixer, SCARLETT2_USB_SET_MIX, in scarlett2_usb_set_mix()
2938 usb_audio_err(private->mixer->chip, in scarlett2_usb_populate_mux()
2950 usb_audio_err(private->mixer->chip, in scarlett2_usb_populate_mux()
3030 static int scarlett2_usb_get_mux(struct usb_mixer_interface *mixer) in scarlett2_usb_get_mux() argument
3032 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_get_mux()
3048 err = scarlett2_usb(mixer, SCARLETT2_USB_GET_MUX, in scarlett2_usb_get_mux()
3063 static int scarlett2_usb_set_mux(struct usb_mixer_interface *mixer) in scarlett2_usb_set_mux() argument
3065 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_set_mux()
3118 err = scarlett2_usb(mixer, SCARLETT2_USB_SET_MUX, in scarlett2_usb_set_mux()
3131 static int scarlett2_usb_get_meter_levels(struct usb_mixer_interface *mixer, in scarlett2_usb_get_meter_levels() argument
3145 err = scarlett2_usb(mixer, SCARLETT2_USB_GET_METER, in scarlett2_usb_get_meter_levels()
3169 static int scarlett2_add_new_ctl(struct usb_mixer_interface *mixer, in scarlett2_add_new_ctl() argument
3182 /* We set USB_MIXER_BESPOKEN type, so that the core USB mixer code in scarlett2_add_new_ctl()
3186 elem->head.mixer = mixer; in scarlett2_add_new_ctl()
3218 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_firmware_version_ctl_get()
3244 struct usb_mixer_interface *mixer) in scarlett2_add_firmware_version_ctl() argument
3246 return scarlett2_add_new_ctl(mixer, &scarlett2_firmware_version_ctl, in scarlett2_add_firmware_version_ctl()
3257 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_min_firmware_version_ctl_get()
3283 struct usb_mixer_interface *mixer) in scarlett2_add_min_firmware_version_ctl() argument
3285 return scarlett2_add_new_ctl(mixer, &scarlett2_min_firmware_version_ctl, in scarlett2_add_min_firmware_version_ctl()
3294 static int scarlett2_update_sync(struct usb_mixer_interface *mixer) in scarlett2_update_sync() argument
3296 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_sync()
3299 return scarlett2_usb_get_sync_status(mixer, &private->sync); in scarlett2_update_sync()
3315 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_sync_ctl_get() local
3316 struct scarlett2_data *private = mixer->private_data; in scarlett2_sync_ctl_get()
3327 err = scarlett2_update_sync(mixer); in scarlett2_sync_ctl_get()
3346 static int scarlett2_add_sync_ctl(struct usb_mixer_interface *mixer) in scarlett2_add_sync_ctl() argument
3348 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_sync_ctl()
3350 /* devices without a mixer also don't support reporting sync status */ in scarlett2_add_sync_ctl()
3354 return scarlett2_add_new_ctl(mixer, &scarlett2_sync_ctl, in scarlett2_add_sync_ctl()
3388 static int scarlett2_update_autogain(struct usb_mixer_interface *mixer) in scarlett2_update_autogain() argument
3390 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_autogain()
3402 mixer, SCARLETT2_CONFIG_AUTOGAIN_SWITCH, in scarlett2_update_autogain()
3407 mixer, SCARLETT2_CONFIG_AUTOGAIN_STATUS, in scarlett2_update_autogain()
3438 mixer, scarlett2_ag_target_configs[i], in scarlett2_update_autogain()
3452 static void scarlett2_autogain_update_access(struct usb_mixer_interface *mixer) in scarlett2_autogain_update_access() argument
3454 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_update_access()
3492 static void scarlett2_autogain_notify_access(struct usb_mixer_interface *mixer) in scarlett2_autogain_notify_access() argument
3494 struct snd_card *card = mixer->chip->card; in scarlett2_autogain_notify_access()
3495 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_notify_access()
3541 struct usb_mixer_interface *mixer) in scarlett2_check_autogain_updated() argument
3543 struct scarlett2_data *private = mixer->private_data; in scarlett2_check_autogain_updated()
3549 err = scarlett2_update_autogain(mixer); in scarlett2_check_autogain_updated()
3553 scarlett2_autogain_update_access(mixer); in scarlett2_check_autogain_updated()
3564 struct usb_mixer_interface *mixer) in scarlett2_check_put_during_autogain() argument
3566 int err = scarlett2_check_autogain_updated(mixer); in scarlett2_check_put_during_autogain()
3571 if (scarlett2_autogain_is_running(mixer->private_data)) in scarlett2_check_put_during_autogain()
3581 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_autogain_switch_ctl_info() local
3582 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_switch_ctl_info()
3587 err = scarlett2_check_input_phantom_updated(mixer); in scarlett2_autogain_switch_ctl_info()
3602 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_autogain_switch_ctl_get() local
3603 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_switch_ctl_get()
3613 err = scarlett2_check_autogain_updated(mixer); in scarlett2_autogain_switch_ctl_get()
3629 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_autogain_status_ctl_get() local
3630 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_status_ctl_get()
3640 err = scarlett2_check_autogain_updated(mixer); in scarlett2_autogain_status_ctl_get()
3656 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_autogain_switch_ctl_put() local
3657 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_switch_ctl_put()
3669 err = scarlett2_check_input_phantom_updated(mixer); in scarlett2_autogain_switch_ctl_put()
3688 mixer, SCARLETT2_CONFIG_AUTOGAIN_SWITCH, index, val); in scarlett2_autogain_switch_ctl_put()
3692 scarlett2_autogain_update_access(mixer); in scarlett2_autogain_switch_ctl_put()
3693 scarlett2_autogain_notify_access(mixer); in scarlett2_autogain_switch_ctl_put()
3704 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_autogain_status_ctl_info()
3734 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_ag_target_ctl_info() local
3735 struct scarlett2_data *private = mixer->private_data; in scarlett2_ag_target_ctl_info()
3745 err = scarlett2_check_autogain_updated(mixer); in scarlett2_ag_target_ctl_info()
3764 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_ag_target_ctl_get() local
3765 struct scarlett2_data *private = mixer->private_data; in scarlett2_ag_target_ctl_get()
3776 err = scarlett2_update_autogain(mixer); in scarlett2_ag_target_ctl_get()
3792 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_ag_target_ctl_put() local
3793 struct scarlett2_data *private = mixer->private_data; in scarlett2_ag_target_ctl_put()
3805 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_ag_target_ctl_put()
3820 mixer, scarlett2_ag_target_configs[index], 1, -val); in scarlett2_ag_target_ctl_put()
3846 static int scarlett2_update_input_select(struct usb_mixer_interface *mixer) in scarlett2_update_input_select() argument
3848 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_select()
3861 mixer, SCARLETT2_CONFIG_INPUT_SELECT_SWITCH, in scarlett2_update_input_select()
3867 mixer, SCARLETT2_CONFIG_INPUT_LINK_SWITCH, in scarlett2_update_input_select()
3879 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_input_select_ctl_get() local
3880 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_select_ctl_get()
3891 err = scarlett2_update_input_select(mixer); in scarlett2_input_select_ctl_get()
3906 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_input_select_ctl_put() local
3907 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_select_ctl_put()
3919 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_input_select_ctl_put()
3938 mixer, SCARLETT2_CONFIG_INPUT_SELECT_SWITCH, in scarlett2_input_select_ctl_put()
3952 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_input_select_ctl_info() local
3953 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_select_ctl_info()
3969 err = scarlett2_check_autogain_updated(mixer); in scarlett2_input_select_ctl_info()
4007 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_autogain_disables_ctl_info() local
4008 struct scarlett2_data *private = mixer->private_data; in scarlett2_autogain_disables_ctl_info()
4018 err = scarlett2_check_autogain_updated(mixer); in scarlett2_autogain_disables_ctl_info()
4033 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_input_link_ctl_get() local
4034 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_link_ctl_get()
4045 err = scarlett2_update_input_select(mixer); in scarlett2_input_link_ctl_get()
4061 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_input_link_ctl_put() local
4062 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_link_ctl_put()
4074 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_input_link_ctl_put()
4087 mixer, SCARLETT2_CONFIG_INPUT_LINK_SWITCH, index, val); in scarlett2_input_link_ctl_put()
4106 static int scarlett2_update_input_gain(struct usb_mixer_interface *mixer) in scarlett2_update_input_gain() argument
4108 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_gain()
4117 mixer, SCARLETT2_CONFIG_INPUT_GAIN, in scarlett2_update_input_gain()
4125 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_input_gain_ctl_info() local
4126 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_gain_ctl_info()
4136 err = scarlett2_check_autogain_updated(mixer); in scarlett2_input_gain_ctl_info()
4155 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_input_gain_ctl_get() local
4156 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_gain_ctl_get()
4167 err = scarlett2_update_input_gain(mixer); in scarlett2_input_gain_ctl_get()
4183 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_input_gain_ctl_put() local
4184 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_gain_ctl_put()
4196 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_input_gain_ctl_put()
4209 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_INPUT_GAIN, in scarlett2_input_gain_ctl_put()
4232 static int scarlett2_update_input_safe(struct usb_mixer_interface *mixer) in scarlett2_update_input_safe() argument
4234 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_safe()
4243 mixer, SCARLETT2_CONFIG_SAFE_SWITCH, in scarlett2_update_input_safe()
4251 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_safe_ctl_get() local
4252 struct scarlett2_data *private = mixer->private_data; in scarlett2_safe_ctl_get()
4263 err = scarlett2_update_input_safe(mixer); in scarlett2_safe_ctl_get()
4279 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_safe_ctl_put() local
4280 struct scarlett2_data *private = mixer->private_data; in scarlett2_safe_ctl_put()
4292 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_safe_ctl_put()
4305 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_SAFE_SWITCH, in scarlett2_safe_ctl_put()
4325 static int scarlett2_update_pcm_input_switch(struct usb_mixer_interface *mixer) in scarlett2_update_pcm_input_switch() argument
4327 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_pcm_input_switch()
4333 mixer, SCARLETT2_CONFIG_PCM_INPUT_SWITCH, in scarlett2_update_pcm_input_switch()
4345 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_pcm_input_switch_ctl_get() local
4346 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_pcm_input_switch_ctl_get()
4352 err = scarlett2_update_pcm_input_switch(mixer); in scarlett2_pcm_input_switch_ctl_get()
4367 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_pcm_input_switch_ctl_put() local
4368 struct scarlett2_data *private = mixer->private_data; in scarlett2_pcm_input_switch_ctl_put()
4389 mixer, SCARLETT2_CONFIG_PCM_INPUT_SWITCH, in scarlett2_pcm_input_switch_ctl_put()
4403 "Direct", "Mixer" in scarlett2_pcm_input_switch_ctl_info()
4423 static int scarlett2_update_volumes(struct usb_mixer_interface *mixer) in scarlett2_update_volumes() argument
4425 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_volumes()
4434 mixer, SCARLETT2_CONFIG_MASTER_VOLUME, in scarlett2_update_volumes()
4452 mixer, SCARLETT2_CONFIG_HEADPHONE_VOLUME, in scarlett2_update_volumes()
4481 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_master_volume_ctl_get() local
4482 struct scarlett2_data *private = mixer->private_data; in scarlett2_master_volume_ctl_get()
4493 err = scarlett2_update_volumes(mixer); in scarlett2_master_volume_ctl_get()
4509 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_headphone_volume_ctl_get() local
4510 struct scarlett2_data *private = mixer->private_data; in scarlett2_headphone_volume_ctl_get()
4521 err = scarlett2_update_volumes(mixer); in scarlett2_headphone_volume_ctl_get()
4549 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_volume_ctl_get() local
4550 struct scarlett2_data *private = mixer->private_data; in scarlett2_volume_ctl_get()
4562 err = scarlett2_update_volumes(mixer); in scarlett2_volume_ctl_get()
4577 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_volume_ctl_put() local
4578 struct scarlett2_data *private = mixer->private_data; in scarlett2_volume_ctl_put()
4596 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_LINE_OUT_VOLUME, in scarlett2_volume_ctl_put()
4646 static int scarlett2_update_dim_mute(struct usb_mixer_interface *mixer) in scarlett2_update_dim_mute() argument
4648 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_dim_mute()
4658 mixer, SCARLETT2_CONFIG_DIM_MUTE, in scarlett2_update_dim_mute()
4679 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_mute_ctl_get() local
4680 struct scarlett2_data *private = mixer->private_data; in scarlett2_mute_ctl_get()
4692 err = scarlett2_update_dim_mute(mixer); in scarlett2_mute_ctl_get()
4707 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_mute_ctl_put() local
4708 struct scarlett2_data *private = mixer->private_data; in scarlett2_mute_ctl_put()
4728 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_MUTE_SWITCH, in scarlett2_mute_ctl_put()
4774 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_sw_hw_enum_ctl_get()
4781 static void scarlett2_vol_ctl_set_writable(struct usb_mixer_interface *mixer, in scarlett2_vol_ctl_set_writable() argument
4784 struct scarlett2_data *private = mixer->private_data; in scarlett2_vol_ctl_set_writable()
4785 struct snd_card *card = mixer->chip->card; in scarlett2_vol_ctl_set_writable()
4809 static int scarlett2_sw_hw_change(struct usb_mixer_interface *mixer, in scarlett2_sw_hw_change() argument
4812 struct scarlett2_data *private = mixer->private_data; in scarlett2_sw_hw_change()
4821 scarlett2_vol_ctl_set_writable(mixer, ctl_index, !val); in scarlett2_sw_hw_change()
4829 mixer, SCARLETT2_CONFIG_LINE_OUT_VOLUME, in scarlett2_sw_hw_change()
4836 mixer, SCARLETT2_CONFIG_MUTE_SWITCH, in scarlett2_sw_hw_change()
4842 return scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_SW_HW_SWITCH, in scarlett2_sw_hw_change()
4850 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_sw_hw_enum_ctl_put() local
4851 struct scarlett2_data *private = mixer->private_data; in scarlett2_sw_hw_enum_ctl_put()
4869 err = scarlett2_sw_hw_change(mixer, ctl_index, val); in scarlett2_sw_hw_enum_ctl_put()
4888 static int scarlett2_update_input_level(struct usb_mixer_interface *mixer) in scarlett2_update_input_level() argument
4890 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_level()
4899 mixer, SCARLETT2_CONFIG_LEVEL_SWITCH, in scarlett2_update_input_level()
4911 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_level_enum_ctl_info() local
4912 struct scarlett2_data *private = mixer->private_data; in scarlett2_level_enum_ctl_info()
4922 err = scarlett2_check_autogain_updated(mixer); in scarlett2_level_enum_ctl_info()
4937 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_level_enum_ctl_get() local
4938 struct scarlett2_data *private = mixer->private_data; in scarlett2_level_enum_ctl_get()
4952 err = scarlett2_update_input_level(mixer); in scarlett2_level_enum_ctl_get()
4968 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_level_enum_ctl_put() local
4969 struct scarlett2_data *private = mixer->private_data; in scarlett2_level_enum_ctl_put()
4982 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_level_enum_ctl_put()
4999 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_LEVEL_SWITCH, in scarlett2_level_enum_ctl_put()
5019 static int scarlett2_update_input_pad(struct usb_mixer_interface *mixer) in scarlett2_update_input_pad() argument
5021 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_pad()
5030 mixer, SCARLETT2_CONFIG_PAD_SWITCH, in scarlett2_update_input_pad()
5038 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_pad_ctl_get() local
5039 struct scarlett2_data *private = mixer->private_data; in scarlett2_pad_ctl_get()
5050 err = scarlett2_update_input_pad(mixer); in scarlett2_pad_ctl_get()
5066 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_pad_ctl_put() local
5067 struct scarlett2_data *private = mixer->private_data; in scarlett2_pad_ctl_put()
5088 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_PAD_SWITCH, in scarlett2_pad_ctl_put()
5108 static int scarlett2_update_input_air(struct usb_mixer_interface *mixer) in scarlett2_update_input_air() argument
5110 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_air()
5119 mixer, SCARLETT2_CONFIG_AIR_SWITCH, in scarlett2_update_input_air()
5127 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_air_ctl_get() local
5128 struct scarlett2_data *private = mixer->private_data; in scarlett2_air_ctl_get()
5139 err = scarlett2_update_input_air(mixer); in scarlett2_air_ctl_get()
5154 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_air_ctl_put() local
5155 struct scarlett2_data *private = mixer->private_data; in scarlett2_air_ctl_put()
5167 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_air_ctl_put()
5180 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_AIR_SWITCH, in scarlett2_air_ctl_put()
5197 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_air_with_drive_ctl_info() local
5198 struct scarlett2_data *private = mixer->private_data; in scarlett2_air_with_drive_ctl_info()
5208 err = scarlett2_check_autogain_updated(mixer); in scarlett2_air_with_drive_ctl_info()
5238 static int scarlett2_update_input_dsp(struct usb_mixer_interface *mixer) in scarlett2_update_input_dsp() argument
5240 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_dsp()
5249 mixer, SCARLETT2_CONFIG_DSP_SWITCH, in scarlett2_update_input_dsp()
5257 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_dsp_ctl_get() local
5258 struct scarlett2_data *private = mixer->private_data; in scarlett2_dsp_ctl_get()
5269 err = scarlett2_update_input_dsp(mixer); in scarlett2_dsp_ctl_get()
5284 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_dsp_ctl_put() local
5285 struct scarlett2_data *private = mixer->private_data; in scarlett2_dsp_ctl_put()
5297 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_dsp_ctl_put()
5310 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_DSP_SWITCH, in scarlett2_dsp_ctl_put()
5330 static int scarlett2_update_compressor_values(struct usb_mixer_interface *mixer) in scarlett2_update_compressor_values() argument
5332 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_compressor_values()
5340 mixer, SCARLETT2_CONFIG_COMPRESSOR_PARAMS, in scarlett2_update_compressor_values()
5367 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_compressor_ctl_get()
5378 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_compressor_ctl_put() local
5379 struct scarlett2_data *private = mixer->private_data; in scarlett2_compressor_ctl_put()
5396 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_compressor_ctl_put()
5416 mixer, private->config_set->param_buf_addr + 1, 1, channel); in scarlett2_compressor_ctl_put()
5421 mixer, SCARLETT2_CONFIG_COMPRESSOR_PARAMS, index, scaled_val); in scarlett2_compressor_ctl_put()
5461 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_precomp_flt_switch_ctl_get()
5472 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_peq_flt_switch_ctl_get()
5484 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_precomp_flt_switch_ctl_put() local
5485 struct scarlett2_data *private = mixer->private_data; in scarlett2_precomp_flt_switch_ctl_put()
5505 mixer, SCARLETT2_CONFIG_PRECOMP_FLT_SWITCH, in scarlett2_precomp_flt_switch_ctl_put()
5519 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_peq_flt_switch_ctl_put() local
5520 struct scarlett2_data *private = mixer->private_data; in scarlett2_peq_flt_switch_ctl_put()
5540 mixer, SCARLETT2_CONFIG_PEQ_FLT_SWITCH, in scarlett2_peq_flt_switch_ctl_put()
5566 static int scarlett2_update_filter_values(struct usb_mixer_interface *mixer) in scarlett2_update_filter_values() argument
5568 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_filter_values()
5580 mixer, SCARLETT2_CONFIG_PRECOMP_FLT_SWITCH, in scarlett2_update_filter_values()
5586 mixer, SCARLETT2_CONFIG_PEQ_FLT_SWITCH, in scarlett2_update_filter_values()
5594 mixer, SCARLETT2_CONFIG_PRECOMP_FLT_PARAMS, in scarlett2_update_filter_values()
5607 mixer, SCARLETT2_CONFIG_PEQ_FLT_PARAMS, in scarlett2_update_filter_values()
5634 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_precomp_flt_ctl_get()
5650 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_peq_flt_ctl_get()
5666 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_precomp_flt_ctl_put() local
5667 struct scarlett2_data *private = mixer->private_data; in scarlett2_precomp_flt_ctl_put()
5679 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_precomp_flt_ctl_put()
5701 mixer, private->config_set->param_buf_addr, 1, index); in scarlett2_precomp_flt_ctl_put()
5706 mixer, SCARLETT2_CONFIG_PRECOMP_FLT_PARAMS, in scarlett2_precomp_flt_ctl_put()
5722 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_peq_flt_ctl_put() local
5723 struct scarlett2_data *private = mixer->private_data; in scarlett2_peq_flt_ctl_put()
5742 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_peq_flt_ctl_put()
5764 mixer, private->config_set->param_buf_addr, 1, dst_index); in scarlett2_peq_flt_ctl_put()
5769 mixer, SCARLETT2_CONFIG_PEQ_FLT_PARAMS, in scarlett2_peq_flt_ctl_put()
5810 static int scarlett2_update_input_mute(struct usb_mixer_interface *mixer) in scarlett2_update_input_mute() argument
5812 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_mute()
5821 mixer, SCARLETT2_CONFIG_INPUT_MUTE_SWITCH, in scarlett2_update_input_mute()
5829 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_input_mute_ctl_get() local
5830 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_mute_ctl_get()
5841 err = scarlett2_update_input_mute(mixer); in scarlett2_input_mute_ctl_get()
5857 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_input_mute_ctl_put() local
5858 struct scarlett2_data *private = mixer->private_data; in scarlett2_input_mute_ctl_put()
5870 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_input_mute_ctl_put()
5884 mixer, SCARLETT2_CONFIG_INPUT_MUTE_SWITCH, in scarlett2_input_mute_ctl_put()
5904 static int scarlett2_update_input_phantom(struct usb_mixer_interface *mixer) in scarlett2_update_input_phantom() argument
5906 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_input_phantom()
5916 mixer, SCARLETT2_CONFIG_PHANTOM_SWITCH, in scarlett2_update_input_phantom()
5924 mixer, SCARLETT2_CONFIG_PHANTOM_PERSISTENCE, in scarlett2_update_input_phantom()
5944 static void scarlett2_phantom_update_access(struct usb_mixer_interface *mixer) in scarlett2_phantom_update_access() argument
5946 struct scarlett2_data *private = mixer->private_data; in scarlett2_phantom_update_access()
5961 static void scarlett2_phantom_notify_access(struct usb_mixer_interface *mixer) in scarlett2_phantom_notify_access() argument
5963 struct snd_card *card = mixer->chip->card; in scarlett2_phantom_notify_access()
5964 struct scarlett2_data *private = mixer->private_data; in scarlett2_phantom_notify_access()
5977 struct usb_mixer_interface *mixer) in scarlett2_check_input_phantom_updated() argument
5979 struct scarlett2_data *private = mixer->private_data; in scarlett2_check_input_phantom_updated()
5985 err = scarlett2_update_input_phantom(mixer); in scarlett2_check_input_phantom_updated()
5989 scarlett2_phantom_update_access(mixer); in scarlett2_check_input_phantom_updated()
5998 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_phantom_ctl_get() local
5999 struct scarlett2_data *private = mixer->private_data; in scarlett2_phantom_ctl_get()
6009 err = scarlett2_check_input_phantom_updated(mixer); in scarlett2_phantom_ctl_get()
6025 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_phantom_ctl_put() local
6026 struct scarlett2_data *private = mixer->private_data; in scarlett2_phantom_ctl_put()
6039 err = scarlett2_check_put_during_autogain(mixer); in scarlett2_phantom_ctl_put()
6056 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_PHANTOM_SWITCH, in scarlett2_phantom_ctl_put()
6061 scarlett2_phantom_update_access(mixer); in scarlett2_phantom_ctl_put()
6062 scarlett2_phantom_notify_access(mixer); in scarlett2_phantom_ctl_put()
6083 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_phantom_persistence_ctl_get()
6093 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_phantom_persistence_ctl_put() local
6094 struct scarlett2_data *private = mixer->private_data; in scarlett2_phantom_persistence_ctl_put()
6116 mixer, SCARLETT2_CONFIG_PHANTOM_PERSISTENCE, index, val); in scarlett2_phantom_persistence_ctl_put()
6135 static int scarlett2_update_monitor_other(struct usb_mixer_interface *mixer) in scarlett2_update_monitor_other() argument
6137 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_monitor_other()
6160 mixer, SCARLETT2_CONFIG_MONITOR_OTHER_ENABLE, in scarlett2_update_monitor_other()
6166 mixer, SCARLETT2_CONFIG_MONITOR_OTHER_SWITCH, in scarlett2_update_monitor_other()
6185 err = scarlett2_usb_get_config(mixer, in scarlett2_update_monitor_other()
6211 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_speaker_switch_enum_ctl_get() local
6212 struct scarlett2_data *private = mixer->private_data; in scarlett2_speaker_switch_enum_ctl_get()
6223 err = scarlett2_update_monitor_other(mixer); in scarlett2_speaker_switch_enum_ctl_get()
6237 static int scarlett2_speaker_switch_enable(struct usb_mixer_interface *mixer) in scarlett2_speaker_switch_enable() argument
6239 struct snd_card *card = mixer->chip->card; in scarlett2_speaker_switch_enable()
6240 struct scarlett2_data *private = mixer->private_data; in scarlett2_speaker_switch_enable()
6248 err = scarlett2_sw_hw_change(private->mixer, i, 1); in scarlett2_speaker_switch_enable()
6272 static void scarlett2_speaker_switch_disable(struct usb_mixer_interface *mixer) in scarlett2_speaker_switch_disable() argument
6274 struct snd_card *card = mixer->chip->card; in scarlett2_speaker_switch_disable()
6275 struct scarlett2_data *private = mixer->private_data; in scarlett2_speaker_switch_disable()
6295 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_speaker_switch_enum_ctl_put() local
6296 struct scarlett2_data *private = mixer->private_data; in scarlett2_speaker_switch_enum_ctl_put()
6317 mixer, SCARLETT2_CONFIG_MONITOR_OTHER_ENABLE, in scarlett2_speaker_switch_enum_ctl_put()
6324 mixer, SCARLETT2_CONFIG_MONITOR_OTHER_SWITCH, in scarlett2_speaker_switch_enum_ctl_put()
6331 err = scarlett2_speaker_switch_enable(mixer); in scarlett2_speaker_switch_enum_ctl_put()
6333 scarlett2_speaker_switch_disable(mixer); in scarlett2_speaker_switch_enum_ctl_put()
6351 static int scarlett2_add_speaker_switch_ctl(struct usb_mixer_interface *mixer) in scarlett2_add_speaker_switch_ctl() argument
6353 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_speaker_switch_ctl()
6360 mixer, &scarlett2_speaker_switch_enum_ctl, in scarlett2_add_speaker_switch_ctl()
6381 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_talkback_enum_ctl_get() local
6382 struct scarlett2_data *private = mixer->private_data; in scarlett2_talkback_enum_ctl_get()
6393 err = scarlett2_update_monitor_other(mixer); in scarlett2_talkback_enum_ctl_get()
6408 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_talkback_enum_ctl_put() local
6409 struct scarlett2_data *private = mixer->private_data; in scarlett2_talkback_enum_ctl_put()
6430 mixer, SCARLETT2_CONFIG_MONITOR_OTHER_ENABLE, in scarlett2_talkback_enum_ctl_put()
6437 mixer, SCARLETT2_CONFIG_MONITOR_OTHER_SWITCH, in scarlett2_talkback_enum_ctl_put()
6459 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_talkback_map_ctl_get() local
6460 struct scarlett2_data *private = mixer->private_data; in scarlett2_talkback_map_ctl_get()
6472 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_talkback_map_ctl_put() local
6473 struct scarlett2_data *private = mixer->private_data; in scarlett2_talkback_map_ctl_put()
6497 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_TALKBACK_MAP, in scarlett2_talkback_map_ctl_put()
6515 static int scarlett2_add_talkback_ctls(struct usb_mixer_interface *mixer) in scarlett2_add_talkback_ctls() argument
6517 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_talkback_ctls()
6526 mixer, &scarlett2_talkback_enum_ctl, in scarlett2_add_talkback_ctls()
6535 err = scarlett2_add_new_ctl(mixer, &scarlett2_talkback_map_ctl, in scarlett2_add_talkback_ctls()
6550 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_dim_mute_ctl_get() local
6551 struct scarlett2_data *private = mixer->private_data; in scarlett2_dim_mute_ctl_get()
6562 err = scarlett2_update_dim_mute(mixer); in scarlett2_dim_mute_ctl_get()
6577 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_dim_mute_ctl_put() local
6578 struct scarlett2_data *private = mixer->private_data; in scarlett2_dim_mute_ctl_put()
6598 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_DIM_MUTE, in scarlett2_dim_mute_ctl_put()
6609 snd_ctl_notify(mixer->chip->card, in scarlett2_dim_mute_ctl_put()
6630 static int scarlett2_add_line_out_ctls(struct usb_mixer_interface *mixer) in scarlett2_add_line_out_ctls() argument
6632 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_line_out_ctls()
6641 err = scarlett2_add_new_ctl(mixer, in scarlett2_add_line_out_ctls()
6652 err = scarlett2_add_new_ctl(mixer, in scarlett2_add_line_out_ctls()
6680 err = scarlett2_add_new_ctl(mixer, in scarlett2_add_line_out_ctls()
6690 err = scarlett2_add_new_ctl(mixer, in scarlett2_add_line_out_ctls()
6705 scarlett2_vol_ctl_set_writable(mixer, i, 0); in scarlett2_add_line_out_ctls()
6710 err = scarlett2_add_new_ctl(mixer, in scarlett2_add_line_out_ctls()
6729 mixer, &scarlett2_dim_mute_ctl, in scarlett2_add_line_out_ctls()
6741 static int scarlett2_add_dsp_ctls(struct usb_mixer_interface *mixer, int i) in scarlett2_add_dsp_ctls() argument
6743 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_dsp_ctls()
6758 mixer, &scarlett2_compressor_ctl, in scarlett2_add_dsp_ctls()
6768 mixer, &scarlett2_precomp_flt_switch_ctl, in scarlett2_add_dsp_ctls()
6775 mixer, &scarlett2_peq_flt_switch_ctl, in scarlett2_add_dsp_ctls()
6784 mixer, &scarlett2_precomp_flt_ctl, in scarlett2_add_dsp_ctls()
6794 mixer, &scarlett2_peq_flt_ctl, in scarlett2_add_dsp_ctls()
6804 static int scarlett2_add_line_in_ctls(struct usb_mixer_interface *mixer) in scarlett2_add_line_in_ctls() argument
6806 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_line_in_ctls()
6817 err = scarlett2_add_new_ctl(mixer, &scarlett2_level_enum_ctl, in scarlett2_add_line_in_ctls()
6826 err = scarlett2_add_new_ctl(mixer, &scarlett2_pad_ctl, in scarlett2_add_line_in_ctls()
6837 mixer, &scarlett2_air_ctl[info->air_option], in scarlett2_add_line_in_ctls()
6846 err = scarlett2_add_new_ctl(mixer, &scarlett2_dsp_ctl, in scarlett2_add_line_in_ctls()
6851 err = scarlett2_add_dsp_ctls(mixer, i); in scarlett2_add_line_in_ctls()
6860 mixer, &scarlett2_input_mute_ctl, in scarlett2_add_line_in_ctls()
6873 mixer, &scarlett2_phantom_ctl, in scarlett2_add_line_in_ctls()
6886 mixer, &scarlett2_phantom_ctl, in scarlett2_add_line_in_ctls()
6896 mixer, &scarlett2_phantom_persistence_ctl, 0, 1, in scarlett2_add_line_in_ctls()
6906 mixer, &scarlett2_input_select_ctl, 0, 1, in scarlett2_add_line_in_ctls()
6919 mixer, &scarlett2_input_link_ctl, in scarlett2_add_line_in_ctls()
6931 mixer, &scarlett2_input_gain_ctl, in scarlett2_add_line_in_ctls()
6941 mixer, &scarlett2_autogain_switch_ctl, in scarlett2_add_line_in_ctls()
6949 mixer, &scarlett2_autogain_status_ctl, in scarlett2_add_line_in_ctls()
6961 mixer, &scarlett2_ag_target_ctl, in scarlett2_add_line_in_ctls()
6972 mixer, &scarlett2_safe_ctl, in scarlett2_add_line_in_ctls()
6982 mixer, &scarlett2_pcm_input_switch_ctl, 0, 1, in scarlett2_add_line_in_ctls()
6992 /*** Mixer Volume Controls ***/
6994 static int scarlett2_update_mix(struct usb_mixer_interface *mixer) in scarlett2_update_mix() argument
6996 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_mix()
7002 err = scarlett2_usb_get_mix(mixer, i); in scarlett2_update_mix()
7027 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_mixer_ctl_get() local
7028 struct scarlett2_data *private = mixer->private_data; in scarlett2_mixer_ctl_get()
7039 err = scarlett2_update_mix(mixer); in scarlett2_mixer_ctl_get()
7054 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_mixer_ctl_put() local
7055 struct scarlett2_data *private = mixer->private_data; in scarlett2_mixer_ctl_put()
7075 err = scarlett2_usb_set_mix(mixer, mix_num); in scarlett2_mixer_ctl_put()
7102 static int scarlett2_add_mixer_ctls(struct usb_mixer_interface *mixer) in scarlett2_add_mixer_ctls() argument
7104 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_mixer_ctls()
7114 err = scarlett2_add_new_ctl(mixer, &scarlett2_mixer_ctl, in scarlett2_add_mixer_ctls()
7126 static int scarlett2_update_direct_monitor(struct usb_mixer_interface *mixer) in scarlett2_update_direct_monitor() argument
7128 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_direct_monitor()
7136 mixer, SCARLETT2_CONFIG_DIRECT_MONITOR, in scarlett2_update_direct_monitor()
7140 static int scarlett2_update_monitor_mix(struct usb_mixer_interface *mixer) in scarlett2_update_monitor_mix() argument
7142 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_monitor_mix()
7150 mixer, SCARLETT2_CONFIG_DIRECT_MONITOR_GAIN, in scarlett2_update_monitor_mix()
7166 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_direct_monitor_ctl_get() local
7167 struct scarlett2_data *private = mixer->private_data; in scarlett2_direct_monitor_ctl_get()
7178 err = scarlett2_update_direct_monitor(mixer); in scarlett2_direct_monitor_ctl_get()
7193 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_direct_monitor_ctl_put() local
7194 struct scarlett2_data *private = mixer->private_data; in scarlett2_direct_monitor_ctl_put()
7216 mixer, SCARLETT2_CONFIG_DIRECT_MONITOR, index, val); in scarlett2_direct_monitor_ctl_put()
7259 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_monitor_mix_ctl_get()
7270 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_monitor_mix_ctl_put() local
7271 struct scarlett2_data *private = mixer->private_data; in scarlett2_monitor_mix_ctl_put()
7291 mixer, SCARLETT2_CONFIG_DIRECT_MONITOR_GAIN, in scarlett2_monitor_mix_ctl_put()
7313 static int scarlett2_add_direct_monitor_ctls(struct usb_mixer_interface *mixer) in scarlett2_add_direct_monitor_ctls() argument
7315 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_direct_monitor_ctls()
7328 mixer, &scarlett2_direct_monitor_ctl[info->direct_monitor - 1], in scarlett2_add_direct_monitor_ctls()
7360 mixer, &scarlett2_monitor_mix_ctl, in scarlett2_add_direct_monitor_ctls()
7376 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_mux_src_enum_ctl_info()
7419 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_mux_src_enum_ctl_get() local
7420 struct scarlett2_data *private = mixer->private_data; in scarlett2_mux_src_enum_ctl_get()
7432 err = scarlett2_usb_get_mux(mixer); in scarlett2_mux_src_enum_ctl_get()
7447 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_mux_src_enum_ctl_put() local
7448 struct scarlett2_data *private = mixer->private_data; in scarlett2_mux_src_enum_ctl_put()
7467 err = scarlett2_usb_set_mux(mixer); in scarlett2_mux_src_enum_ctl_put()
7484 static int scarlett2_add_mux_enums(struct usb_mixer_interface *mixer) in scarlett2_add_mux_enums() argument
7486 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_mux_enums()
7513 err = scarlett2_add_new_ctl(mixer, in scarlett2_add_mux_enums()
7544 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_meter_ctl_get() local
7545 struct scarlett2_data *private = mixer->private_data; in scarlett2_meter_ctl_get()
7557 err = scarlett2_usb_get_meter_levels(mixer, elem->channels, in scarlett2_meter_ctl_get()
7589 static int scarlett2_add_meter_ctl(struct usb_mixer_interface *mixer) in scarlett2_add_meter_ctl() argument
7591 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_meter_ctl()
7593 /* devices without a mixer also don't support reporting levels */ in scarlett2_add_meter_ctl()
7597 return scarlett2_add_new_ctl(mixer, &scarlett2_meter_ctl, in scarlett2_add_meter_ctl()
7608 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_msd_ctl_get()
7618 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_msd_ctl_put() local
7619 struct scarlett2_data *private = mixer->private_data; in scarlett2_msd_ctl_put()
7639 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_MSD_SWITCH, in scarlett2_msd_ctl_put()
7657 static int scarlett2_add_msd_ctl(struct usb_mixer_interface *mixer) in scarlett2_add_msd_ctl() argument
7659 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_msd_ctl()
7665 if (!private->msd_switch && !(mixer->chip->setup & SCARLETT2_MSD_ENABLE)) in scarlett2_add_msd_ctl()
7669 return scarlett2_add_new_ctl(mixer, &scarlett2_msd_ctl, in scarlett2_add_msd_ctl()
7679 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_standalone_ctl_get()
7689 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_standalone_ctl_put() local
7690 struct scarlett2_data *private = mixer->private_data; in scarlett2_standalone_ctl_put()
7710 err = scarlett2_usb_set_config(mixer, in scarlett2_standalone_ctl_put()
7729 static int scarlett2_add_standalone_ctl(struct usb_mixer_interface *mixer) in scarlett2_add_standalone_ctl() argument
7731 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_standalone_ctl()
7738 return scarlett2_add_new_ctl(mixer, &scarlett2_standalone_ctl, in scarlett2_add_standalone_ctl()
7744 static int scarlett2_update_power_status(struct usb_mixer_interface *mixer) in scarlett2_update_power_status() argument
7746 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_power_status()
7752 err = scarlett2_usb_get_config(mixer, SCARLETT2_CONFIG_POWER_EXT, in scarlett2_update_power_status()
7757 err = scarlett2_usb_get_config(mixer, SCARLETT2_CONFIG_POWER_LOW, in scarlett2_update_power_status()
7776 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_power_status_ctl_get() local
7777 struct scarlett2_data *private = mixer->private_data; in scarlett2_power_status_ctl_get()
7783 err = scarlett2_update_power_status(mixer); in scarlett2_power_status_ctl_get()
7812 static int scarlett2_add_power_status_ctl(struct usb_mixer_interface *mixer) in scarlett2_add_power_status_ctl() argument
7814 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_power_status_ctl()
7821 return scarlett2_add_new_ctl(mixer, &scarlett2_power_status_ctl, in scarlett2_add_power_status_ctl()
7828 static int scarlett2_update_bluetooth_volume(struct usb_mixer_interface *mixer) in scarlett2_update_bluetooth_volume() argument
7830 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_bluetooth_volume()
7838 err = scarlett2_usb_get_config(mixer, in scarlett2_update_bluetooth_volume()
7851 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_bluetooth_volume_ctl_get() local
7852 struct scarlett2_data *private = mixer->private_data; in scarlett2_bluetooth_volume_ctl_get()
7863 err = scarlett2_update_bluetooth_volume(mixer); in scarlett2_bluetooth_volume_ctl_get()
7878 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_bluetooth_volume_ctl_put() local
7879 struct scarlett2_data *private = mixer->private_data; in scarlett2_bluetooth_volume_ctl_put()
7897 err = scarlett2_usb_set_config(mixer, in scarlett2_bluetooth_volume_ctl_put()
7928 struct usb_mixer_interface *mixer) in scarlett2_add_bluetooth_volume_ctl() argument
7930 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_bluetooth_volume_ctl()
7936 return scarlett2_add_new_ctl(mixer, &scarlett2_bluetooth_volume_ctl, in scarlett2_add_bluetooth_volume_ctl()
7943 static int scarlett2_update_spdif_mode(struct usb_mixer_interface *mixer) in scarlett2_update_spdif_mode() argument
7945 struct scarlett2_data *private = mixer->private_data; in scarlett2_update_spdif_mode()
7953 err = scarlett2_usb_get_config(mixer, SCARLETT2_CONFIG_SPDIF_MODE, in scarlett2_update_spdif_mode()
7973 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_spdif_mode_ctl_info()
7988 struct scarlett2_data *private = elem->head.mixer->private_data; in scarlett2_spdif_mode_ctl_get()
7998 struct usb_mixer_interface *mixer = elem->head.mixer; in scarlett2_spdif_mode_ctl_put() local
7999 struct scarlett2_data *private = mixer->private_data; in scarlett2_spdif_mode_ctl_put()
8025 mixer, SCARLETT2_CONFIG_SPDIF_MODE, 0, in scarlett2_spdif_mode_ctl_put()
8043 static int scarlett2_add_spdif_mode_ctl(struct usb_mixer_interface *mixer) in scarlett2_add_spdif_mode_ctl() argument
8045 struct scarlett2_data *private = mixer->private_data; in scarlett2_add_spdif_mode_ctl()
8050 return scarlett2_add_new_ctl(mixer, &scarlett2_spdif_mode_ctl, in scarlett2_add_spdif_mode_ctl()
8059 static void scarlett2_notify_sync(struct usb_mixer_interface *mixer) in scarlett2_notify_sync() argument
8061 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_sync()
8065 snd_ctl_notify(mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE, in scarlett2_notify_sync()
8070 static void scarlett2_notify_monitor(struct usb_mixer_interface *mixer) in scarlett2_notify_monitor() argument
8072 struct snd_card *card = mixer->chip->card; in scarlett2_notify_monitor()
8073 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_monitor()
8081 snd_ctl_notify(mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE, in scarlett2_notify_monitor()
8091 static void scarlett2_notify_volume(struct usb_mixer_interface *mixer) in scarlett2_notify_volume() argument
8093 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_volume()
8097 snd_ctl_notify(mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE, in scarlett2_notify_volume()
8099 snd_ctl_notify(mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE, in scarlett2_notify_volume()
8104 static void scarlett2_notify_dim_mute(struct usb_mixer_interface *mixer) in scarlett2_notify_dim_mute() argument
8106 struct snd_card *card = mixer->chip->card; in scarlett2_notify_dim_mute()
8107 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_dim_mute()
8126 static void scarlett2_notify_input_level(struct usb_mixer_interface *mixer) in scarlett2_notify_input_level() argument
8128 struct snd_card *card = mixer->chip->card; in scarlett2_notify_input_level()
8129 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_level()
8141 static void scarlett2_notify_input_pad(struct usb_mixer_interface *mixer) in scarlett2_notify_input_pad() argument
8143 struct snd_card *card = mixer->chip->card; in scarlett2_notify_input_pad()
8144 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_pad()
8156 static void scarlett2_notify_input_air(struct usb_mixer_interface *mixer) in scarlett2_notify_input_air() argument
8158 struct snd_card *card = mixer->chip->card; in scarlett2_notify_input_air()
8159 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_air()
8171 static void scarlett2_notify_input_dsp(struct usb_mixer_interface *mixer) in scarlett2_notify_input_dsp() argument
8173 struct snd_card *card = mixer->chip->card; in scarlett2_notify_input_dsp()
8174 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_dsp()
8186 static void scarlett2_notify_input_mute(struct usb_mixer_interface *mixer) in scarlett2_notify_input_mute() argument
8188 struct snd_card *card = mixer->chip->card; in scarlett2_notify_input_mute()
8189 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_mute()
8201 static void scarlett2_notify_input_phantom(struct usb_mixer_interface *mixer) in scarlett2_notify_input_phantom() argument
8203 struct snd_card *card = mixer->chip->card; in scarlett2_notify_input_phantom()
8204 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_phantom()
8214 scarlett2_phantom_notify_access(mixer); in scarlett2_notify_input_phantom()
8218 static void scarlett2_notify_input_other(struct usb_mixer_interface *mixer) in scarlett2_notify_input_other() argument
8220 scarlett2_notify_input_level(mixer); in scarlett2_notify_input_other()
8221 scarlett2_notify_input_pad(mixer); in scarlett2_notify_input_other()
8222 scarlett2_notify_input_air(mixer); in scarlett2_notify_input_other()
8223 scarlett2_notify_input_phantom(mixer); in scarlett2_notify_input_other()
8227 static void scarlett2_notify_input_select(struct usb_mixer_interface *mixer) in scarlett2_notify_input_select() argument
8229 struct snd_card *card = mixer->chip->card; in scarlett2_notify_input_select()
8230 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_select()
8250 static void scarlett2_notify_input_gain(struct usb_mixer_interface *mixer) in scarlett2_notify_input_gain() argument
8252 struct snd_card *card = mixer->chip->card; in scarlett2_notify_input_gain()
8253 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_gain()
8268 static void scarlett2_notify_autogain(struct usb_mixer_interface *mixer) in scarlett2_notify_autogain() argument
8270 struct snd_card *card = mixer->chip->card; in scarlett2_notify_autogain()
8271 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_autogain()
8293 scarlett2_autogain_notify_access(mixer); in scarlett2_notify_autogain()
8297 static void scarlett2_notify_input_safe(struct usb_mixer_interface *mixer) in scarlett2_notify_input_safe() argument
8299 struct snd_card *card = mixer->chip->card; in scarlett2_notify_input_safe()
8300 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_input_safe()
8315 static void scarlett2_notify_monitor_other(struct usb_mixer_interface *mixer) in scarlett2_notify_monitor_other() argument
8317 struct snd_card *card = mixer->chip->card; in scarlett2_notify_monitor_other()
8318 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_monitor_other()
8337 scarlett2_notify_dim_mute(mixer); in scarlett2_notify_monitor_other()
8349 static void scarlett2_notify_direct_monitor(struct usb_mixer_interface *mixer) in scarlett2_notify_direct_monitor() argument
8351 struct snd_card *card = mixer->chip->card; in scarlett2_notify_direct_monitor()
8352 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_direct_monitor()
8373 static void scarlett2_notify_power_status(struct usb_mixer_interface *mixer) in scarlett2_notify_power_status() argument
8375 struct snd_card *card = mixer->chip->card; in scarlett2_notify_power_status()
8376 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_power_status()
8385 static void scarlett2_notify_mux(struct usb_mixer_interface *mixer) in scarlett2_notify_mux() argument
8387 struct snd_card *card = mixer->chip->card; in scarlett2_notify_mux()
8388 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_mux()
8399 static void scarlett2_notify_pcm_input_switch(struct usb_mixer_interface *mixer) in scarlett2_notify_pcm_input_switch() argument
8401 struct snd_card *card = mixer->chip->card; in scarlett2_notify_pcm_input_switch()
8402 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_pcm_input_switch()
8409 scarlett2_notify_mux(mixer); in scarlett2_notify_pcm_input_switch()
8413 static void scarlett2_notify_bluetooth(struct usb_mixer_interface *mixer) in scarlett2_notify_bluetooth() argument
8415 struct snd_card *card = mixer->chip->card; in scarlett2_notify_bluetooth()
8416 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_bluetooth()
8430 static void scarlett2_notify_ack(struct usb_mixer_interface *mixer) in scarlett2_notify_ack() argument
8432 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify_ack()
8442 struct usb_mixer_interface *mixer = urb->context; in scarlett2_notify() local
8446 struct scarlett2_data *private = mixer->private_data; in scarlett2_notify()
8465 notifications->func(mixer); in scarlett2_notify()
8471 usb_audio_warn(mixer->chip, in scarlett2_notify()
8479 urb->dev = mixer->chip->dev; in scarlett2_notify()
8488 static void scarlett2_private_free(struct usb_mixer_interface *mixer) in scarlett2_private_free() argument
8490 struct scarlett2_data *private = mixer->private_data; in scarlett2_private_free()
8494 mixer->private_data = NULL; in scarlett2_private_free()
8497 static void scarlett2_private_suspend(struct usb_mixer_interface *mixer) in scarlett2_private_suspend() argument
8499 struct scarlett2_data *private = mixer->private_data; in scarlett2_private_suspend()
8502 scarlett2_config_save(private->mixer); in scarlett2_private_suspend()
8525 /* Mixer inputs are mux outputs and vice versa. in scarlett2_count_io()
8527 * doesn't have mixer controls. in scarlett2_count_io()
8588 static int scarlett2_init_private(struct usb_mixer_interface *mixer, in scarlett2_init_private() argument
8601 mixer->private_data = private; in scarlett2_init_private()
8602 mixer->private_free = scarlett2_private_free; in scarlett2_init_private()
8603 mixer->private_suspend = scarlett2_private_suspend; 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()
8616 static int scarlett2_init_notify(struct usb_mixer_interface *mixer) in scarlett2_init_notify() argument
8618 struct usb_device *dev = mixer->chip->dev; in scarlett2_init_notify()
8619 struct scarlett2_data *private = mixer->private_data; in scarlett2_init_notify()
8623 if (mixer->urb) { in scarlett2_init_notify()
8624 usb_audio_err(mixer->chip, in scarlett2_init_notify()
8625 "%s: mixer urb already in use!\n", __func__); in scarlett2_init_notify()
8632 mixer->urb = usb_alloc_urb(0, GFP_KERNEL); in scarlett2_init_notify()
8633 if (!mixer->urb) in scarlett2_init_notify()
8640 usb_fill_int_urb(mixer->urb, dev, pipe, in scarlett2_init_notify()
8642 scarlett2_notify, mixer, private->bInterval); in scarlett2_init_notify()
8646 return usb_submit_urb(mixer->urb, GFP_KERNEL); in scarlett2_init_notify()
8650 static int scarlett2_usb_init(struct usb_mixer_interface *mixer) in scarlett2_usb_init() argument
8652 struct usb_device *dev = mixer->chip->dev; in scarlett2_usb_init()
8653 struct scarlett2_data *private = mixer->private_data; in scarlett2_usb_init()
8674 err = scarlett2_init_notify(mixer); in scarlett2_usb_init()
8688 err = scarlett2_usb(mixer, SCARLETT2_USB_INIT_1, NULL, 0, NULL, 0); in scarlett2_usb_init()
8694 err = scarlett2_usb(mixer, SCARLETT2_USB_INIT_2, in scarlett2_usb_init()
8702 usb_audio_info(mixer->chip, in scarlett2_usb_init()
8712 static int scarlett2_get_flash_segment_nums(struct usb_mixer_interface *mixer) in scarlett2_get_flash_segment_nums() argument
8714 struct scarlett2_data *private = mixer->private_data; in scarlett2_get_flash_segment_nums()
8729 err = scarlett2_usb(mixer, SCARLETT2_USB_INFO_FLASH, in scarlett2_get_flash_segment_nums()
8740 usb_audio_err(mixer->chip, in scarlett2_get_flash_segment_nums()
8749 err = scarlett2_usb(mixer, SCARLETT2_USB_INFO_SEGMENT, in scarlett2_get_flash_segment_nums()
8753 usb_audio_err(mixer->chip, in scarlett2_get_flash_segment_nums()
8778 usb_audio_err(mixer->chip, in scarlett2_get_flash_segment_nums()
8784 usb_audio_err(mixer->chip, in scarlett2_get_flash_segment_nums()
8794 static int scarlett2_read_configs(struct usb_mixer_interface *mixer) in scarlett2_read_configs() argument
8796 struct scarlett2_data *private = mixer->private_data; in scarlett2_read_configs()
8802 mixer, SCARLETT2_CONFIG_MSD_SWITCH, in scarlett2_read_configs()
8809 usb_audio_err(mixer->chip, in scarlett2_read_configs()
8822 err = scarlett2_update_input_level(mixer); in scarlett2_read_configs()
8826 err = scarlett2_update_input_pad(mixer); in scarlett2_read_configs()
8830 err = scarlett2_update_input_air(mixer); in scarlett2_read_configs()
8834 err = scarlett2_update_input_dsp(mixer); in scarlett2_read_configs()
8838 err = scarlett2_update_compressor_values(mixer); in scarlett2_read_configs()
8842 err = scarlett2_update_filter_values(mixer); in scarlett2_read_configs()
8846 err = scarlett2_update_input_mute(mixer); in scarlett2_read_configs()
8850 err = scarlett2_update_input_phantom(mixer); in scarlett2_read_configs()
8854 err = scarlett2_update_direct_monitor(mixer); in scarlett2_read_configs()
8858 /* the rest of the configuration is for devices with a mixer */ in scarlett2_read_configs()
8862 err = scarlett2_update_monitor_mix(mixer); in scarlett2_read_configs()
8866 err = scarlett2_update_monitor_other(mixer); in scarlett2_read_configs()
8873 mixer, SCARLETT2_CONFIG_STANDALONE_SWITCH, in scarlett2_read_configs()
8881 err = scarlett2_update_power_status(mixer); in scarlett2_read_configs()
8886 err = scarlett2_update_sync(mixer); in scarlett2_read_configs()
8896 mixer, SCARLETT2_CONFIG_LINE_OUT_VOLUME, in scarlett2_read_configs()
8908 mixer, SCARLETT2_CONFIG_MUTE_SWITCH, in scarlett2_read_configs()
8921 mixer, SCARLETT2_CONFIG_SW_HW_SWITCH, in scarlett2_read_configs()
8933 err = scarlett2_update_volumes(mixer); in scarlett2_read_configs()
8937 err = scarlett2_update_dim_mute(mixer); in scarlett2_read_configs()
8941 err = scarlett2_update_input_select(mixer); in scarlett2_read_configs()
8945 err = scarlett2_update_input_gain(mixer); in scarlett2_read_configs()
8949 err = scarlett2_update_autogain(mixer); in scarlett2_read_configs()
8953 err = scarlett2_update_input_safe(mixer); in scarlett2_read_configs()
8959 err = scarlett2_update_pcm_input_switch(mixer); in scarlett2_read_configs()
8964 err = scarlett2_update_bluetooth_volume(mixer); in scarlett2_read_configs()
8968 err = scarlett2_update_spdif_mode(mixer); in scarlett2_read_configs()
8972 err = scarlett2_update_mix(mixer); in scarlett2_read_configs()
8976 return scarlett2_usb_get_mux(mixer); in scarlett2_read_configs()
8980 struct usb_mixer_interface *mixer) in get_scarlett2_device_entry() argument
8985 while (entry->usb_id && entry->usb_id != mixer->chip->usb_id) in get_scarlett2_device_entry()
8994 struct usb_mixer_interface *mixer, in snd_scarlett2_controls_create() argument
9001 err = scarlett2_init_private(mixer, entry); in snd_scarlett2_controls_create()
9005 private = mixer->private_data; in snd_scarlett2_controls_create()
9008 err = scarlett2_usb_init(mixer); in snd_scarlett2_controls_create()
9013 err = scarlett2_get_flash_segment_nums(mixer); in snd_scarlett2_controls_create()
9018 err = scarlett2_add_firmware_version_ctl(mixer); in snd_scarlett2_controls_create()
9023 err = scarlett2_add_min_firmware_version_ctl(mixer); in snd_scarlett2_controls_create()
9028 err = scarlett2_read_configs(mixer); in snd_scarlett2_controls_create()
9033 err = scarlett2_add_msd_ctl(mixer); in snd_scarlett2_controls_create()
9045 err = scarlett2_add_line_out_ctls(mixer); in snd_scarlett2_controls_create()
9050 err = scarlett2_add_line_in_ctls(mixer); in snd_scarlett2_controls_create()
9054 /* Create the input, output, and mixer mux input selections */ in snd_scarlett2_controls_create()
9055 err = scarlett2_add_mux_enums(mixer); in snd_scarlett2_controls_create()
9059 /* Create the matrix mixer controls */ in snd_scarlett2_controls_create()
9060 err = scarlett2_add_mixer_ctls(mixer); in snd_scarlett2_controls_create()
9065 err = scarlett2_add_meter_ctl(mixer); in snd_scarlett2_controls_create()
9070 err = scarlett2_add_sync_ctl(mixer); in snd_scarlett2_controls_create()
9075 err = scarlett2_add_direct_monitor_ctls(mixer); in snd_scarlett2_controls_create()
9080 err = scarlett2_add_speaker_switch_ctl(mixer); in snd_scarlett2_controls_create()
9085 err = scarlett2_add_talkback_ctls(mixer); in snd_scarlett2_controls_create()
9090 err = scarlett2_add_standalone_ctl(mixer); in snd_scarlett2_controls_create()
9095 err = scarlett2_add_power_status_ctl(mixer); in snd_scarlett2_controls_create()
9100 err = scarlett2_add_bluetooth_volume_ctl(mixer); in snd_scarlett2_controls_create()
9105 err = scarlett2_add_spdif_mode_ctl(mixer); in snd_scarlett2_controls_create()
9113 scarlett2_autogain_update_access(mixer); in snd_scarlett2_controls_create()
9114 scarlett2_phantom_update_access(mixer); in snd_scarlett2_controls_create()
9136 static int scarlett2_get_erase_progress(struct usb_mixer_interface *mixer) in scarlett2_get_erase_progress() argument
9138 struct scarlett2_data *private = mixer->private_data; in scarlett2_get_erase_progress()
9158 err = scarlett2_usb(mixer, SCARLETT2_USB_GET_ERASE, in scarlett2_get_erase_progress()
9171 static int scarlett2_wait_for_erase(struct usb_mixer_interface *mixer) in scarlett2_wait_for_erase() argument
9176 err = scarlett2_get_erase_progress(mixer); in scarlett2_wait_for_erase()
9192 static int scarlett2_reboot(struct usb_mixer_interface *mixer) in scarlett2_reboot() argument
9194 struct scarlett2_data *private = mixer->private_data; in scarlett2_reboot()
9198 int err = scarlett2_wait_for_erase(mixer); in scarlett2_reboot()
9204 return scarlett2_usb(mixer, SCARLETT2_USB_REBOOT, NULL, 0, NULL, 0); in scarlett2_reboot()
9209 struct usb_mixer_interface *mixer, in scarlett2_ioctl_select_flash_segment() argument
9212 struct scarlett2_data *private = mixer->private_data; in scarlett2_ioctl_select_flash_segment()
9225 usb_audio_err(mixer->chip, in scarlett2_ioctl_select_flash_segment()
9233 int err = scarlett2_wait_for_erase(mixer); in scarlett2_ioctl_select_flash_segment()
9248 struct usb_mixer_interface *mixer) in scarlett2_ioctl_erase_flash_segment() argument
9250 struct scarlett2_data *private = mixer->private_data; in scarlett2_ioctl_erase_flash_segment()
9277 err = scarlett2_usb(mixer, SCARLETT2_USB_ERASE_SEGMENT, in scarlett2_ioctl_erase_flash_segment()
9291 struct usb_mixer_interface *mixer, in scarlett2_ioctl_get_erase_progress() argument
9294 struct scarlett2_data *private = mixer->private_data; in scarlett2_ioctl_get_erase_progress()
9319 err = scarlett2_usb(mixer, SCARLETT2_USB_GET_ERASE, in scarlett2_ioctl_get_erase_progress()
9342 struct usb_mixer_interface *mixer = hw->private_data; in scarlett2_hwdep_open() local
9343 struct scarlett2_data *private = mixer->private_data; in scarlett2_hwdep_open()
9348 int err = scarlett2_wait_for_erase(mixer); in scarlett2_hwdep_open()
9363 struct usb_mixer_interface *mixer = hw->private_data; in scarlett2_hwdep_ioctl() local
9372 return scarlett2_reboot(mixer); in scarlett2_hwdep_ioctl()
9375 return scarlett2_ioctl_select_flash_segment(mixer, arg); in scarlett2_hwdep_ioctl()
9378 return scarlett2_ioctl_erase_flash_segment(mixer); in scarlett2_hwdep_ioctl()
9381 return scarlett2_ioctl_get_erase_progress(mixer, arg); in scarlett2_hwdep_ioctl()
9392 struct usb_mixer_interface *mixer = hw->private_data; in scarlett2_hwdep_read() local
9393 struct scarlett2_data *private = mixer->private_data; in scarlett2_hwdep_read()
9447 err = scarlett2_usb(mixer, SCARLETT2_USB_READ_SEGMENT, in scarlett2_hwdep_read()
9470 struct usb_mixer_interface *mixer = hw->private_data; in scarlett2_hwdep_write() local
9471 struct scarlett2_data *private = mixer->private_data; in scarlett2_hwdep_write()
9490 err = scarlett2_wait_for_erase(mixer); in scarlett2_hwdep_write()
9540 err = scarlett2_usb(mixer, SCARLETT2_USB_WRITE_SEGMENT, in scarlett2_hwdep_write()
9555 struct usb_mixer_interface *mixer = hw->private_data; in scarlett2_hwdep_release() local
9556 struct scarlett2_data *private = mixer->private_data; in scarlett2_hwdep_release()
9569 static int scarlett2_hwdep_init(struct usb_mixer_interface *mixer) in scarlett2_hwdep_init() argument
9574 err = snd_hwdep_new(mixer->chip->card, "Focusrite Control", 0, &hw); in scarlett2_hwdep_init()
9578 hw->private_data = mixer; in scarlett2_hwdep_init()
9599 struct usb_mixer_interface *mixer = entry->private_data; in scarlett2_devmap_read() local
9637 err = scarlett2_usb(mixer, SCARLETT2_USB_GET_DEVMAP, in scarlett2_devmap_read()
9663 static int scarlett2_devmap_init(struct usb_mixer_interface *mixer) in scarlett2_devmap_init() argument
9665 struct snd_card *card = mixer->chip->card; in scarlett2_devmap_init()
9666 struct scarlett2_data *private = mixer->private_data; in scarlett2_devmap_init()
9679 err = scarlett2_usb(mixer, SCARLETT2_USB_INFO_DEVMAP, in scarlett2_devmap_init()
9691 entry->private_data = mixer; in scarlett2_devmap_init()
9699 int snd_scarlett2_init(struct usb_mixer_interface *mixer) in snd_scarlett2_init() argument
9701 struct snd_usb_audio *chip = mixer->chip; in snd_scarlett2_init()
9706 if (!mixer->protocol) in snd_scarlett2_init()
9711 return snd_fcp_init(mixer); in snd_scarlett2_init()
9714 entry = get_scarlett2_device_entry(mixer); in snd_scarlett2_init()
9716 usb_audio_err(mixer->chip, in snd_scarlett2_init()
9726 "Focusrite %s Mixer Driver disabled " in snd_scarlett2_init()
9737 "Focusrite %s Mixer Driver enabled (pid=0x%04x); " in snd_scarlett2_init()
9743 err = snd_scarlett2_controls_create(mixer, entry); in snd_scarlett2_init()
9745 usb_audio_err(mixer->chip, in snd_scarlett2_init()
9746 "Error initialising %s Mixer Driver: %d", in snd_scarlett2_init()
9752 err = scarlett2_hwdep_init(mixer); in snd_scarlett2_init()
9754 usb_audio_err(mixer->chip, in snd_scarlett2_init()
9761 err = scarlett2_devmap_init(mixer); in snd_scarlett2_init()
9763 usb_audio_err(mixer->chip, in snd_scarlett2_init()