+
+int snd_usb_create_mixer(snd_usb_audio_t *chip, int ctrlif)
+{
+ static snd_device_ops_t dev_ops = {
+ .dev_free = snd_usb_mixer_dev_free
+ };
+ struct usb_mixer_interface *mixer;
+ int err;
+
+ strcpy(chip->card->mixername, "USB Mixer");
+
+ mixer = kcalloc(1, sizeof(*mixer), GFP_KERNEL);
+ if (!mixer)
+ return -ENOMEM;
+ mixer->chip = chip;
+ mixer->ctrlif = ctrlif;
+#ifdef IGNORE_CTL_ERROR
+ mixer->ignore_ctl_error = 1;
+#endif
+
+ if ((err = snd_usb_mixer_controls(mixer)) < 0) {
+ snd_usb_mixer_free(mixer);
+ return err;
+ }
+
+ err = snd_device_new(chip->card, SNDRV_DEV_LOWLEVEL, mixer, &dev_ops);
+ if (err < 0) {
+ snd_usb_mixer_free(mixer);
+ return err;
+ }
+ list_add(&mixer->list, &chip->mixer_list);
+ return 0;
+}
+
+void snd_usb_mixer_disconnect(struct list_head *p)
+{
+}