Lines Matching refs:mixer
35 * This ALSA mixer gives access to:
36 * - input, output, mixer-matrix muxes
37 * - 18x10 mixer-matrix gain stages
103 #include "mixer.h"
114 /* mixer range from -80dB to +6dB in 0.5dB steps */
121 /* map from (dB + 80) * 2 to mixer value
148 /* Maximum number of inputs to the mixer */
151 /* Maximum number of outputs from the mixer */
204 * - dst_descr: printf format string for mixer controls
224 struct usb_mixer_interface *mixer;
587 struct usb_mixer_interface *mixer, u32 cmd,
590 struct scarlett2_mixer_data *private = mixer->private_data;
617 err = snd_usb_ctl_msg(mixer->chip->dev,
618 usb_sndctrlpipe(mixer->chip->dev, 0),
628 mixer->chip,
637 err = snd_usb_ctl_msg(mixer->chip->dev,
638 usb_rcvctrlpipe(mixer->chip->dev, 0),
650 mixer->chip,
663 mixer->chip,
688 static void scarlett2_config_save(struct usb_mixer_interface *mixer)
692 scarlett2_usb(mixer, SCARLETT2_USB_DATA_CMD,
703 scarlett2_config_save(private->mixer);
710 struct usb_mixer_interface *mixer,
722 struct scarlett2_mixer_data *private = mixer->private_data;
731 err = scarlett2_usb(mixer, SCARLETT2_USB_SET_DATA,
739 err = scarlett2_usb(mixer, SCARLETT2_USB_DATA_CMD,
752 struct usb_mixer_interface *mixer,
762 return scarlett2_usb(mixer, SCARLETT2_USB_GET_DATA,
768 struct usb_mixer_interface *mixer,
775 return scarlett2_usb_get(mixer, config_item.offset, buf, size);
780 struct usb_mixer_interface *mixer,
783 return scarlett2_usb_get(mixer, SCARLETT2_USB_VOLUME_STATUS_OFFSET,
790 static int scarlett2_usb_set_mix(struct usb_mixer_interface *mixer,
793 struct scarlett2_mixer_data *private = mixer->private_data;
812 return scarlett2_usb(mixer, SCARLETT2_USB_SET_MIX,
836 static int scarlett2_usb_set_mux(struct usb_mixer_interface *mixer)
838 struct scarlett2_mixer_data *private = mixer->private_data;
899 err = scarlett2_usb(mixer, SCARLETT2_USB_SET_MUX,
910 static int scarlett2_usb_get_meter_levels(struct usb_mixer_interface *mixer,
924 err = scarlett2_usb(mixer, SCARLETT2_USB_GET_METER_LEVELS,
939 static int scarlett2_add_new_ctl(struct usb_mixer_interface *mixer,
952 /* We set USB_MIXER_BESPOKEN type, so that the core USB mixer code
956 elem->head.mixer = mixer;
986 static int scarlett2_update_volumes(struct usb_mixer_interface *mixer)
988 struct scarlett2_mixer_data *private = mixer->private_data;
997 err = scarlett2_usb_get_volume_status(mixer, &volume_status);
1033 struct usb_mixer_interface *mixer = elem->head.mixer;
1034 struct scarlett2_mixer_data *private = mixer->private_data;
1038 scarlett2_update_volumes(mixer);
1049 struct usb_mixer_interface *mixer = elem->head.mixer;
1050 struct scarlett2_mixer_data *private = mixer->private_data;
1055 scarlett2_update_volumes(mixer);
1066 struct usb_mixer_interface *mixer = elem->head.mixer;
1067 struct scarlett2_mixer_data *private = mixer->private_data;
1080 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_LINE_OUT_VOLUME,
1133 struct scarlett2_mixer_data *private = elem->head.mixer->private_data;
1144 struct usb_mixer_interface *mixer = elem->head.mixer;
1145 struct scarlett2_mixer_data *private = mixer->private_data;
1175 mixer, SCARLETT2_CONFIG_LINE_OUT_VOLUME,
1181 snd_ctl_notify(mixer->chip->card, SNDRV_CTL_EVENT_MASK_INFO,
1185 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_SW_HW_SWITCH,
1219 struct scarlett2_mixer_data *private = elem->head.mixer->private_data;
1230 struct usb_mixer_interface *mixer = elem->head.mixer;
1231 struct scarlett2_mixer_data *private = mixer->private_data;
1247 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_LEVEL_SWITCH,
1271 struct scarlett2_mixer_data *private = elem->head.mixer->private_data;
1282 struct usb_mixer_interface *mixer = elem->head.mixer;
1283 struct scarlett2_mixer_data *private = mixer->private_data;
1299 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_PAD_SWITCH,
1323 struct usb_mixer_interface *mixer = elem->head.mixer;
1324 struct scarlett2_mixer_data *private = mixer->private_data;
1328 scarlett2_update_volumes(mixer);
1339 struct usb_mixer_interface *mixer = elem->head.mixer;
1340 struct scarlett2_mixer_data *private = mixer->private_data;
1356 err = scarlett2_usb_set_config(mixer, SCARLETT2_CONFIG_BUTTONS,
1376 static int scarlett2_add_line_out_ctls(struct usb_mixer_interface *mixer)
1378 struct scarlett2_mixer_data *private = mixer->private_data;
1389 err = scarlett2_add_new_ctl(mixer,
1408 err = scarlett2_add_new_ctl(mixer,
1424 err = scarlett2_add_new_ctl(mixer,
1434 err = scarlett2_add_new_ctl(mixer, &scarlett2_button_ctl,
1446 static int scarlett2_add_line_in_ctls(struct usb_mixer_interface *mixer)
1448 struct scarlett2_mixer_data *private = mixer->private_data;
1456 err = scarlett2_add_new_ctl(mixer, &scarlett2_level_enum_ctl,
1465 err = scarlett2_add_new_ctl(mixer, &scarlett2_pad_ctl,
1493 struct scarlett2_mixer_data *private = elem->head.mixer->private_data;
1503 struct usb_mixer_interface *mixer = elem->head.mixer;
1504 struct scarlett2_mixer_data *private = mixer->private_data;
1520 err = scarlett2_usb_set_mix(mixer, mix_num);
1547 static int scarlett2_add_mixer_ctls(struct usb_mixer_interface *mixer)
1549 struct scarlett2_mixer_data *private = mixer->private_data;
1563 err = scarlett2_add_new_ctl(mixer, &scarlett2_mixer_ctl,
1579 struct scarlett2_mixer_data *private = elem->head.mixer->private_data;
1611 struct scarlett2_mixer_data *private = elem->head.mixer->private_data;
1621 struct usb_mixer_interface *mixer = elem->head.mixer;
1622 struct scarlett2_mixer_data *private = mixer->private_data;
1636 err = scarlett2_usb_set_mux(mixer);
1653 static int scarlett2_add_mux_enums(struct usb_mixer_interface *mixer)
1655 struct scarlett2_mixer_data *private = mixer->private_data;
1672 err = scarlett2_add_new_ctl(mixer,
1705 err = scarlett2_usb_get_meter_levels(elem->head.mixer, meter_levels);
1723 static int scarlett2_add_meter_ctl(struct usb_mixer_interface *mixer)
1725 return scarlett2_add_new_ctl(mixer, &scarlett2_meter_ctl,
1732 static void scarlett2_private_free(struct usb_mixer_interface *mixer)
1734 struct scarlett2_mixer_data *private = mixer->private_data;
1738 mixer->private_data = NULL;
1741 static void scarlett2_private_suspend(struct usb_mixer_interface *mixer)
1743 struct scarlett2_mixer_data *private = mixer->private_data;
1746 scarlett2_config_save(private->mixer);
1817 static int scarlett2_init_private(struct usb_mixer_interface *mixer,
1832 private->mixer = mixer;
1833 mixer->private_data = private;
1834 mixer->private_free = scarlett2_private_free;
1835 mixer->private_suspend = scarlett2_private_suspend;
1841 return scarlett2_usb(mixer, SCARLETT2_USB_INIT_SEQ, NULL, 0, NULL, 0);
1845 static int scarlett2_read_configs(struct usb_mixer_interface *mixer)
1847 struct scarlett2_mixer_data *private = mixer->private_data;
1859 mixer,
1871 mixer,
1881 err = scarlett2_usb_get_volume_status(mixer, &volume_status);
1912 struct usb_mixer_interface *mixer)
1914 struct scarlett2_mixer_data *private = mixer->private_data;
1922 snd_ctl_notify(mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE,
1928 snd_ctl_notify(mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE,
1935 struct usb_mixer_interface *mixer)
1937 struct scarlett2_mixer_data *private = mixer->private_data;
1943 snd_ctl_notify(mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE,
1950 struct usb_mixer_interface *mixer = urb->context;
1961 scarlett2_mixer_interrupt_vol_change(mixer);
1963 scarlett2_mixer_interrupt_button_change(mixer);
1965 usb_audio_err(mixer->chip,
1966 "scarlett mixer interrupt length %d\n", len);
1973 urb->dev = mixer->chip->dev;
1978 static int scarlett2_mixer_status_create(struct usb_mixer_interface *mixer)
1980 struct usb_device *dev = mixer->chip->dev;
1985 if (mixer->urb) {
1986 usb_audio_err(mixer->chip,
1987 "%s: mixer urb already in use!\n", __func__);
1994 mixer->urb = usb_alloc_urb(0, GFP_KERNEL);
1995 if (!mixer->urb)
2002 usb_fill_int_urb(mixer->urb, dev, pipe,
2004 scarlett2_mixer_interrupt, mixer,
2007 return usb_submit_urb(mixer->urb, GFP_KERNEL);
2010 static int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer,
2016 err = scarlett2_init_private(mixer, info);
2021 err = scarlett2_read_configs(mixer);
2026 err = scarlett2_add_line_out_ctls(mixer);
2031 err = scarlett2_add_line_in_ctls(mixer);
2035 /* Create the input, output, and mixer mux input selections */
2036 err = scarlett2_add_mux_enums(mixer);
2040 /* Create the matrix mixer controls */
2041 err = scarlett2_add_mixer_ctls(mixer);
2046 err = scarlett2_add_meter_ctl(mixer);
2052 err = scarlett2_mixer_status_create(mixer);
2060 int snd_scarlett_gen2_init(struct usb_mixer_interface *mixer)
2062 struct snd_usb_audio *chip = mixer->chip;
2067 if (!mixer->protocol)
2099 err = snd_scarlett_gen2_controls_create(mixer, info);
2101 usb_audio_err(mixer->chip,