|
44 | 44 | #include "usbaudio.h"
|
45 | 45 | #include "card.h"
|
46 | 46 | #include "midi.h"
|
| 47 | +#include "midi2.h" |
47 | 48 | #include "mixer.h"
|
48 | 49 | #include "proc.h"
|
49 | 50 | #include "quirks.h"
|
@@ -178,10 +179,8 @@ static int snd_usb_create_stream(struct snd_usb_audio *chip, int ctrlif, int int
|
178 | 179 | if ((altsd->bInterfaceClass == USB_CLASS_AUDIO ||
|
179 | 180 | altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC) &&
|
180 | 181 | altsd->bInterfaceSubClass == USB_SUBCLASS_MIDISTREAMING) {
|
181 |
| - int err = __snd_usbmidi_create(chip->card, iface, |
182 |
| - &chip->midi_list, NULL, |
183 |
| - chip->usb_id, |
184 |
| - &chip->num_rawmidis); |
| 182 | + int err = snd_usb_midi_v2_create(chip, iface, NULL, |
| 183 | + chip->usb_id); |
185 | 184 | if (err < 0) {
|
186 | 185 | dev_err(&dev->dev,
|
187 | 186 | "%u:%d: cannot create sequencer device\n",
|
@@ -486,6 +485,7 @@ static void snd_usb_audio_free(struct snd_card *card)
|
486 | 485 | struct snd_usb_audio *chip = card->private_data;
|
487 | 486 |
|
488 | 487 | snd_usb_endpoint_free_all(chip);
|
| 488 | + snd_usb_midi_v2_free_all(chip); |
489 | 489 |
|
490 | 490 | mutex_destroy(&chip->mutex);
|
491 | 491 | if (!atomic_read(&chip->shutdown))
|
@@ -645,6 +645,7 @@ static int snd_usb_audio_create(struct usb_interface *intf,
|
645 | 645 | INIT_LIST_HEAD(&chip->iface_ref_list);
|
646 | 646 | INIT_LIST_HEAD(&chip->clock_ref_list);
|
647 | 647 | INIT_LIST_HEAD(&chip->midi_list);
|
| 648 | + INIT_LIST_HEAD(&chip->midi_v2_list); |
648 | 649 | INIT_LIST_HEAD(&chip->mixer_list);
|
649 | 650 |
|
650 | 651 | if (quirk_flags[idx])
|
@@ -969,6 +970,7 @@ static void usb_audio_disconnect(struct usb_interface *intf)
|
969 | 970 | list_for_each(p, &chip->midi_list) {
|
970 | 971 | snd_usbmidi_disconnect(p);
|
971 | 972 | }
|
| 973 | + snd_usb_midi_v2_disconnect_all(chip); |
972 | 974 | /*
|
973 | 975 | * Nice to check quirk && quirk->shares_media_device and
|
974 | 976 | * then call the snd_media_device_delete(). Don't have
|
@@ -1080,6 +1082,7 @@ static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message)
|
1080 | 1082 | snd_usbmidi_suspend(p);
|
1081 | 1083 | list_for_each_entry(mixer, &chip->mixer_list, list)
|
1082 | 1084 | snd_usb_mixer_suspend(mixer);
|
| 1085 | + snd_usb_midi_v2_suspend_all(chip); |
1083 | 1086 | }
|
1084 | 1087 |
|
1085 | 1088 | if (!PMSG_IS_AUTO(message) && !chip->system_suspend) {
|
@@ -1125,6 +1128,8 @@ static int usb_audio_resume(struct usb_interface *intf)
|
1125 | 1128 | snd_usbmidi_resume(p);
|
1126 | 1129 | }
|
1127 | 1130 |
|
| 1131 | + snd_usb_midi_v2_resume_all(chip); |
| 1132 | + |
1128 | 1133 | out:
|
1129 | 1134 | if (chip->num_suspended_intf == chip->system_suspend) {
|
1130 | 1135 | snd_power_change_state(chip->card, SNDRV_CTL_POWER_D0);
|
|
0 commit comments