diff options
| author | Takashi Iwai <tiwai@suse.de> | 2011-03-18 07:39:08 +0100 | 
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2011-03-18 07:39:08 +0100 | 
| commit | d351cf4603edb2a5bfa9a48d06c425511c63f2a3 (patch) | |
| tree | b03ea3cfd3ca3974237563cf87328386c3d49ff1 /sound/usb/midi.c | |
| parent | 433e8327caf9f7c0432b2f2f6684a5b79cfe18e9 (diff) | |
| parent | 4a122c10fbfe9020df469f0f669da129c5757671 (diff) | |
| download | olio-linux-3.10-d351cf4603edb2a5bfa9a48d06c425511c63f2a3.tar.xz olio-linux-3.10-d351cf4603edb2a5bfa9a48d06c425511c63f2a3.zip  | |
Merge branch 'topic/misc' into for-linus
Diffstat (limited to 'sound/usb/midi.c')
| -rw-r--r-- | sound/usb/midi.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/sound/usb/midi.c b/sound/usb/midi.c index db2dc5ffe6d..b4b39c0b6c9 100644 --- a/sound/usb/midi.c +++ b/sound/usb/midi.c @@ -54,6 +54,7 @@  #include <sound/asequencer.h>  #include "usbaudio.h"  #include "midi.h" +#include "power.h"  #include "helper.h"  /* @@ -1044,6 +1045,7 @@ static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream)  	struct snd_usb_midi* umidi = substream->rmidi->private_data;  	struct usbmidi_out_port* port = NULL;  	int i, j; +	int err;  	for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i)  		if (umidi->endpoints[i].out) @@ -1056,6 +1058,9 @@ static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream)  		snd_BUG();  		return -ENXIO;  	} +	err = usb_autopm_get_interface(umidi->iface); +	if (err < 0) +		return -EIO;  	substream->runtime->private_data = port;  	port->state = STATE_UNKNOWN;  	substream_open(substream, 1); @@ -1064,7 +1069,10 @@ static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream)  static int snd_usbmidi_output_close(struct snd_rawmidi_substream *substream)  { +	struct snd_usb_midi* umidi = substream->rmidi->private_data; +  	substream_open(substream, 0); +	usb_autopm_put_interface(umidi->iface);  	return 0;  }  |