|
@@ -126,7 +126,6 @@ struct snd_usb_midi {
|
|
|
struct snd_usb_midi_in_endpoint *in;
|
|
|
} endpoints[MIDI_MAX_ENDPOINTS];
|
|
|
unsigned long input_triggered;
|
|
|
- bool autopm_reference;
|
|
|
unsigned int opened[2];
|
|
|
unsigned char disconnected;
|
|
|
unsigned char input_running;
|
|
@@ -1040,7 +1039,6 @@ static int substream_open(struct snd_rawmidi_substream *substream, int dir,
|
|
|
{
|
|
|
struct snd_usb_midi* umidi = substream->rmidi->private_data;
|
|
|
struct snd_kcontrol *ctl;
|
|
|
- int err;
|
|
|
|
|
|
down_read(&umidi->disc_rwsem);
|
|
|
if (umidi->disconnected) {
|
|
@@ -1051,13 +1049,6 @@ static int substream_open(struct snd_rawmidi_substream *substream, int dir,
|
|
|
mutex_lock(&umidi->mutex);
|
|
|
if (open) {
|
|
|
if (!umidi->opened[0] && !umidi->opened[1]) {
|
|
|
- err = usb_autopm_get_interface(umidi->iface);
|
|
|
- umidi->autopm_reference = err >= 0;
|
|
|
- if (err < 0 && err != -EACCES) {
|
|
|
- mutex_unlock(&umidi->mutex);
|
|
|
- up_read(&umidi->disc_rwsem);
|
|
|
- return -EIO;
|
|
|
- }
|
|
|
if (umidi->roland_load_ctl) {
|
|
|
ctl = umidi->roland_load_ctl;
|
|
|
ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
|
|
@@ -1080,8 +1071,6 @@ static int substream_open(struct snd_rawmidi_substream *substream, int dir,
|
|
|
snd_ctl_notify(umidi->card,
|
|
|
SNDRV_CTL_EVENT_MASK_INFO, &ctl->id);
|
|
|
}
|
|
|
- if (umidi->autopm_reference)
|
|
|
- usb_autopm_put_interface(umidi->iface);
|
|
|
}
|
|
|
}
|
|
|
mutex_unlock(&umidi->mutex);
|
|
@@ -2258,6 +2247,8 @@ int snd_usbmidi_create(struct snd_card *card,
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
+ usb_autopm_get_interface_no_resume(umidi->iface);
|
|
|
+
|
|
|
list_add_tail(&umidi->list, midi_list);
|
|
|
return 0;
|
|
|
}
|